すべてのPythonプロセスを一時停止して再起動します。

すべてのPythonプロセスを一時停止して再起動します。

データベース(ETLプロセスなど)に対してバックエンドスクリプトを実行するサーバーがあります。しかし、私たちは1日2時間ずつ電子メールを送信することに専念しています。電子メールは最優先事項ですが、時にはサーバーのクラッシュ時に多くのメモリとすべてのプロセスを占有します。したがって、電子メールシステムの実行中にすべてのETLスクリプト(Pythonで作成)を一時的に一時停止したいと思います。これが完了したら、電子メールシステムが完了した後にそのスクリプトを再起動したいと思います。

電子メールシステムが3つのクローンで実行され、次の実行可能ファイルがあるとします。

/usr/bin/php /home/Email/main.php --action=set1
/usr/bin/php /home/Email/main.php --action=set2
/usr/bin/php /home/Email/main.php --action=set3

これら3つをスクリプトファイルにまとめることができます。ただし、このスクリプト内では、すべてのPythonスクリプトを一時停止して起動する必要があります。スタック交換を検索すると、次のコマンドを実行できるようです。

kill -TSTP [pid]
/usr/bin/php /home/Email/main.php --action=set1 &
/usr/bin/php /home/Email/main.php --action=set2 &
/usr/bin/php /home/Email/main.php --action=set3 &
wait
kill -CONT [pid]

ここで、pidは私のPythonスクリプトのプロセスIDです(複数のスクリプトがあります)。私の質問は、実行中のすべてのPythonスクリプトのpidを検索し、これを繰り返すようにこれを調整する方法です。注:これはUbuntu 14.04.2で実行されます。他の提案も大変ありがとうございます。ありがとうございます。

解決策

私のシステムの解決策は次のとおりです。

pkill -STOP python
/usr/bin/php /home/Email/main.php --action=set1
/usr/bin/php /home/Email/main.php --action=set2
/usr/bin/php /home/Email/main.php --action=set3
pkill -CONT python

ベストアンサー1

利用可能なプロセスのPIDを見つけるにはpgrep

あなたの場合に使用できますpkill

pkill -TSTP Email 
pkill -CONT Email 

プロセス名をよりよく一致させるのが賢明かもしれませんが、

おすすめ記事