Teamspeak サーバー用の簡単な upstart スクリプトを作成しようとしていますが、うまく動作しません。
私が言ったらinitctl 開始実行はされるが、終了せず、メッセージも出力されない。同じことが停止。
何か間違ったことをしていないか確認するために、cron スクリプトをコピーして実行してみましたが、同じ結果になります。
ここで何を間違えているのでしょうか?
アップデート:
TS3 用のスクリプトは次のとおりです。
# myservice - myservice job file
description "my service description"
author "Me <[email protected]>"
# Stanzas
#
# Stanzas control when and how a process is started and stopped
# See a list of stanzas here: http://upstart.ubuntu.com/wiki/Stanzas#respawn
# When to start the service
start on runlevel [2345]
# When to stop the service
stop on runlevel [016]
# Automatically restart process if crashed
respawn
# Essentially lets upstart know the process will detach itself to the background
expect fork
# Start the process
script
emit going into TS3 dir
chdir /home/danizmax/teamspeak3-server_linux-x86/
emit starting TS3
exec su -c "/home/danizmax/teamspeak3-server_linux-x86/ts3server_startscript.sh start" danizmax &
emit done
end script
最も単純なスクリプトでも試してみましたが、これも機能しません。
description "regular background program processing daemon"
start on runlevel [2345]
stop on runlevel [!2345]
expect fork
respawn
exec echo example
console output
助けてくれてありがとう。
答え1
あなたの新進気鋭の仕事には、私を困惑させるような奇妙な点がいくつもあります。
1) 放出は私が知っているプログラムではないので、システム パスに追加していない限り、おそらくエラーの原因になります。 'echo' を意味していましたか? これも役に立たないかもしれません。システム コンソールに送られるため、表示されない可能性があります。
2) 「emit」スタンザが機能すると仮定すると、「forkを期待する」と言っているが、実際にはforkする2回一度は「スクリプト」用、そして Teamspeak スクリプトがバックグラウンドにフォークするときにもう一度実行されます。
3) スクリプトを実行するには「su」を使用しますが、ほとんどの場合、start-stop-daemon の方が簡単です。
11.10では、スクリプトを実行する必要はありませんchdir
。upstartのバージョンが何であれ、それが追加されたかどうかはわかりません。man 5 init
単語を確認してください。chdir
start on runlevel [2345]
stop on runlevel [^2345]
respawn
chdir /home/danizmax/teamspeak-server
expect fork
exec start-stop-daemon --start --user danizmax --group danizmax --exec /home/danizmax/teamspeak3-server_linux-x86/ts3server_startscript.sh -- start
また、エラーは /var/log/syslog に報告される可能性があります。次のコマンドを実行すると、エラーレベルをかなり上げることができます。
initctl log-priority info
man initctl
ログ レベルをさらに増やします。