我使用 while 循环编写了一个 Linux (bash) shell 脚本,并保持 sleep 命令每 60 秒执行一次脚本,并将输出重定向到其他文件。几个小时后,我停止了脚本,它并没有停止执行,我删除了仍在运行的脚本,并且输出文件每 60 秒更新一次。我可以在Linux运行的进程中看到sleep命令。我尝试使用kill -9 PID命令杀死睡眠的PID。没有用。它在我的生产服务器中。有人可以帮忙吗?我们应该如何停止脚本的执行。
答案1
该sleep
命令由您的脚本调用。如果终止该sleep
命令,脚本将前进到下一个命令。例如,您需要查看命令的父 pid (PPID) sleep
。ps
然后查找对应的父pid(PPID)并杀死属于该PID的进程
ps -ef |(head -1; grep sleep)
UID PID PPID C STIME TTY TIME CMD
lambert 4062 4041 0 08:47 pts/3 00:00:00 sleep 5
ps -p 4041
PID TTY TIME CMD
4041 pts/3 00:00:00 myscript.sh
kill 4041
答案2
它可能在后台运行:
$ jobs
[1]+ Running sleep 100 &
$ kill %1
[1]+ Terminated sleep 100
您还可以使用 pkill 和 pgrep
使用killall 停止所有实例。
答案3
尝试使用 'ps -ef | grep你的脚本名称' 找到你的任务的 pid。然后使用'kill -9你的进程号' 来终止该进程。