Вместо того, чтобы анализировать вывод ps
, настройте его к своей симпатии.
Если ps
фильтрующих опций достаточно, чтобы заставить его показать точно набор процессов, которые Вы хотите уничтожить, затем указать -o pid=
только показать столбец PID, без строки заголовка.
ps … -o pid=
1234
56789
Так как вывод содержит только цифры и пробел, можно использовать его непосредственно в замене команды:
kill $(ps … -o pid=)
При необходимости в последующей обработке использовать -o
выбрать столбцы и приказать, чтобы Вы хотели. Посмотрите ps
руководство по Вашей системе для поддерживаемых имен столбцов; POSIX указывает некоторых. Добавьте a =
после каждого столбца для подавления строки заголовка.
kill $(p=$(sh -c 'echo $PPID');
ps -o pid= -o ppid= -o tty= -o comm= |
awk -v "tty=${TTY#/dev/}" -v o=$$ -v p=$p '
$1 != o && $1 != p && $2 != p && $3 == tty && $4 != "sh" {print $1}
')
Это - вероятно, ошибка в брелоке для ключей GNOME. Необходимо зарегистрировать отчет об ошибках в средстве отслеживания ошибки дистрибутива.