私はスーパーコンピュータで作業しており、多くの作業スケジュールを自動的に保持するシェルスクリプトを持っています。スクリプトが実行されたら、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