スタートアップスクリプトを作成したい。助けとアドバイスが必要


13

Atm、私は仕事をランダムに開始および停止する必要があります(頭の中にもっと良い言葉がないため)。入力java -jar foo.jarして開始し、停止するにはpidを見つけて殺します。削除しても、データの損失や破損などは発生しません。参考までに。最初のコマンドは特定のディレクトリから実行する必要があるため、これらの両方のステップを実行するのは面倒です/usr/share/jetty(つまり、killはどこからでも実行できます)。

だから私はの行に何かを考えていました

service foo startおよびservice foo stopサービスの起動と停止します。それは可能ですか、さらに重要なことは正しいですか?他の解決策はありますか?

ありがとう。

回答:


13

ええ、Upstartはこのための非常に良いオプションです。新しいファイルを作成するだけです:

sudoedit /etc/init/my-jetty-jar.conf

ファイル名は好きなものに変更できますが、その中にこれを貼り付けることができます:

description     "Run my jetty jar"

# no start option as you might not want it to auto-start
# This might not be supported - you might need a: start on runlevel [3]
stop on runlevel [!2345]

# if you want it to automatically restart if it crashes, leave the next line in
respawn

script
    cd /usr/share/jetty
    su -c "/usb/bin/java -jar /path/to/foo.jar" nobody
end script

それについてのいくつかのメモ、私はsuセキュリティのためにだれにもしません。su別のアカウントに入れる必要があるかもしれませんが、おそらくとして実行することはお勧めできませんroot


変更を有効にするために再起動する必要がありますか?update-rc.d動作しませんでした
theTuxRacer

update-rc.dスタートアップの仕事は必要ありません。
オリ

upstartはinotifyを使用して/ etc / initを監視するため、通常、その下のファイルに対するすべての編集について認識しています。「my-jetty-jarを起動する」以外に何もする必要はありません。ああ、そして@Oli、あなたは間違いなく仕事を始めることができます。ランレベル[!2345]での停止は、物事を停止する悪い方法として将来フラグが立てられる場合があることに注意してください(ファイルシステムがアンマウントされる前に停止することを保証しないため)
-SpamapS

残念ながら、start.jarが別のプロセスを生成するため、Jetty 8のソリューションは(もう)動作していないようです。この問題に対処するために別の質問を作成しました:stackoverflow.com/questions/10796242/…–
Sebi

4
@Sebi expect forkscript開始する前に)そこに固執する必要があるかもしれません。
オリ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.