web-dev-qa-db-ja.com

systemdサービスを停止する方法

Flume のsystemdサービスファイルを作成しようとしていますが、次の内容で/etc/systemd/system/flume-ng.serviceを作成しました

[Unit]
Description=Apache Flume

[Service]
Environment=FLUME_CLASSPATH=/opt/flume/current/lib/
ExecStart=/usr/bin/Nohup /usr/bin/flume-ng agent -c /etc/flume-ng/conf -f /etc/flume-ng/conf/flume.conf --name a1 &

[Install]
WantedBy=multi-user.target

flumeサービスを開始しますが、サービスとして停止するにはどうすればよいですか?

この場合、私はPIDで殺さなければなりませんでした。

ありがとう

6
roy

サービスを停止するために使用するコマンドを使用して、[Service]セクションにExecStopオプションを入力する必要があります。

何かのようなもの:

[Service]
Environment=FLUME_CLASSPATH=/opt/flume/current/lib/
ExecStart=/usr/bin/Nohup /usr/bin/flume-ng agent -c /etc/flume-ng/conf -f /etc/flume-ng/conf/flume.conf --name a1 &
ExecStop=/usr/bin/flume-ng agent stop

または、flume-ngを停止するコマンドが何であれ

次に、systemctl stop flume-ngを使用してサービスを停止できます。

サービスの制御に使用できるオプションの完全なセットについては、 https://www.freedesktop.org/software/systemd/man/systemd.service.html のマニュアルをお読みください。

7
Munir

systemctl stop flume-ng.serviceを実行するだけです。実行されると、デフォルトのアクションはSIGTERMをメインプロセスに送信し、構成可能な時間まで待機して、プロセスが終了したかどうかを確認します。プロセスが終了しない場合、systemdはジョブを実行するSIGKILLシグナルを送信します。メインプロセスが他のプロセスを分岐させた場合、それらはすべて同じcgroupに存在するため、systemdもそれらを削除します。

サービスをシャットダウンする別の方法がない限り、ExecStop=ディレクティブを指定する必要はありません。

11
Umut