目前,我在sh脚本文件中使用如下代码:
kill `ps aux | grep -F 'myServer' | grep -v -F 'grep' | awk '{ print $2 }'`
但是我想知道只有在进程(myServer
这里)正在运行时才如何调用它吗?
目前,我在sh脚本文件中使用如下代码:
kill `ps aux | grep -F 'myServer' | grep -v -F 'grep' | awk '{ print $2 }'`
但是我想知道只有在进程(myServer
这里)正在运行时才如何调用它吗?
Answers:
我通常只使用pgrep和pkill
if pgrep myServer; then pkill myServer; fi
pkill myServer
和killall -q myServer
?尝试杀死不存在的进程没有任何弊端。
|| true
然后附加。
if ! killall -q myServer; then echo ERROR; fi
呢
尝试使用:
sudo kill `pidof process_name`
其中process_name是您要终止的进程的名称。这样做的好处是pidof将列出与给定名称匹配的所有进程的pid。由于kill接受多个pid,因此它将在一瞬间就杀死所有pid。
让我知道是否有帮助。
kill `pidof process_name
。如果确实返回空列表,请跳过kill调用。
我用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
然后输入您的进程名称。
注意:对此,我已经尝试了很多次。
kill
仅在进程运行时才不可能调用,因为在测试和调用之间存在竞争条件kill
(很可能在短时间内由于另一个原因而使进程停止)。您应该使用pkill
或killall
做与您尝试做的事情完全相同的事情,但是键入的次数更少(可能还有其他一些优点)。