コマンドを使用して生成されたプロセスのサービスを停止するためにsystemdを使用することはできません。

コマンドを使用して生成されたプロセスのサービスを停止するためにsystemdを使用することはできません。

2つの異なる方法でサービスを開始しました。

  1. 一般コマンドの使用
root@ip-172-31-35-92:/#/usr/bin/mongod --config /etc/mongod_27018.conf &
  1. システムサービスを使用してください。
service mongod_27018 start

いずれにしてもサービスを開始すると、別のPIDが生成されます。

問題の説明

コマンドを使用してサービスを開始すると、systemdの使用を中止することはできませんservice mongod_27018 stop。 systemctl start/stop/restartを使用するには、プロセスIDを手動で終了する必要があります。kill -9 $PID

コマンドで開始したサービスでも停止する方法はありますか?

単位ファイルの内容

[Unit]
Description=MongoDB Database Server
Documentation=https://docs.mongodb.org/manual
After=network-online.target
Wants=network-online.target

[Service]
User=mongodb
Group=mongodb
EnvironmentFile=-/etc/default/mongod
ExecStart=/usr/bin/mongod --config /etc/mongod_27018.conf
PIDFile=/var/run/mongodb/mongod_27018.pid
LimitFSIZE=infinity
LimitCPU=infinity
LimitAS=infinity
LimitNOFILE=64000
LimitNPROC=64000
LimitMEMLOCK=infinity
TasksMax=infinity
TasksAccounting=false


[Install]
WantedBy=multi-user.target

ベストアンサー1

このコマンドはservice mongod_27018 startプロセス・マネージャーを使用して、プロセスがsystemd使用可能かどうかを管理します。sysvinitプロセスマネージャを使用すると、プロセスを簡単に起動/停止し、状態を確認できます。

プロセスマネージャは、直接管理しているプロセスのみを追跡します。コマンドを実行すると、/usr/bin/mongod --config /etc/mongod_27018.conf &プロセスマネージャはプロセストレースについて知らないため、管理するにはプロセスに手動でシグナルを送信する必要があります。

手動で実行されるコマンドを管理する必要がある場合は、プロセスID(PID)を使用してそれらを追跡する方法が必要です。例のコマンドは、プロセスのPIDを出力する必要があります。あるいは、特殊bash変数を使用して$!最後のコマンドのPIDを取得することもできます。

おすすめ記事