Bash 및 Python에서 SIGTERM을 보내고 받는 방법

Bash Mich Python Eseo Sigtermeul Bonaego Badneun Bangbeob



Linux에서 프로세스는 신호를 사용하여 서로 통신합니다. 신호는 프로그램에 다양한 이벤트 또는 요청을 알리는 소프트웨어 인터럽트 역할을 합니다. 예를 들어 프로그램이 실행 중일 때 종료 신호를 보내 프로그램을 종료할 수 있습니다. 전송되는 신호는 실행 중지, 프로그램 종료, 실행 재개 등과 같은 다양한 작업을 트리거할 수 있습니다.

Bash 및 Python으로 작업할 때 SIGTERM 신호를 보내 실행 중인 프로세스를 부드럽게 종료할 수 있습니다. 이 게시물은 Bash 및 Python에서 SIGTERM을 보내고 받는 방법을 다룹니다.

기호 용어는 무엇입니까

Unix 시스템에는 시스템, 장치 및 사용자 정의 신호의 세 가지 신호 범주가 있습니다. 각 신호에는 정수 값이 있습니다. 이름이나 정수 값을 지정하여 신호를 실행할 수 있습니다.







SIGTERM은 정수 값 15의 신호입니다. 실행 중인 프로세스를 부드럽게 종료하고 싶을 때 실행됩니다. 다음은 Bash에서 SIGTERM을 사용하는 구문입니다.



죽이기 대상 용어 < PID >

또는

죽이다 - 열 다섯 < PID >

다음 명령을 사용하여 사용 가능한 모든 신호를 확인할 수 있습니다.



죽이기 -l





Bash 및 Python에서 SIGTERM을 보내고 받는 방법

다른 인스턴스에서 Bash 및 Python의 SIGTERM을 보내고 받을 수 있습니다. Bash 또는 Python 프로그램을 실행할 때 SIGTERM 신호를 실행하여 프로그램을 종료할 수 있습니다. Bash 및 Python에서 SIGTERM을 보내고 받는 방법을 이해하기 위한 다양한 예가 있습니다.

1. Python 스크립트 사용

Python 1.4 및 최신 버전을 사용하는 경우 신호 라이브러리를 활용하여 SIGTERM을 보내고 받을 수 있습니다. 프로그램에서 다른 신호를 캡처하고 반응하는 방법을 정의하려면 프로그램에서 라이브러리를 가져오십시오. 신호 라이브러리를 사용하면 수신된 신호의 정수를 보고하는 신호 처리기를 만들 수 있습니다. 그런 다음 캡처된 신호를 등록하고 해당 PID와 같은 현재 프로세스에 대한 정보를 얻을 수 있습니다. 예를 들어 보겠습니다.



전송된 신호의 정수를 포착하는 Python 스크립트가 있습니다. 또한 현재 프로세스의 PID를 포착합니다.

다음 이미지에서는 Python 스크립트를 실행하고 몇 초마다 실행되는 while 루프가 있습니다. 다른 터미널에서 Python 스크립트를 실행하여 얻은 PID를 지정하여 SIGTERM 신호를 보내 프로세스를 종료할 수 있습니다.

SIGTERM 신호를 보내면 스크립트 실행이 중지됩니다. 신호 정수를 캡처하기 때문입니다. 이 경우 SIGTERM 신호에 대해 kill -15를 실행합니다. 정수 값 대신 SIGTERM 키워드를 사용하여 SIGTERM 종료 신호를 보낼 수도 있습니다. 우리는 여전히 같은 결과를 얻습니다.

다음 구문을 사용하여 Python 작업을 실행할 수도 있습니다.

파이썬3 < 스크립트/작업 > &

첫 번째 방법과 달리 이 옵션을 사용하여 SIGTERM을 전송하면 작업 실행이 시작될 때 작업 ID가 출력되는 것을 볼 수 있습니다. 죽이고 나면 '완료' 상태가 됩니다. SIGTERM은 이름이나 정수를 지정하여 보낼 수 있습니다.

2. Bash 스크립트 사용

'trap' 명령을 사용하여 Bash 스크립트를 실행할 때 신호를 잡을 수 있습니다. 이 예에서는 'trap' 명령을 추가하여 SIGTERM 신호를 포착했습니다. 스크립트는 SIGTERM 신호가 전송되지 않으면 'date' 명령을 천 번 실행하는 'for' 루프입니다.

Bash 스크립트를 실행할 때 다음을 눌러 SIGTERM 신호를 보낼 수 있습니다. Ctrl + Z 키보드 키. 'trap' 명령은 전송된 신호를 캡처하고 'for' 루프는 실행을 종료합니다. 실행 중인 작업이 SIGTERM 신호를 수신하고 중지되었음을 확인하는 출력이 표시됩니다.

이것이 Bash에서 SIGTERM을 보내고 받는 방법입니다.

결론

작업이나 프로그램을 실행할 때 다른 목표를 달성하기 위해 다른 신호를 보낼 수 있습니다. 프로그램을 부드럽게 중지하기 위해 SIGTERM이 전송됩니다. Python의 경우 신호를 잡기 위해 신호 처리기가 필요하며 'kill' 명령을 사용하여 SIGTERM을 보낼 수 있습니다. Bash에서 'trap' 명령과 키보드 키를 사용하여 SIGTERM 신호를 캡처하고 보낼 수 있습니다. 이 게시물에서는 이를 달성하는 방법에 대한 다양한 예를 자세히 설명했습니다.