백그라운드 작업 종료
이 단계에서는 더 이상 필요하지 않은 백그라운드 작업을 종료하는 다양한 방법을 배우게 됩니다. 시스템 리소스를 확보하고 시스템 성능을 유지하려면 적절한 작업 종료가 중요합니다.
종료할 작업 식별
먼저, 현재 실행 중인 작업을 확인해 보겠습니다.
jobs
백그라운드 작업이 실행 중인 것을 볼 수 있습니다.
[1] + running ~/project/background_task.sh
프로세스 ID(PID) 를 포함한 자세한 정보가 필요한 경우 다음을 사용합니다.
jobs -l
다음과 유사한 출력이 표시됩니다.
[1] + 1456 running ~/project/background_task.sh
PID(작업 번호 뒤의 숫자) 에 유의하십시오. 프로세스를 종료하는 데 사용할 수 있습니다.
방법 1: 작업 번호를 사용하여 작업 종료
백그라운드 작업을 종료하는 가장 간단한 방법은 작업 번호와 함께 kill 명령을 사용하는 것입니다.
kill %1
작업이 종료되었는지 확인합니다.
jobs
다음과 같은 내용을 볼 수 있습니다.
[1] + terminated ~/project/background_task.sh
작업이 여전히 실행 중인 경우 (일부 프로세스는 더 강력한 종료 신호가 필요할 수 있음) 다음을 사용할 수 있습니다.
kill -9 %1
-9 플래그는 SIGKILL 신호를 보내 프로세스가 정리할 수 없도록 강제로 종료합니다.
방법 2: PID 를 사용하여 작업 종료
스크립트의 다른 인스턴스를 백그라운드에서 시작해 보겠습니다.
~/project/background_task.sh &
작업 번호와 PID 를 표시하는 출력을 볼 수 있습니다.
[1] 1567
PID 를 사용하여 이 작업을 종료하려면 다음을 사용합니다.
kill 1567
1567을 작업의 실제 PID 로 바꿉니다.
작업이 종료되었는지 확인합니다.
jobs
방법 3: killall 과 함께 프로세스 이름 사용
스크립트의 또 다른 인스턴스를 시작해 보겠습니다.
~/project/background_task.sh &
동일한 프로세스의 여러 인스턴스가 실행 중인 경우 killall 명령을 사용하여 한 번에 모두 종료할 수 있습니다.
killall background_task.sh
이 명령은 이름이 background_task.sh인 모든 프로세스를 종료합니다.
작업이 실행 중이지 않은지 확인합니다.
jobs
출력이 없어야 하며, 이는 모든 백그라운드 작업이 종료되었음을 나타냅니다.
종료 신호 이해
kill 명령을 사용할 때 프로세스에 신호를 보내는 것입니다. 기본적으로 kill은 SIGTERM 신호 (신호 15) 를 보내 프로세스에 정상적으로 종료하도록 요청합니다. 프로세스가 SIGTERM 에 응답하지 않으면 SIGKILL(신호 9) 을 사용하여 강제로 종료할 수 있습니다.
kill -TERM %1 ## Same as kill %1
kill -KILL %1 ## Same as kill -9 %1
기타 유용한 신호는 다음과 같습니다.
- SIGHUP (신호 1): 구성 파일을 다시 로드하는 데 자주 사용됨
- SIGINT (신호 2): Ctrl+C 를 누르는 것과 동일
- SIGSTOP (신호 19): 프로세스를 일시 중단합니다 (잡거나 무시할 수 없음)
- SIGCONT (신호 18): 중지된 프로세스를 계속합니다.
마지막 시연을 위해 백그라운드 작업을 다시 시작한 다음 종료해 보겠습니다.
~/project/background_task.sh &
jobs
kill %1
jobs
이 시퀀스는 작업을 시작하고, 실행 중임을 확인하고, 종료한 다음, 더 이상 실행 중이지 않음을 확인합니다.