mySample.sh
pid=$(ps -Af | grep $1 | grep -v grep | awk ' { print $2 } ');
echo $pid
以上命令正在打印并终止为grep创建的临时进程
即使我没有运行Abcd的任何进程,
这是打印pid
任何忽略它的方法,
iam实际上是使用grep -v
忽略它,仍然......
./mySample.sh Abcd
6251 6378 6379
获取进程ID的任何问题。?
基本命令行输出如下,运行名为Acc_Application_One
的进程后[root @ localhost桌面] #ps -Af | grep Acc
root 6251 2758 0 16:16 pts / 1 00:00:00 ./Acc_Application_One
root 7288 2758 0 16:57 pts / 1 00:00:00 grep Acc
更改了mySample.sh
pgrep -fl "$1"
输出
[root @ localhost桌面] #mySample.sh Acc_Application_One
6251 7289
答案 0 :(得分:0)
尝试更简单的方法:
pid=$(pgrep "$1")
如果你想要杀死它:
pkill "$1"
答案 1 :(得分:0)
要在命令行中的任何位置使用该模式终止进程,请使用double
:
pkill -f
根据pkill -f "$1"
:
man pkill
在流程的完整参数字符串中匹配模式 where ,而不仅仅是可执行文件名。
同样,您可以使用-f
列出匹配过程的进程ID。
答案 2 :(得分:0)
当你删除awk时问题会变得清晰:mySample.sh也会有Abcd。
ps -Af | grep " $1" | grep -Ev "grep|$0" | awk ' { print $2 } '
答案 3 :(得分:0)
使用以下代码更改了mySample.sh脚本 这只是使用发送的参数获取processId 杀了它
pid=$(pgrep -fl $1 | grep -v '[k]ill_script'| awk ' { print $1 } ')
echo $pid
if [[ -n ${pid} ]]; then
echo "Stopping Acc Application $1 with pid=${pid}"
kill -9 ${pid}
fi
由于