Процессы уничтожения, показанные sudo fuser, отфильтрованы по столбцу COMMAND

tailуже есть опция-f(--follow)для опроса файлов на наличие добавленного содержимого -хитрость заключается в том, чтобы предотвратить буферизацию вывода при добавлении канала для замены конца строки:

tail -n1 -f /tmp/somelog | stdbuf -o0 tr '\n' '\r'

Обсуждение проблемы буферизации см., например, в Конвейерная передача хвоста -f в awk

1
31.07.2020, 13:05
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 вручную.

1
18.03.2021, 23:16

Теги

Похожие вопросы