프로필사진
DevOps 부트캠프 기록일지
DevOps_04_김재환
05_Study(kill, jobs)
05_Study(kill, jobs)

2023. 3. 13. 13:19부트캠프/DevOps (TIL)

kill

 

터미널에서 프로그램이 실행되고 있을 때, Ctrl + c 을 통해 프로세스를 종료시켜 본 적이 있을 겁니다. Ctrl + c 키를 눌렀을 때, 프로그램을 종료하기 이벤트가 발생을 하게 되고, 이러한 이벤트를 프로세스에 전달하는 과정이 필요합니다. 이 때, 종료라는 이벤트를 프로세스에 알려주기 위해서 사용하는 것을 시그널(Signal)이라고 합니다.

이렇게 특정 프로세스에 작업 중지, 실행 종료, 대기, 재시작, 강제 종료 등의 시그널을 전달하기 위해서 kill 명령을 사용합니다. kill -l 명령을 사용하면, 사용할 수 있는 시그널의 종류를 확인 할 수 있습니다.

주로 사용하는 시그널은 다음과 같습니다.

  1. SIGHUP : 재시작할 때 사용
  2. SIGINT : 실행 중지 시그널, Ctrl + c
  3. SIGKILL : 프로세스 강제 종료
  4. SIGTERM : 프로세스 정상종료 (기본 명령)
  5. SIGCONT : 정지된 프로세스 실행
  6. SIGSTOP : 터미널에서 입력되는 정지 시그널
  7. SIGTSTP : 실행 정지 후 재실행 대기, Ctrl+ z

위의 시그널을 이용해 kill 명령을 사용하기 위해서는 다음과 같이 명령을 작성하면 됩니다.

kill -시그널번호(시그널명) %작업번호
kill -시그널번호(시그널명) PID

jobs

 

백그라운드에서 수행 중인 프로세스는 jobs 명령으로 확인할 수 있습니다.

아래의 터미널에 sample이라는 이름의 쉘 스크립트를 편집하기위해 vim 프로그램을 백그라운드에서 실행하고, sample2.sh도 연달아 백그라운드에서 실행해보도록 하겠습니다. 그리고 jobs 명령을 사용하면 현재 백그라운드에서 실행되고 있는 2개의 프로세스를 확인할 수 있습니다.

[1] 혹은 [2] 라고 되어 있는 기호는 작업 번호를 이야기 합니다. 더불어 + 기호로 표시된 프로세스는 현재 처리되고 있는 작업을 의미하며, - 기호는 다음에 작업할 프로세스를 의미합니다.

그 뿐만 아니라 jobs 명령을 통해 프로세스의 상태도 확인할 수 있습니다.

프로세스의 상태

  • Running : 실행 중
  • Stopped : 일시 중단(Ctrl + Z 입력)
  • Terminated : 강제 종료(kill 명령 종료)
  • Done : 정상 종료

다수의 프로세스가 백그라운드에서 작업하는 도중에 필요하다면, fg %작업번호 명령을 사용하여 포그라운드로 전환할 수 있습니다.

 

 

출처

https://docs.oracle.com/cd/E24846_01/html/E23088/spprocess-1.html#spprocess-12