Debian:如何在启动时运行脚本而不必编写 30 行 shell 脚本?

Debian:如何在启动时运行脚本而不必编写 30 行 shell 脚本?

我有一个 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.localcrontab,而是编写一个(或多个)适当的init.d脚本。这样,您/您的系统就可以干净地重新启动/重新加载/启动/停止等守护进程。

它们LSB tags提供了一些价值:“通过记录 init.d 脚本的运行时依赖关系,可以验证当前的启动顺序,使用这些依赖关系对启动进行排序,并并行运行启动脚本以加快启动过程。”有关更多详细信息,请转到Debian 维基

顺便说一下,缺少的标题:这是一个警告,所以实际上,如何以及如何处理它取决于你。

答案2

主管也是一个选项。你需要再写几行代码来启动你的 node.js 和 PHP 东西,但代码会少一些。

答案3

您可以使用监控为此,只需编写一些 monit 定义,它就会为您启动守护进程。但是为什么您不使用 LSB 脚本的正确方法呢?编写它并不难(您只需编写一次),而且它是实现此目的最干净、最有价值的方法。

相关内容