구성:
[program:aws-mysql]
command=ssh -NCf -L 13306:host1:3306 user@host2
directory=/var/www/ECAME
user=root
autorestart=true
exitcodes=0
상태:
# systemctl status supervisord.service
● supervisord.service - Process Monitoring and Control Daemon
Loaded: loaded (/usr/lib/systemd/system/supervisord.service; enabled; vendor preset: disabled)
Active: active (running) since Sun 2018-04-15 15:13:22 CST; 24min ago
Process: 437 ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf (code=exited, status=0/SUCCESS)
Main PID: 502 (supervisord)
CGroup: /system.slice/supervisord.service
├─ 502 /usr/bin/python /usr/bin/supervisord -c /etc/supervisord.conf
├─1892 ssh -NCf -L 13306:host1:3306 user@host2
├─1926 ssh -NCf -L 13306:host1:3306 user@host2
├─1947 ssh -NCf -L 13306:host1:3306 user@host2
├─1967 ssh -NCf -L 13306:host1:3306 user@host2
├─1996 ssh -NCf -L 13306:host1:3306 user@host2
├─2008 ssh -NCf -L 13306:host1:3306 user@host2
├─2037 ssh -NCf -L 13306:host1:3306 user@host2
├─2067 ssh -NCf -L 13306:host1:3306 user@host2
├─2078 ssh -NCf -L 13306:host1:3306 user@host2
├─2111 ssh -NCf -L 13306:host1:3306 user@host2
├─2122 ssh -NCf -L 13306:host1:3306 user@host2
├─2160 ssh -NCf -L 13306:host1:3306 user@host2
├─2180 ssh -NCf -L 13306:host1:3306 user@host2
├─2210 ssh -NCf -L 13306:host1:3306 user@host2
├─2248 ssh -NCf -L 13306:host1:3306 user@host2
├─2260 ssh -NCf -L 13306:host1:3306 user@host2
... a lot of " ssh -NCf -L 13306:host2:3306 user@host2"
그렇다면 왜 supervisord
동일한 프로세스를 많이 생성합니까? 제 생각엔 딱 하나만 있어야 할 것 같아요 ssh -NCf -L 13306:host2:3306 user@host2
.
답변1
감독자하위 프로세스가 포그라운드에 있을 것으로 예상합니다.:
감독자 하에서 실행되도록 의도된 프로그램은 스스로를 악마화해서는 안 됩니다. 대신, 포그라운드에서 실행되어야 합니다. 시작된 터미널에서 분리되어서는 안 됩니다.
ssh
깃발 부터 시작하셨는데요 -f
,즉:
명령 실행 직전에 ssh에 백그라운드로 이동하도록 요청합니다.
감독자는 프로그램이 모든 조절 후에 새 인스턴스를 닫고 시작한다고 생각합니다. 이 일을 영원히 계속할 것입니다.
플래그 를 제거하면 -f
예상대로 작동합니다.