web-dev-qa-db-ja.com

Debian:起動時に30行のシェルスクリプトを記述せずにスクリプトを実行する方法は?

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行のスクリプトのようです。

それを簡単に行うことができるツールはありますか?

よろしく

23
yarek

/etc/rc.local(ルートとして実行)またはcrontab(選択したユーザーとして実行)の使用を検討してください。

2つの例:

  • /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 wiki をご覧ください。

ちなみに、不足しているヘッダー:これは警告なので、実際には、これをどのようにどのように処理するかはユーザー次第です。

32
gf_

supervisord もオプションです。 node.jsとPHPものを開始するために、もう一度いくつかの行を書きますが、それらは少なくなります。

0
adamo

monitd を使用できます。monit定義を記述するだけで、デーモンが起動します。しかし、なぜLSBスクリプトで適切な方法を使用しないのですか?それを書くのはそれほど難しくはなく(あなたは一度だけ書いています)、これはこれを達成するための最もクリーンで最も価値のある方法です。

0