tail
уже есть опция-f
(--follow
)для опроса файлов на наличие добавленного содержимого -хитрость заключается в том, чтобы предотвратить буферизацию вывода при добавлении канала для замены конца строки:
tail -n1 -f /tmp/somelog | stdbuf -o0 tr '\n' '\r'
Обсуждение проблемы буферизации см., например, в Конвейерная передача хвоста -f в awk
РЕДАКТИРОВАТЬ
Вот один лайнер -, который должен убивать все процессы 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 вручную.