我编写了一个shell脚本,它根据特定条件杀死进程。 我的剧本' A'会打电话给另一个剧本' B'它标识进程ID并将其杀死。
在运行脚本之前我已经运行了
ps -ef | grep processA
这给了我结果进程ID,比如11111
脚本B通过此命令获取进程ID
ps -ef|grep processA|grep -v stop|grep -v grep|awk ' { print $2 } '
我在脚本A中添加了相同的命令,并将进程ID设置为11111 但是,当它在脚本B中调用时,进程ID将不同,例如22222。 我不确定为什么即使它是相同的命令,所识别的进程ID也是不同的。对此有任何解释吗?
答案 0 :(得分:0)
首先,您确定脚本A中的命令与脚本B中的命令相同吗?
其次,如果您对processA的PID感兴趣,可以
pgrep processA
将直接为您提供processA的PID。
第三,你想用命令实现什么
ps -ef | grep processA | grep -v stop | grep -v grep | awk '{ print $2 }'
看起来您正在寻找processA,但您只希望流程中不包含单词' stop'和' grep'。使用pgrep,你不会得到grep进程寻找processA。
如果您提供更多信息(例如您的脚本),我们可以为您提供更好的帮助。
答案 1 :(得分:0)
获取进程ID并将其杀死?这是另一种方式:
> proc_name=$1".pid"
> pid=$(cat /var/run/$proc_name)
> kill -9 $pid