
У меня в системе есть старый пользователь (bob). Согласно выводу 'top', похоже, что многие процессы запущены этим пользователем (команда для большинства из них - 'java'). Поскольку у меня есть права root, я удалил пользователя, однако процессы все еще продолжают работать с пользователем '1000'. Как мне остановить постоянный запуск этих процессов?
решение1
Если вы удалили пользователя и при этом были удалены все задания cron и т. п., которые могли быть у этого пользователя, то перезагрузка системы должна позаботиться об остановке его процессов без их перезапуска при следующем запуске системы.
Если перезагрузка невозможна, вы можете отправить сигнал завершения всем процессам, принадлежащим пользователю с UID 1000, используя
sudu pkill -u 1000
Вы можете увидеть, на какие процессы повлияет эта команда, запустив ее сначала
pgrep -u 1000
Смотрите также man pkill
.
решение2
Сначала я сохраню текущее состояние всех процессов сервера в файл.
ps -wwfax -o uid=,pid=,ppid=,cmd= > /root/list_of_process_as_today.txt
После этого я сосредоточусь на своем плохом пользователе.
ps -wwfax -o uid=,pid=,ppid=,cmd= | sed '/^ *1000 *\([0-9][0-9]*\) .*$/p;d'
Примером вывода может быть:
1000 3096 3087 \_ sshd: em444@pts/0
1000 3099 3096 \_ -bash
1000 3543 3099 \_ ps -wwfax -o uid=,pid=,ppid=,cmd=
1000 3544 3099 \_ sed /^ *1000 *\([0-9][0-9]*\) .*$/p;d
1000 21628 1 SCREEN
1000 21629 21628 \_ /bin/bash
Анализ списка процессов
Моя текущая оболочка - это процесс 3099. Вы можете видеть некоторые дочерние процессы, команду, которую я запустил.3543, и один родитель3096
Вы можете видеть, что у меня есть процесс 21628, его родительский процесс — это1, процесс1является родителем всех процессов.
После этого я смогу использовать эту команду для завершения всех процессов.
kill $(/root/list_of_process_as_today.txt | sed 's/^ *1000 *\([0-9][0-9]*\) .*$/\1/p;d')