쉘 스크립트를 종료하는 방법은 무엇입니까?

쉘 스크립트를 종료하는 방법은 무엇입니까?

나는 슈퍼컴퓨터로 작업 중이고 자동으로 많은 작업 일정을 잡아주는 쉘 스크립트를 가지고 있습니다. 스크립트가 실행된 후 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

관련 정보