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