シェルスクリプトを終了するには?

シェルスクリプトを終了するには?

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

おすすめ記事