sudo fusionrとマークされたプロセスを終了し、COMMAND列に基づいてフィルタリングします。

sudo fusionrとマークされたプロセスを終了し、COMMAND列に基づいてフィルタリングします。

以下の行を使用してGPUを使用しているプロセスを見ることができました。

sudo fuser -v /dev/nvidia* 

印刷:

                     USER        PID ACCESS COMMAND
/dev/nvidia0:        root       1197 F...m Xorg
                     alireza    1451 F...m gnome-shell
                     alireza    5527 F...m python
                     alireza    5567 F.... python
                     alireza    5568 F.... python

コマンドラインで言及されているすべてのPythonプロセスを終了する方法。しかし、これまではPIDごとにこれを手動で行う必要がありますが、sudo kill -9 <pid>PIDが多いと簡単ではありません。

これを自動化して高速化する方法はありますか?コマンドを作成し、COMMAND列にpytonを持つすべてのPIDを終了するのと同じですか?

答え1

編集する

これは、以下を使用してすべてのPythonプロセスを終了する必要がある1行です/dev/nvidia*

sudo fuser -v /dev/nvidia* 2>&1 | grep python | grep -o -E " [0-9]+ " | xargs kill

2>&1結果の出力方法のため、fuserリダイレクトが必要です。grep python含まれているすべての行を選択しpythongrep -o -E " [0-9]+ "PIDを抽出し、xargs killすべての行を終了します。

sudo fuser -v /dev/nvidia* 2>&1 | grep python不要なプロセスが誤って選択されていないことを確認するには、まずそれを実行してください。

元の答え

次のコマンドは、ハードウェアファイルを使用するプロセスを表示し、/dev/nvidia*そのプロセスを1つずつ終了するかどうかを尋ねるメッセージを表示します。

$ sudo fuser -ikv /dev/nvidia*

                     USER        PID ACCESS COMMAND
/dev/nvidia0:        root       1197 F...m Xorg
                     alireza    1451 F...m gnome-shell
                     alireza    5527 F...m python
                     alireza    5567 F.... python
                     alireza    5568 F.... python
Kill process 1191 ? (y/N) N
Kill process 1451 ? (y/N) N
Kill process 5527 ? (y/N) y
...

これはすべてのPythonコマンド(動作する必要があります)を終了する1行のコマンドではありませんが、fuser | grep | cut | kill各PIDを手動で入力するよりも高速です。

関連情報