ubuntu启动时自动执行脚本shell?

ubuntu启动时自动执行脚本shell?

我对此做了很多研究,并且看到了很多关于如何做到这一点的方法。然而,这些似乎都不适合我。例如,我做了这样的事情:

〜/.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

相关内容