В настоящее время я использую такую строку в моем файле сценария sh:
kill `ps aux | grep -F 'myServer' | grep -v -F 'grep' | awk '{ print $2 }'`
Но мне интересно, как ее вызвать, только если процесс (myServer
здесь) запущен?
Вы можете убить процессы по имени, используя pkill
или killall
, проверьте их справочные страницы.
попробуйте использовать:
sudo kill `pidof process_name`
где имя_процесса - это имя процесса, который вы хотите уничтожить. Что в этом хорошего, так это то, что pidof будет перечислять pid всех процессов, соответствующих данному имени. Так как kill принимает несколько pid, он убивает их всех за один каприз.
Дайте мне знать, если это поможет.
Проверьте, существует ли процесс с pidof
. Если это так, убейте его:
(! pidof process_name) || sudo kill -9 $(pidof process_name)
Код выхода всегда равен 0 после выполнения вышеуказанной команды.
Я бы использовал:
ps x --no-header -o pid,cmd | awk '!/awk/&&/myServer/{print $1}' | xargs -r kill
xargs -r
приказывает запустить kill только при наличии ввода. ps --no-header -eo pid,cmd
выводит выходные данные в лучший формат для анализа.
Я обычно просто использую pgrep и pkill
if pgrep myServer; then pkill myServer; fi
Немного другой подход будет выглядеть примерно так:
killall PROCESS || echo "Process was not running."
Это позволит избежать кода ошибки 1
, возвращаемого командой killall
, если процесс не существует. Часть echo
вступит в действие, только если killall
вернет 1
, а сама вернет 0
(успех).
Небольшой скрипт, который я создал с помощью R & D. Надеюсь, вам понравится
#!/bin/bash
echo " Enter the process name:"
read $proc_name
if pgrep $proc_name
then
echo " $proc_name running "
pkill $proc_name
echo "$proc_name got killed"
else
echo " $proc_name is not running/stopped "
fi
, сохраните его под каким-нибудь именем, например, script.sh, затем
chmod +x script.sh
./script.sh
, затем дайте имя процессу.
Примечание: я много раз пробовал с этим, и это нормально.
Используйте pkill
с опцией -f
pkill -f myServer
Опция -f
- это шаблон, который обычно сопоставляется с именем процесса.