В настоящее время я использую такую строку в моем файле сценария sh:
kill `ps aux | grep -F 'myServer' | grep -v -F 'grep' | awk '{ print $2 }'`
Но мне интересно, как это назвать, только если процесс ( myServer
здесь) запущен?
bash
command-line
kill
myWallJSON
источник
источник
kill
только, когда процесс запущен, потому что между тестом и вызовом есть условие состязанияkill
(возможно, процесс остановился по другой причине за это короткое время). Вы должны использоватьpkill
илиkillall
делать то же самое, что вы пытаетесь сделать, но с меньшим количеством для ввода (и, вероятно, некоторые другие преимущества).Ответы:
Я обычно просто использую pgrep и pkill
источник
pkill myServer
илиkillall -q myServer
? Там нет недостатка в попытке убить несуществующие процессы.|| true
тогда.if ! killall -q myServer; then echo ERROR; fi
?Вы можете убить процессы по имени, используя
pkill
илиkillall
, проверив их справочные страницы.источник
kill
этого, это убивает только если процесс запущен. Напримерpkill -u myuser -f myprocess\.[0-9]+
Немного другой подход был бы примерно таким:
Это позволит избежать
1
возврата кода ошибки изkillall
команды, если процесс не существует.echo
Часть будет только в действие, еслиkillall
возвращается1
, в то время как сам вернется0
(успех).источник
killall -q
лучшеkillall -q
поддерживается не всеми версиями Unix, MacOS Catalina все еще не имеет его.попробуйте использовать:
где имя_процесса - это имя процесса, который вы хотите уничтожить. Что в этом хорошего, так это то, что pidof будет перечислять pid всех процессов, соответствующих данному имени. Поскольку kill принимает несколько PID, он будет убивать всех из них в один каприз.
Позвольте мне знать, если это помогает.
источник
kill `pidof process_name
. Если он возвращает пустой список, пропустите вызов kill.Небольшой сценарий, который я создал с R & D. надеюсь тебе понравится
сохраните его с таким именем, как script.sh, затем
Затем дайте имя вашему процессу.
Примечание: я пробовал много раз с этим, и это нормально.
источник
Проверьте, существует ли процесс с
pidof
. Если это так, убейте его:Код выхода всегда равен 0 после выполнения вышеуказанной команды.
источник
Использовать
pkill
с опцией-f
Параметр
-f
- это шаблон, который обычно сопоставляется с именем процесса.источник
Я хотел бы использовать:
xargs -r
Говорит бежать убивать только при наличии входного сигнала.ps --no-header -eo pid,cmd
Получает выход в лучший формат для анализа.источник