Убить все процессы для данного пользователя

Есть ли надежный способ убить все процессы данного пользователя? kill(-1, SIGKILL), поскольку этот пользователь будет работать, если только процесс изгоев этого пользователя сначала не уничтожит процесс убийства. Лучшее, что я могу найти до сих пор, - это пройти через system("ps -u") для этого пользователя и убить процессы таким образом, но это кажется действительно взломанным и неэффективным.

EDIT: Чтобы уточнить, я специально прошу POSIX-совместимого решения. По какой-то причине я думал, что пометка вопроса posix помещает это в заголовок.

Ответ 1

Просто (временно) убил мой Macbook с помощью

killall -u pu -m .

где pu - мой идентификатор пользователя. Следите за точкой в ​​конце команды.

Также попробуйте

pkill -u pu

или

ps -o pid -u pu | xargs kill -1

Ответ 2

Вот один лайнер, который делает это, просто замените имя пользователя на имя пользователя, которое вы хотите убить. Даже не думайте о том, чтобы положить туда корни!

pkill -9 -u `id -u username`

Примечание: если вы хотите быть красивым, удалите -9, но он не будет убивать все виды процессов.

Ответ 3

В Debian LINUX я использую: ps -o pid= -u username | xargs sudo kill -9.

С -o pid= заголовок ps подавляется, а выход - только список pid. Насколько я знаю, оболочка Debian совместима с POSIX.

Ответ 5

После этого происходит уничтожение всех процессов, созданных этим пользователем.

kill -9 -1