如何终止 shell 脚本?

如何终止 shell 脚本?

我正在一台超级计算机上工作,并且有一个 shell 脚本,它会自动为我安排一堆工作。脚本运行后,我可以使用Ctrl+手动终止C。我从 unix 会话运行该脚本screen并终止了screen,但该脚本不知何故仍在运行并提交作业。它似乎陷入了一个循环并且没有结束,从而消耗了宝贵的核心时间。

我尝试过ps -u [user],但没有显示出来。我知道它仍然在后台运行,只需要杀死它即可。

编辑:uname -a给出以下结果:

Linux blogin3 2.6.32-431.20.3.el6.x86_64 #1 SMP Thu Jun 19 21:14:45 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

所以我猜超级计算机正在运行Linux。

答案1

使用您提供的信息很难进行调试,但请考虑这一点:

$ cat foo.sh 
#!/usr/bin/env bash
while true
do 
    echo yes; 
done

这只是一个简单的无限循环。如果我使用 启动脚本./foo.sh,我可以在 的输出中找到它ps

$ ps aux | grep foo.sh
terdon   25568  0.0  0.0  10996  1424 pts/12   S+   16:19   0:00 bash /home/terdon/scripts/foo.sh
terdon   25982  0.0  0.0  10356   928 pts/11   S+   16:23   0:00 grep --color foo.sh

要杀死它,最简单的方法是使用pkill及其-f标志:

   -f, --full
          The pattern is normally only matched against the  process  name.
          When -f is set, the full command line is used.

所以,尝试:

pkill -f foo.sh

相关内容