Ответ 1
Просто (временно) убил мой Macbook с помощью
killall -u pu -m .
где pu - мой идентификатор пользователя. Следите за точкой в конце команды.
Также попробуйте
pkill -u pu
или
ps -o pid -u pu | xargs kill -1
Есть ли надежный способ убить все процессы данного пользователя? kill(-1, SIGKILL)
, поскольку этот пользователь будет работать, если только процесс изгоев этого пользователя сначала не уничтожит процесс убийства. Лучшее, что я могу найти до сих пор, - это пройти через system("ps -u")
для этого пользователя и убить процессы таким образом, но это кажется действительно взломанным и неэффективным.
EDIT: Чтобы уточнить, я специально прошу POSIX-совместимого решения. По какой-то причине я думал, что пометка вопроса posix помещает это в заголовок.
Просто (временно) убил мой Macbook с помощью
killall -u pu -m .
где pu - мой идентификатор пользователя. Следите за точкой в конце команды.
Также попробуйте
pkill -u pu
или
ps -o pid -u pu | xargs kill -1
Вот один лайнер, который делает это, просто замените имя пользователя на имя пользователя, которое вы хотите убить. Даже не думайте о том, чтобы положить туда корни!
pkill -9 -u `id -u username`
Примечание: если вы хотите быть красивым, удалите -9, но он не будет убивать все виды процессов.
В Debian LINUX я использую: ps -o pid= -u username | xargs sudo kill -9
.
С -o pid=
заголовок ps подавляется, а выход - только список pid. Насколько я знаю, оболочка Debian совместима с POSIX.
Как насчет итерации в виртуальной файловой системе /proc? http://linux.die.net/man/5/proc?
После этого происходит уничтожение всех процессов, созданных этим пользователем.
kill -9 -1