gpt4 book ai didi

linux - 如何编写shell脚本查找PID并Kill

转载 作者:太空狗 更新时间:2023-10-29 12:14:26 25 4
gpt4 key购买 nike

我正在尝试编写一个脚本来查找之前运行的另一个脚本的 PID。一旦找到 PID,它就会发送一个终止信号。

我可以找到 PID 但 kill 信号没有处理,我收到一条返回消息说它不是 PID。

这是我正在做的:

#!/bin/bash   
PID=`ps -eaf | grep "start.sh" | awk '{print $2}'`
echo "$PID"
if [[ -z "$PID" ]];
then(
echo "Start script is not running!"
)else(
kill -9 $PID
)fi

它试图杀死的脚本会启动许多其他脚本,所以我希望杀死 start.sh 会杀死所有子进程。

最佳答案

当你运行时

ps -eaf | grep "start.sh" | awk '{print $2}'

您创建了一个包含单词 start.sh 的子 shell。 grep 然后将启动它自己的进程和 start.sh 进程,这样您将获得两个 PID。

这意味着当你试图杀死 start.sh

ps -eaf | grep "start.sh" | awk '{print $2}'

过程。 start.sh 将死掉,但另一个将不再存在,因此不能被杀死,所以它给你一个错误。

如果你要拆分命令,你可能会有更好的运气:

PIDS=$(ps -eaf)
PID=$(echo "$PIDS" | grep "start.sh" | awk '{print $2}')

关于linux - 如何编写shell脚本查找PID并Kill,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30514923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com