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


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ファイルに入れると、ブート時に実行されます。
ディアマント

ノードプロセスを開始し、phpなどを開始する単純なスクリプト...
yarek

私は30行ではなく9行を数えます。それらはコメントであり、シェルスクリプト(およびSSHスクリプト)ではありません。
ウルテル

これらはLSBヘッダー(wiki.debian.org/LSBInitScriptsを参照)であり、LSB initスクリプトボイラープレートは70行の北です(github.com/fhd/init-script-template/blob/master/templateなどを参照)。手動で実行する単一のコマンドを/ etc内のファイルを介してコンピューターがブート時に処理するようにしたい場合、これは非常に手の込んだ式のように思えます!
-kristopolous

回答:


29

スクリプトが「単なるスクリプト」であり、デーモンを起動しない場合は、(/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
    

編集1:コメントを読んでください:スクリプトが常に起動するデーモンを起動する場合は、rc.localまたはの使用をお勧めせcrontabず、代わりに適切な(または複数の)init.dスクリプトを記述します。このようにして、あなた/システムはデーモンをきれいに再起動/リロード/開始/停止することができます。

編集2:あなたはそれをクレイジーと呼びますが、LSB tagsいくつかの値を提供します。起動プロセスを高速化するために並行して。」詳細については、Debian wikiをご覧ください。

(ちなみに、これは警告です。実際、それはあなた次第です。これをどのように、どのように処理するかです。)


私はcrontabバージョンが好きです。しかし、@ rebootはdebianでは動作しないと思います。
ヤレック

@yarek:これは自分でこれを使用して動作します(スクリプトの場合は、単なるスクリプトです)。
gf_

2
それは動作しますが、私はそれが唯一のrootユーザのためだと思うので、あなたがしなければならない@reboot root /usr/local/bin/your-script.sh
Froggiz

ところで私はdebianについて話していました!
Froggiz

私はまだかなり混乱しています:サーバーを再起動すると、cronはrootとしてセッションを開かずにanyscriptを実行できますか?
ヤレック


0

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.