Вы могли сделать так путем контроля журнала связывать-сервера (вход запроса должен быть включен).Удачи...
Если Ваша команда производит список PIDs, то просто передают его по каналу в:
xargs kill
Обратите внимание, что Ваша команда будет соответствовать команде grep также, поэтому рассмотрите добавление чего-то как |grep -v grep
перед оригиналом grep
команда.
Просто используйте pkill
. Хотя не стандартная команда, это найдено во многих Нельдах и выделено этому виду задач.
pkill -f 'vmstat 1'
Также обратите внимание что Ваш grep
будет соответствовать vmstat 1
но также и vmstat 10
и grep vmstat 1
(так был бы это pkill
выше), и awk
надмножество grep
. Чтобы быть более устойчивыми, Вы могли сделать вместо этого:
ps -Ao pid,args | awk '$2 == "vmstat" && $3 == "1" {print $1}' | xargs kill
Или
pkill -xf 'vmstat 1'
Если Вы уже используете awk, можно сделать
ps -ef | grep "vmstat 1" | awk '!/grep/{ print "kill " $2 }' | bash
Это произведет список команд уничтожения, и поскольку каждые из команд уничтожают единственный процесс, Вы не будете сталкиваться с потенциальным списком аргументов слишком долго (хотя это очень маловероятно при осмотре через выполнение процессов), и я добавил шаблон, чтобы не соответствовать самому процессу grep как уничтожение, это может прервать список.
ps -ef | awk '/vmstat 1/ { print "kill " $2 }' | bash
– otokan
05.12.2012, 21:42