我正在一台超级计算机上工作,并且有一个 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