명령을 사용하여 생성된 프로세스에 대한 서비스를 중지하기 위해 systemd를 사용할 수 없습니다.

명령을 사용하여 생성된 프로세스에 대한 서비스를 중지하기 위해 systemd를 사용할 수 없습니다.

두 가지 다른 방법으로 서비스를 시작했습니다.

  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를 가져올 수 있습니다.

관련 정보