systemd を使用したシンプルなサービスの設定

systemd を使用したシンプルなサービスの設定

私たちは、プロジェクトを構築しているリモートエージェントとの継続的な統合のためにBambooサーバーを使用しています。これらのエージェントは、簡単なシェルスクリプトで起動できます(問題なく動作します)。しかし、私はそれをさらに進めて、systemd起動後にエージェントを自動起動し、コマンドで起動/停止できるようにするユニットにしようと思いましたsystemctl。それで、これが私が試したことです。

[Unit]
Description=Atlassian Bamboo Agent
After=syslog.target network.target

[Service]
Type=forking
User=shub
Group=shub
ExecStart=/home/shub/bamboo-agent-home/bin/bamboo-agent.sh start
ExecStop=/home/shub/bamboo-agent-home/bin/bamboo-agent.sh stop

[Install]
WantedBy=multi-user.target

私がやったことよりsystemctl daemon-reload。問題は、エージェントが再起動後に起動せず、また奇妙な動作をしていることです(サービスが時々再起動したり、 後に適切に起動しないなどsystemctl start)。では、何が間違っているのでしょうか?Typeに変更することを考えましたsimpleが、エージェントをバックグラウンド サービスとして実行したいのです(そして、スクリプト自体は実行後にバックグラウンドでエージェントを実行します)。

答え1

複数の質問をいただきました。「カスタム systemd サービスが起動時に開始されないのはなぜですか?」という質問にお答えします。

答えは、あなたがまだ知らないからです有効を実行するとsystemctl enable my-service-name[Install]ユニット ファイル内のブロックが実行されます。

この場合、 に到達する一環として、systemd にサービスを起動するように指示しましたmulti-user.target

コマンドを実行するenableとシンボリックリンクが作成され/etc/systemd/system/multi-user.target.wants/、そのシンボリックリンクの存在が実際systemdに起動時にサービスを開始するように指示することになります。

「動作がおかしい」というコメントを別の質問に変えて、何が起こっているのかについて systemd ジャーナルから詳細を引用するなど、より詳しい情報を提供することをお勧めします。(journalctl出力を確認してください)

関連情報