web-dev-qa-db-ja.com

systemdを使用してUbuntu17.04でbashサービスを作成する


実行中ですbuntu 17.04 64ビットで、誰かがログインして手動で起動しなくても、マシンの起動後にsyncthingとさらに2つのアプリケーションを起動するように設定したいと思います。

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

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

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

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

syncthing開始ファイルには次のものが含まれています。

./syncthing

minecraft-server開始ファイルには次のものが含まれています。

Java -Xms1024M -Xmx2048M -jar minecraft_server.jar nogui

test開始ファイルには次のものが含まれています。

Java -Xms1024M -Xmx2048M -jar test.jar

このバージョンのUbuntuはsystemdを使用しており、syncthing.serviceという名前のファイルを/ 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#

私は何が間違っているのですか?

2
user3593475

適切なsystemdユニットタイプを指定する必要があります。このマンページ[ 1 ]とArchlinux Wikiの簡単な説明[ 2 ]をご覧ください。私は、フォークタイプがあなたのセットアップのために働くだろうと思います。事前にシェルを指定する必要があります。ここで説明されているように:[]。

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

0