web-dev-qa-db-ja.com

起動時にinit.dスクリプトが実行されない

画面を使用して専用サーバーでCounter-Strikeゲームサーバーをホストしています。サーバーを起動/停止するときに実行する次のスクリプトがあります。

#! /bin/sh
# /etc/init.d/css-server
#

case "$1" in
  start)
    echo "Starting Nullus Imprimis war server..."
    screen -A -m -d -S css-war-server /home/css-servers/war-server/css/srcds_run -game cstrike +map de_dust2 +maxplayers 16 -autoupdate -port 2555 -tick 100 
    echo "Nullus Imprimis war server started"
    echo "Starting Nullus Imprimis pub server #1..."
    screen -A -m -d -S css-pub-server-1 /home/css-servers/pub-server-1/css/srcds_run -game cstrike +map de_dust2 +maxplayers 32 -autoupdate -port 2666 -tickrate 100
    echo "Nullus Imprimis pub server #1 started"
    ;;
  stop)
    echo "Stopping Nullus Imprimis war server..."
    screen -S css-war-server -X quit
    echo "Nullus Imprimis war server stopped"
    echo "Stopping Nullus Imprimis pub server #1..."
    screen -S css-pub-server-1 -X quit
    echo "Nullus Imprimis pub server #1 stopped"
    ;;
  *)
    echo "Usage: /etc/init.d/css-servers {start|stop}"
    exit 1
    ;;
esac

exit 0

私はこのスクリプト(css-serversと呼ばれる)を/etc/init.d/に入れ、システムが起動したときに実行されることを知っています。ただし、screen -lsを使用してアクティブな画面を確認すると、何も実行されていません。

Ubuntuサーバーで起動時にこれらを実行するにはどうすればよいですか?

15
Mark Twaign

/etc/init.dにスクリプトが存在するだけでは、起動時にスクリプトを実行するのに十分ではありません。

スタートアップに追加するには、Ubuntuに通知する必要があります。

Sudo update-rc.d css-servers defaults

スクリプトが適切にフォーマットされていれば、実行可能ビットが設定されていれば、次回の起動時に起動するはずです。apt-get/Software Centerからインストールしたパッケージは、このコマンドまたは同等のコマンドを自動的に実行します。通常は心配する必要があります。

すぐに開始したい場合は、直接呼び出すことができます。

Sudo service css-servers start
34
Michael Hampton

これで最初の部分は完了です。 /etc/init.dは、初期化スクリプトの実行元です。ただし、自動的には実行されません。

これらは、/etc/rc*.dディレクトリのシンボリックリンクで指定された順序で実行されます。各実行レベルには独自のディレクトリがあります。リンク名がKで始まるスクリプトは停止パラメーターで実行され、名前がSで始まるスクリプトは開始パラメーターで実行されます。慣例により、ファイル名はKまたはSで始まり、シーケンスに使用される2桁の数字が続き、/etc/init.dのスクリプトの名前で終わります。

リンクは手動で作成できますが、通常はスクリプトを使用して作成されます。汎用スクリプトupdate-rc.dはUbuntuで使用できます。コマンドman update-rc.dは、それを使用するユーザーに関するドキュメントを提供します。あなたの場合は試してください:

Sudo update-rc.d css-servers defaults

Initスクリプトを使用して開始するには、次のことを試してください。

Sudo /etc/init.d/css-servers start

通常、この方法でサーバーを起動および停止して、スクリプトが期待どおりに機能していることを確認します。次に、update-rc.dを実行して、/etc/rc.dランレベルディレクトリに追加します。

7
BillThor

起動時にサービスが開始されない理由がまったく分からない場合。ただし、サービスを手動で開始しようとすると、正常に機能しますservice <your service> start。その場合は、標準出力とエラー出力をいくつかのファイルにリダイレクトしてみてください。これは、システムの起動中に開始されない理由の手がかりを与えるかもしれません。

例えばスクリプト内

case "$1" in
  start)
    echo "Starting Service "
    <your command to start the service > /tmp/bootservice.log 2>&1
    ;;
  stop)
    echo "Stopping Service "
    <your command to start the service > /tmp/bootservice.log 2>&1
    ;;
  *)
    echo "Usage: /etc/init.d/test {start|stop}"
    exit 1
    ;;
esac

exit 0
1
Pandurang Patil

さらに、行き詰まっている人のために:シバンはinit.dスクリプトに必要です。

 #!/bin/sh
0
petersill