systemdを使用してUbuntu 17.04でbashサービスを作成する

systemdを使用してUbuntu 17.04でbashサービスを作成する


私は走っていますUbuntu17.0464ビット、誰かがログインして手動で起動せずにコンピュータが起動した後に起動するように同期と他の2つのアプリケーションを設定したいと思います。

すべてのアプリケーションを次のディレクトリにインストールしました。

/home/msa/syncthing/
/home/msa/minecraft-server/
/home/msa/test/

アプリケーションごとに起動コマンドを使用してbash起動スクリプトを作成しました。

/home/msa/syncthing/start.sh
/home/msa/minecraft-server/start.sh
/home/msa/test/start.sh

これ物事を同期スタートアップファイルには次の内容が含まれています。

./syncthing

これMinecraftサーバースタートアップファイルには次の内容が含まれています。

java -Xms1024M -Xmx2048M -jar minecraft_server.jar nogui

これテストスタートアップファイルには次の内容が含まれています。

java -Xms1024M -Xmx2048M -jar test.jar

このバージョンのUbuntuを使って見つけました。システム、という名前のファイルを作成しました。同期サービス存在する/etc/systemd/system/以下が含まれます:

[Unit]
Description = Syncthing service description (todo)
After = network.target

[Service]
ExecStart = /home/msa/syncthing/start.sh

[Install]
WantedBy = multi-user.target

その後、次のコマンドを実行しました。

systemctl enable syncthing.service

シンボリックリンクが正常に作成されたことを返すので、サービスを開始しました。

systemctl start syncthing.service

動作しません。私は次のコマンドを実行しました。

systemctl status syncthing

そしてこれを得ました:

root@MinecraftServerAdvanced:/etc/systemd/system# systemctl status syncthing.service
● syncthing.service - Syncthing service description (todo)
Loaded: loaded (/etc/systemd/system/syncthing.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sat 2017-05-06 19:47:54 CEST; 4s ago
Process: 789 ExecStart=/home/msa/syncthing/start.sh (code=exited, status=203/EXEC)
Main PID: 789 (code=exited, status=203/EXEC)

kvě 06 19:47:54 MinecraftServerAdvanced systemd[1]: Started Syncthing service description (todo).
kvě 06 19:47:54 MinecraftServerAdvanced systemd[1]: syncthing.service: Main process exited, code=exited, status=203/E
kvě 06 19:47:54 MinecraftServerAdvanced systemd[1]: syncthing.service: Unit entered failed state.
kvě 06 19:47:54 MinecraftServerAdvanced systemd[1]: syncthing.service: Failed with result 'exit-code'.
root@MinecraftServerAdvanced:/etc/systemd/system#

私は何が間違っていましたか?

答え1

正しいシステム単位タイプを指定する必要があります。このマンページを見てください。1]とArchlinux Wikiの簡単な説明[2]。私はこのタイプのフォークがあなたの設定に適していると思います。ここで説明されているように、事前にシェルを指定する必要があります。サム]。

あなたの質問に関係なく、この設定でシェルスクリプトを実行する理由はありません。で完全な実行パスを指定するだけですExecStart

関連情報