본문 바로가기
IT개발자의 삶/Linux & Unix

리눅스 KILL 명령어와 시그널에 대해.

by 한님의밝음 2023. 7. 6.

1. KILL

리눅스에서 kill 명령은 프로세스를 종료하는 데 사용됩니다. kill 명령은 프로세스에 시그널(signal)을 보내어 프로세스 동작을 제어합니다. 프로세스는 시그널을 받으면 해당 시그널에 대한 동작을 수행하도록 프로그래밍되어 있습니다.

kill 명령은 주로 다음과 같은 형식으로 사용됩니다:

kill [옵션] [프로세스ID 또는 작업번호]


여기서 옵션은 kill 명령의 동작을 제어하는 데 사용되며, 프로세스ID 또는 작업번호는 종료할 프로세스를 식별하는 데 사용됩니다.

 

kill 명령을 사용하여 프로세스를 종료하면 종료된 프로세스에 대한 로그가 생성될 수 있습니다. 그러나 이 로그는 일반적으로 시스템 로그 파일에 기록되는 것이 아니라 프로세스 자체가 로그를 생성하도록 구성되어 있어야 합니다.

 

프로세스가 로그를 생성하도록 구성되어 있을 경우, 종료 시에 발생한 로그는 일반적으로 해당 프로세스의 작업 디렉토리나 지정된 로그 파일에 기록됩니다. 로그의 위치와 형식은 프로세스마다 다를 수 있으며, 프로세스의 문서나 설정 파일에서 확인할 수 있습니다.

또한, 리눅스 시스템에서는 시스템 이벤트와 관련된 로그를 기록하는 여러 시스템 로그 파일이 있습니다. 이러한 로그 파일은 시스템 관리자가 시스템 상태를 모니터링하고 문제를 진단하는 데 사용될 수 있습니다. 일반적으로 /var/log 디렉토리에 위치하며, 로그의 이름은 시스템 로그의 종류에 따라 다릅니다. 일반적으로 시스템 로그 파일에는 kill 명령으로 종료된 프로세스에 대한 정보가 포함되지 않습니다. 그러나 다른 프로세스 관련 정보나 시그널 관련 정보는 시스템 로그 파일에 기록될 수 있습니다.

따라서, kill 명령으로 종료된 프로세스의 로그에 대한 상세한 정보를 확인하려면 해당 프로세스가 생성하는 로그 파일을 확인하거나 프로세스 문서 또는 설정 파일을 참조해야 합니다. 또는 프로세스가 종료될 때 기록되는 시스템 로그 파일을 검사하여 관련 정보를 찾을 수 있습니다.

 

2. 시그널
시그널은 프로세스에게 특정 이벤트를 알리는 데 사용되는 메시지입니다. 리눅스 시스템에서는 다양한 시그널이 정의되어 있으며, 각각의 시그널은 특정한 동작이나 동작 그룹을 나타냅니다. kill 명령은 시그널을 사용하여 프로세스에게 종료 신호를 보내는 데 활용됩니다.

리눅스에서 가장 일반적으로 사용되는 몇 가지 시그널을 살펴보겠습니다:

1) SIGKILL (시그널 번호: 9)
프로세스를 강제로 종료시키는 데 사용됩니다.
이 시그널을 받은 프로세스는 즉시 종료되며, 어떠한 처리도 할 수 없습니다.

 

2)SIGTERM (시그널 번호: 15)
프로세스에게 정상적인 종료를 요청하는 데 사용됩니다.
이 시그널을 받은 프로세스는 종료 절차를 수행하고 종료합니다.
일반적으로 kill 명령을 실행할 때 지정되지 않은 시그널은 SIGTERM이 기본값으로 사용됩니다.

 

3)SIGHUP (시그널 번호: 1)
터미널 세션이 종료되었음을 프로세스에게 알리는 데 사용됩니다.
주로 데몬 프로세스나 백그라운드에서 실행되는 프로세스에게 재시작을 요청하는 데 사용됩니다.

 

4)SIGINT (시그널 번호: 2)
인터럽트 신호로, 일반적으로 Ctrl+C 키 조합으로 발생시킵니다.
대화형 프로세스에게 사용자가 작업을 중지하라는 신호를 보냅니다.

 

5)SIGSTOP (시그널 번호: 19 또는 23)
프로세스를 일시 중지하는 데 사용됩니다.
프로세스는 중지되며, 다시 시작되기 전까지 실행이 중단됩니다.
시그널은 숫자로 식별되지만, 일부 시그널에는 일반적으로 사용되는 이름이 있습니다. 시그널 번호와 해당하는 이름은 kill -l 명령으로 확인할 수 있습니다. 예를 들어, kill -l 명령을 실행하면 시그널 번호와 이름의 목록을 확인할 수 있습니다.

시그널은 프로세스 간 통신에서도 사용될 수 있으며, 프로세스 간에 특정 동작을 알리기 위해 사용되기도 합니다.

'IT개발자의 삶 > Linux & Unix' 카테고리의 다른 글

Argument list too long 오류  (0) 2023.06.23