Bash Shell Script 에서 리눅스의 *시그널을 제어하는 방법 입니다.
* 시그널 이란? 간단히 말하자면 특정 이벤트가 발생 했을때 신호를 보내 알려주는걸 뜻 합니다.
대표적인 예로 리눅스의 Ctrl+C , Ctrl+Z 를 눌러서 프로그램을 종료 또는 중지를 한다던가, 윈도우에서 Alt+F4 를 눌러서 종료한 적이 있을텐데, 이렇게 특정 입력이 들어 올 때 인터럽트가 발생하여 프로그램을 제어하게 됩니다.
리눅스의 시그널은 아래 표를 참고해주세요. |
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1 64) SIGRTMAX |
trap 명령어를 이용하여 배쉬 쉘 스크립트에서 시그널을 중간에 가로채서, 시그널에 해당하는 행동을 하지 못하게 막을 수 있습니다. 보통 스크립트를 제작한 후, 이 스크립트가 실행되는 도중에 Ctrl+C를 입력받지 않도록 할 경우에 사용 됩니다
우선, Ctrl+C를 재대로 막는지 확인하기 위해 간단한 무한루프 스크립트를 입력하도록 합시다.
코드 #!/bin/bash |
실행 결과 |
위 코드를 입력하고 실행하게 되면 3초마다 "Infinite loop!!" 가 출력되며 무한루프로 동작하기 때문에 아무리 기다려도 스크립트가 종료되지 않습니다. Ctrl+C를 누른 후 빠져나와 주세요.
그럼 이번에도 아래 코드를 입력 후 실행한 뒤 Ctrl+C를 눌러봅시다.
코드 #!/bin/bash |
실행 결과 |
이번엔 Ctrl+C를 눌렀더니 Failed 가 출력됩니다.
trap "echo 'Failed'" SIGINT 로 Ctrl+C의 시그널인 SIGINT가 재대로 동작되지 않게 설정 해보았습니다.
위와 같이 스크립트 내에서 trap 명령어를 이용하여 시그널의 동작을 제어할 수 있습니다.
* Ctrl+C 로 못빠져 나오시는 분들은 Ctrl+Z 눌러서 중지시킨 후 아래 이미지를 따라하여 종료 시키시면 됩니다.
'Programming > Bash Shell Script' 카테고리의 다른 글
[Bash Shell Script] 쉘 스크립트 랜덤 문자열, 난수 생성(랜덤 숫자) (2) | 2020.02.10 |
---|---|
[Bash Shell Script] 쉘 스크립트 if조건문 라인에서의 "[: too many arguments" 에러 발생 (0) | 2019.12.17 |
[Bash Shell Script] 로그 추출, 정리 쉘 스크립트 예제 (0) | 2019.12.17 |
[Bash Shell Script] 백업 용량 변동 출력 쉘 스크립트 예제 (1) | 2019.12.12 |
[Bash Shell Script] DNS 도메인/호스트 추가 자동화 쉘 스크립트 예제 (0) | 2019.12.12 |