아래 줄을 사용하여 GPU를 사용하는 프로세스를 볼 수 있었으며 그 중 일부에는 COMMAND 열 아래에 Python이 언급되어 있습니다.
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 프로세스를 종료해야 하는 한 줄입니다 /dev/nvidia*
.
sudo fuser -v /dev/nvidia* 2>&1 | grep python | grep -o -E " [0-9]+ " | xargs kill
2>&1
결과가 출력되는 방식 때문에 fuser
리디렉션이 필요합니다 . grep python
포함된 모든 행을 선택한 python
다음 grep -o -E " [0-9]+ "
PID를 추출하고 xargs kill
모든 행을 종료합니다.
sudo fuser -v /dev/nvidia* 2>&1 | grep python
원치 않는 프로세스가 실수로 선택되지 않았는지 확인하려면 먼저 이를 실행하십시오 .
원래 답변
다음 명령은 하드웨어 파일을 사용하는 프로세스를 표시 /dev/nvidia*
하고 해당 프로세스를 하나씩 종료할지 묻는 메시지를 표시합니다.
$ 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 명령(작동해야 함)을 종료하는 한 줄 명령은 아니지만 fuser | grep | cut | kill
각 PID를 수동으로 입력하는 것보다 빠릅니다.