![なぜ上司は同じプロセスを大量に作成するのでしょうか?](https://rvso.com/image/1558665/%E3%81%AA%E3%81%9C%E4%B8%8A%E5%8F%B8%E3%81%AF%E5%90%8C%E3%81%98%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%82%92%E5%A4%A7%E9%87%8F%E3%81%AB%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E3%81%AE%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%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
同じプロセスをたくさん作成するのでしょうか? プロセスは 1 つだけにすべきだと思いますssh -NCf -L 13306:host2:3306 user@host2
。
答え1
スーパーバイザーサブプロセスがフォアグラウンドに留まることを期待する:
スーパーバイザの下で実行されるプログラムは、デーモン化してはなりません。代わりに、フォアグラウンドで実行する必要があります。プログラムは、起動元のターミナルから切り離してはなりません。
ssh
旗から始めました-f
、つまり:
コマンド実行の直前に ssh をバックグラウンドに移動するように要求します。
スーパーバイザーは、プログラムが何らかの調整を行った後、プログラムが終了し、新しいインスタンスを開始したと認識します。これは永久に継続されます。
フラグを削除すると-f
、期待どおりに動作するはずです。