여러 프로그램을 순서대로 호출하는 스크립트가 있습니다. 이 스크립트를 완전히 종료하려면 어떻게 해야 합니까? Ctrl+ 를 클릭 C하여 일부 프로세스를 취소할 수 있지만 전체 프로세스를 종료하려면 여러 번(심지어 수천 또는 수만 번) 클릭해야 한다는 것을 알고 있습니다 . 시계나 명령만으로 스크립트를 종료하는 방법은 무엇입니까? (또는 여러 명령?)
답변1
문제는 신호가 Ctrl + C
스크립트에 도달하지 않고 시작된 프로세스에만 도달한다는 것입니다. 을 계속 C
누른 상태에서 손가락을 놓아볼 수 있습니다 Ctrl + C
. 결국 신호는 쉘에 도달하고 새 프로그램은 시작되지 않습니다.
또는 을 클릭 Ctrl + Z
하고 입력 할 수도 있습니다 kill %1
.
그러면 전체 스크립트가 일시 중지된 다음 모든 것이 종료됩니다.
답변2
1. Get the script name (say abc.sh)
2. ps -ef | grep "abc.sh" | awk '{print "kill "$2}' > file.sh
3. /bin/bash file.sh
kill에 -9 옵션을 사용할 수 있습니다. abc.sh 스크립트에 상위 프로세스가 있으면 상위 프로세스도 종료됩니다. 그러므로 현명하게 사용하는 것이 좋습니다. 대부분의 경우 위의 3단계는 정상적으로 작동합니다.