Upstartサービスが完全に開始または停止することはありません


11

私はteamspeakサーバー用のシンプルなスタートアップスクリプトを作成しようとしていますが、それを機能させることはできません。

initctl startと言うと、単に実行するだけで終了することはなく、メッセージを出力することさえありません。停止についても同様です。

間違ったことをしていないことを確認するために、cronスクリプトをコピーして実行しようとしましたが、同じことが起こります。

ここで何が間違っていますか?

更新:

TS3のスクリプトは次のとおりです。

# myservice - myservice job file
description "my service description"
author "Me <myself@i.com>"

# 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

ご協力ありがとうございました。


実行しようとしているupstartジョブを表示して、デバッグできるようにしますか?それを見ずにぶら下がっている理由を知るのは難しい。
slangasek

cronスクリプトをコピーして実行しようとしましたが、同じことが起こります。停止してシェルに戻ることはありません
danizmax

私たちはまだあなたのスタートアップスクリプトを見る必要があります。それがなければ、私たちにできることは何もありません。投稿するか、リンクを提供してください。
hggdh

スクリプトを見ずに、私にできることは推測だけです。スクリプトは、upstartによってrootとして実行されることを気にしますか?ルートのPATHは異なります。スクリプトがルートのPATHにないアプリケーションを使用する場合は、フルパスを指定する必要があります。スクリプトに戻らないプログラムがありますか?
ウォルチネーター

回答:


1

あなたのスタートアップの仕事には、頭を悩ませる奇妙なことがたくさんあります。

1)emitは私が知っているプログラムではないので、システムパスに追加していない限り、エラーを引き起こしている可能性があります。「エコー」という意味ですか?表示されない可能性があるシステムコンソールに移動するため、これも役に立たない場合があります。

2) 'emit'スタンザが機能すると仮定すると、 'expect fork'と言いますが、実際には2回 fork ます。「スクリプト」のために一度、そしてチームピークのスクリプトがバックグラウンド自体に分岐するときに再び。

3)スクリプトを実行するには「su」を使用しますが、ほとんどの場合、start-stop-daemonは実際には簡単です。

11.10では、chdirinスクリプトを実行する必要はありません。使用しているバージョンの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 より多くのログレベル。


OPではありませんが、彼は(danimaz)suを使用して、rootになるのではなく、ユーザーとしてサーバーを実行しています。
ハビエルリベラ

なんてこった、下部のスクロールバーを見逃した..ユーザー名を隠すために完全に揃えられた。:-P
SpamapS
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.