次のようなものを使用する場合、呼び出しスクリプトtest.py
とpid自体を除くすべてのPythonスクリプトを終了するためにbashでコマンドを実行するにはどうすればよいですか?grep
ps -ef |grep
pgrep pythonのようなものを使ってgrepプロセスを無視することはできるようですが、test.pyスクリプトをどのように除外しますか?そうすることができるオプションがあることを知っています。grep -v
そうするオプションはありますか?pgrep -v
言う:grepプロセスに加えて - これを実行すると、ps -ef |grep test1.py
この結果を取得するために使用されるgrep pidも取得されます。結果が表示される段階では、プロセスはもう存在しないため、終了したくありません。
ベストアンサー1
以下を使用できます。
pkill $(pgrep python | grep -xv $(pgrep test.py))
内部の作業は次のとおりです。
- test.pyのPIDを収集します。
pgrep test.py
grep -xv
収集されたリストからPIDを除外する場所にPIDを送信します(-v
この-x
オプションは、行全体(PID)と一致することを意味します)。pgrep python
殺したいPythonスクリプトのリストを集める
必要なPythonプロセスを正確に見つけるには、pgrepを調整する必要があるかもしれませんが、これは基本的な構造です。内部からやり直して状況に合わせて調整してください。
実行して、
pgrep test.py
期待したPIDを正確に見つけたことを確認してください。pgrep -f
より確実にするには、プロセス名全体を一致させるオプションを参照してください。(または同様の)実行で
pgrep python
終了したい「Pythonスクリプト」を見つけます。一緒に集めてください!