![Почему мой руководитель создает много одинаковых процессов?](https://rvso.com/image/1558665/%D0%9F%D0%BE%D1%87%D0%B5%D0%BC%D1%83%20%D0%BC%D0%BE%D0%B9%20%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%20%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%B5%D1%82%20%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%BE%D0%B4%D0%B8%D0%BD%D0%B0%D0%BA%D0%BE%D0%B2%D1%8B%D1%85%20%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D0%B2%3F.png)
Конфигурация:
[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 в фоновый режим непосредственно перед выполнением команды.
Supervisor думает, что программа закрывается и запускает новый экземпляр после любого регулирования, которое она делает. Это будет продолжаться вечно.
Если убрать -f
флаг, все должно работать так, как и ожидалось.