なぜ上司は同じプロセスを大量に作成するのでしょうか?

なぜ上司は同じプロセスを大量に作成するのでしょうか?

設定:

[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、期待どおりに動作するはずです。

関連情報