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


20

我有一个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行脚本一样,只是在启动时运行程序。

有没有一种工具可以做到这一点呢?

问候


它是什么样的脚本?您是否尝试从/etc/rc.local运行它?您可以将脚本的路径放在rc.local文件中,它将在启动时执行。
Diamant 2015年

一个简单的脚本,它可以启动节点进程,启动php等...
yarek 2015年

我数了9行,而不是30行。它们是注释,不是shell脚本(也不是SSH脚本)。
wurtel

它们是LSB头(请参见wiki.debian.org/LSBInitScripts),而LSB初始化脚本样板位于70行以北(请参见github.com/fhd/init-script-template/blob/master/template之类的东西)。如果您希望在启动时由计算机通过/ etc中的某个文件来手动处理单个命令,这似乎是一个非常复杂的仪式!
kristopolous

Answers:


29

如果您的脚本是“只是脚本”,并且没有启动守护程序,请考虑使用/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
    

编辑1:只需阅读您的评论:如果您的脚本启动了应该一直运行的守护程序,我建议您不要使用rc.localcrontab,而应编写适当的(或多个)init.d脚本。这样,您/您的系统就可以干净地重新启动/重新加载/启动/停止等守护程序。

编辑2:您称其为疯狂,但LSB tags提供了一些价值:“通过记录init.d脚本的运行时依赖关系,可以验证当前的引导顺序,使用这些依赖关系对引导进行排序,并在其中运行引导脚本同时加快启动过程。” 有关更多详细信息,请访问Debian Wiki

(顺便说一句:这是一个警告,因此,实际上,这取决于您,如何以及如何处理。)


我喜欢crontab版本..但我认为@reboot在debian上不起作用!
yarek

@yarek:它可以自己使用(对于脚本来说,只是脚本)。
gf_

2
它有效,但是我认为它仅适用于root用户,因此您必须做@reboot root /usr/local/bin/your-script.sh
Froggiz 2015年

顺便说一句,我在谈论Debian!
Froggiz

我的确仍然很困惑:cron是否在服务器重新启动时启用运行任何脚本,而不是以root身份打开会话。
yarek

0

主管也是一种选择。您将再次写一些行以启动您的node.js和PHP东西,但是它们会更少。


0

您可以为此使用monitd,只需编写一些monit定义,它将为您启动守护程序。但是,为什么不对LSB脚本使用正确的方法呢?编写它并不难(您只需编写一次),这是实现这一目标的最简洁,最有价值的方法。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.