while循环shell脚本

while循环shell脚本

我使用 while 循环编写了一个 Linux (bash) shell 脚本,并保持 sleep 命令每 60 秒执行一次脚本,并将输出重定向到其他文件。几个小时后,我停止了脚本,它并没有停止执行,我删除了仍在运行的脚本,并且输出文件每 60 秒更新一次。我可以在Linux运行的进程中看到sleep命令。我尝试使用kill -9 PID命令杀死睡眠的PID。没有用。它在我的生产服务器中。有人可以帮忙吗?我们应该如何停止脚本的执行。

答案1

sleep命令由您的脚本调用。如果终止该sleep命令,脚本将前进到下一个命令。例如,您需要查看命令的父 pid (PPID) sleepps然后查找对应的父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你的进程号' 来终止该进程。

相关内容