pacman -Qt
пакеты печати, чьи не нуждается в системе (возможно, Вам нужна она). Я надеюсь, что не неправильно понял Вас.
Для уничтожения всех процессов удара, принадлежа корню, я использовал следующий сценарий:
for pid in $(pgrep -u 0 bash); do
if [ "$pid" != "$$" ]; then
kill -HUP "$pid";
fi
done
pkill -u 0 su
alls все su
процессы, работающие как корень (который в свою очередь уничтожает их дочерние оболочки).
Если Вы только хотите уничтожить процессы удара, работающие под su
:
for pid in $(pgrep -u 0 bash); do
parent_pid=$(ps -o ppid= -p "$pid")
parent_command=$(ps -o comm= -p "$parent")
if [ "$parent_command" = "su" ]; then kill -HUP "$parent_pid"; fi
done
Однако это - вероятно, плохая идея. Что, если та оболочка Вы уничтожаете, делает что-то важное?
Если Вы хотите уничтожить оболочки, которые остаются необслуживаемыми слишком долго, устанавливают TMOUT
переменная в .bashrc
. Например, с TMOUT=600
, колотите автоматически выходит, если это не видит входа в течение 10 минут.
Действительно думайте тщательно о том, чего Вы пытаетесь достигнуть. Существует хороший шанс, что уничтожение оболочек не решит любую проблему, которую Вы пытаетесь решить.
Как другие состояния, это не должно быть необходимо. Необходимо видеть сначала, почему существуют многие su
процессы actives.
С другой стороны, для уничтожения всех тех процессов, например, в соответствии с Linux Вы могли использовать:
ps aux | awk '/su( -)?$/ {print $2}' | xargs sudo kill
Если Вы не заботитесь об уничтожении другого su
процессы (su -u username
) простой подход будет
echo "killall su" | at 1145 jan 31
Если Вы заботитесь, используйте решение Emy, подавая его к "в" в течение "определенного времени" или добавления его к crontab для периодических вызовов.
Обратите внимание, что самоуверенные пользователи преодолеют фильтр Emy с su -u root
и выслеживание их будет трудно как su
выбирает довольно много вариантов, которые могли одурачить regexp. killall
является более надежным, но может вызвать сопутствующий ущерб, как описано выше.
pkill
(и возможно его компаньон pgrep
) должен работать приятно, если действительно действительно необходимо сделать это.
Что-то как pkill su
отправит сигнал уничтожения во все su
процессы. Также посмотрите на их --full
параметр; см. страницу справочника для деталей.
Достигнуть "в определенное время", очевидное решение состоит в том, чтобы использовать at
, который специально предназначен для выполнения данной команды в установленный срок и только затем (в противоположность крону, который выполняет запланированные команды неоднократно, когда системное время соответствует некоторым данным критериям).
Соединяя их, Вы получаете что-то как echo pkill su | at 17:30
. Обратите внимание что at
должен будет быть выполнен как корень.