我对此做了很多研究,并且看到了很多关于如何做到这一点的方法。然而,这些似乎都不适合我。例如,我做了这样的事情:
〜/.config/upstart/text.config
我在上面提到的目录下创建了一个.config文件并编写了以下命令(下面的testScript.sh是我要运行的脚本):
start on startup
task
exec /path/to/testScript.sh
我尝试的另一种方法是,我在 rc.local 文件中编写了类似的内容:
sudo -H /etc/init.d/testScript.sh start
我把 testScript.sh 放在 init.d 中。这两种方法都不适合我。系统没有给我任何错误或备注。我在某个地方犯了错误还是有其他方法可以做到这一点?这样我的脚本就会在系统启动时自动执行。
答案1
为什么不直接使用 plaincron
呢?以超级用户身份编辑/etc/crontab
并添加一行
@reboot root /path/to/testScript.sh
这样应该就可以解决问题,不再有任何麻烦。 (请参阅 参考资料 了解man 5 crontab
更多cron
选项)
答案2
让我们先做一些检查,
1:检查脚本是否在操作系统上正常运行(意味着它没有出现任何错误或卡在某个地方)。
2:您需要创建一个systemd启动脚本例如。 testScript.service 并将其放入 /etc/systemd/system/ 目录中。您可以添加脚本作为以下 systemd 启动脚本的示例:
[Unit]
After=mysql.service
[Service]
ExecStart=/usr/local/bin/testScript.sh
[Install]
WantedBy=default.target
将脚本复制到/usr
路径,在重新启动系统之前,您需要使脚本可执行:
cp /path/to/testScript.sh /usr/local/bin/testScript.sh
chmod 744 /usr/local/bin/testScript.sh
3:接下来,安装systemd服务单元并启用它,以便它在启动时执行:
chmod 664 /etc/systemd/system/testScript.service
systemctl daemon-reload
systemctl enable testScript.service
Created symlink from /etc/systemd/system/default.target.wants/testScript-sp
希望这一切顺利,我已经在我的系统中进行了测试并且工作正常。您仍然可以选择将其放入 crond 中并添加行@reboot
。