pgrep foo | grep -v $$ | xargs kill
Если у вас нет pgrep
, вам придется придумать другой способ создания списка интересующих PID. Некоторые варианты:
Используйте ps с соответствующими параметрами, после чего следует некоторая комбинация grep, sed и / или awk для согласования процессов и извлечения PID.
killall
может отправлять сигнал 0 вместо SIGTERM
; стандартная семантика этого заключается в том, что он не отправляет сигнал, а просто определяет, является ли процесс живым или нет. Возможно, вы можете использовать killall, чтобы выбрать список процессов и заставить его печатать PID соответствующих им живых. Это также, вероятно, потребует небольшой пост-обработки с помощью sed.
Возможно, что-то похожее на файловую систему Linux /proc
с псевдофайлами, содержащими системные данные, которые вы могли бы просмотреть. Опять же, grep / awk / sed ваши друзья.
Если вам действительно нужны конкретные сведения о том, как это сделать, прокомментируйте или отправьте мне письмо, и я постараюсь более подробно расширить некоторые из этих вариантов.
[Правки: добавлены дополнительные параметры для тех, у кого нет pgrep.]