Ubuntu Upstartでサービスを作成する方法


21

java -jar abc.jarターミナルに入力することで実行できるJava実行可能プログラムがあります。サービスとして実行するにはどうすればよいですか?と入力するなどして、サービスとして実行したいservice abc start


より完全な答えはこちら:unix.stackexchange.com/questions/1924/…基本的に、Ubuntuでは、サービスを開始/停止/再起動できる/etc/init.dのスクリプトを作成できます。
ミスターエド

回答:


41

14.04にいることを確認してください。Ubuntu 16.04(以降)はUpstartではなくsystemdを使用します。

Upstartスクリプトは、/etc/init/末尾がで終わるスクリプトファイルです.conf

2つのセクションが必要です。1つはいつ開始するかを示すセクション、もう1つは実行するコマンドを含むセクションです。

サンプルから開始する最も簡単なスクリプトは次のとおりです。

# myprogram.conf
start on filesystem
exec /usr/bin/java -jar /path_to/program

の下にルートとして作成され/etc/init/myprogram.confます。

スクリプトで複数のコマンドラインが必要な場合scriptは、exec行の代わりにセクションを使用します。

# myprogram.conf
start on filesystem
script
    /usr/bin/java -jar /path_to/program
    echo "Another command"
end script

サービスのbash補完を有効にするには、/etc/init.dフォルダーにシンボリックリンクを追加します。

sudo ln -s /etc/init/myprogram.conf /etc/init.d/myprogram

次に、開始して停止します。

sudo service myprogram start

upstart cookbookによると、実行するpre-start/ post-startおよびpre-stop/ post-stopコマンドを作成できます。

さらに、プロセスが実行されているかどうかを確認する必要があると読みました。この質問を確認し、pre-startセクションを使用してください。


1
たぶんあなたはそれを実行可能にする必要がありますsudo chmod +x /etc/init.d/myprogram。注意:回答した方法はUbuntu 16.04では機能しません!
juliocesar

2
@juliocesar 16.04はUpstartではなくsystemdを使用します。
ラエルグゲルミンクーニャ

start on必要なスタンザではありません。ここで読むことができるようにこのようなジョブは管理者のみが制御できます。
サブ

@SuB yeap、しかしその後、ジョブは自動的に開始されず、質問の作成者がサービスのように振る舞う、つまり自動的に開始する何かを望んでいることは明らかでした。
ラエルグゲルミンクーニャ

うん。知っている。コメントを追加して回答を完了してください。
サブ

0

新興企業を作成する必要があります。 http://upstart.ubuntu.com/getting-started.html

Upstartは、古き良きSysV initスクリプトと比較して(IMHO)災害です。Upstartは、追加された作業にほとんど利点がなく、はるかに労力がかかります。そうは言っても、私はいくつかの新興のディフェンダーがそこにいるのではないかと疑っています。


1
これは、/ etc / init / yourservice.confにあるファイルで、いつ開始するかを示す行と、execコマンドの行が含まれています。Fedoraはupstartも使用します。さらに、Debianでさえ開始スキーマをSystemDに変更しています。これは将来Ubuntuスキーマになります。
ラエルグゲルミンクーニャ14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.