我有一个 Debian 服务器,我只需要在启动时运行一个脚本。
我读到过: https://www.debian-administration.org/article/28/Making_scripts_run_at_boot_time_with_Debian
我现在得到:insserv:警告:脚本'缺少 LSB 标签和覆盖
所以现在看来我必须添加:
### BEGIN INIT INFO
# Provides: scriptname
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
现在看起来很疯狂:在启动时运行一个程序就需要 30 行脚本。
是否有一种工具可以简单地做到这一点?
问候
答案1
考虑使用/etc/rc.local
(以 root 身份执行)或crontab
(以您选择的用户身份执行)。
两个例子:
/etc/rc.local
#!/bin/sh -e #(Multiple lines of comments removed.) /usr/local/bin/your-script.sh exit 0
crontab
(例如,通过 编辑crontab -e
)#(Multiple lines of comments removed.) @reboot /usr/local/bin/your-script.sh
如果您的脚本需要在后台持续运行,我建议不要使用rc.local
或crontab
,而是编写一个(或多个)适当的init.d
脚本。这样,您/您的系统就可以干净地重新启动/重新加载/启动/停止等守护进程。
它们LSB tags
提供了一些价值:“通过记录 init.d 脚本的运行时依赖关系,可以验证当前的启动顺序,使用这些依赖关系对启动进行排序,并并行运行启动脚本以加快启动过程。”有关更多详细信息,请转到Debian 维基。
顺便说一下,缺少的标题:这是一个警告,所以实际上,如何以及如何处理它取决于你。
答案2
主管也是一个选项。你需要再写几行代码来启动你的 node.js 和 PHP 东西,但代码会少一些。
答案3
您可以使用监控为此,只需编写一些 monit 定义,它就会为您启动守护进程。但是为什么您不使用 LSB 脚本的正确方法呢?编写它并不难(您只需编写一次),而且它是实现此目的最干净、最有价值的方法。