본문 바로가기
CS/Shell scripts

[bash] 스크립트 에서 signal 캐치하는 방법

by Warehaus 2021. 8. 1.

업무할때 자주 쓰는데도 불구하고 자꾸만 까먹어서 정리한다.

bash script 에서는 trap 을 이용해서 signal을 가로챌 수 있다.

다만 여기서, SIGKILL 은 가로채는 동작이 불가능 함을 미리 알린다.

// 아래처럼 trap을 걸면 된다.
trap 'action' 1 2 3
trap 'action' SIGINT
trap 'action' SIGTERM SIGINT

 

스크립트 예시를 하나 만들어 보자. sigint 시그널이 왔을 때 프로그램을 종료하는 스크립트 이다.

#!/bin/bash

function sigint()
{
    echo "SIGINT function!"
    exit 0
}

trap sigint SIGINT

while [ 1 ]
do
    echo "I'm in a loop .."
    sleep 10
done

 

아래처럼 sigint 함수가 호출되어 종료 되는 것을 볼 수 있다.

$ ./210801.sh 
I'm in a loop .. // ctrl + c
SIGINT function!