검색 엔진의 방문이 늘어나고 있군...

Posted
Filed under 시스템
참조 원문 : Understanding Signals

  시그널이란 실행 중인 프로세스에 발생하는 비동기 이벤트이며 소프트웨어, 하드웨어, 사용자에 의해 발생합니다. 시그널은 미리 정해진 의미를 가진 정수로 표현됩니다. 프로세스가 시그널을 받으면 그에 대한 응답을 해야 하며 그렇지 않을 경우 일반적으로 해당 프로세스는 종료 당합니다. 'kill -l'이나 'trap -l' 명령어를 통해 사용 가능한 시그널 목록을 볼 수 있습니다.
$ kill -l
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
  아래는 상대적으로 자주 사용되는 시그널들입니다.
  • HUP : 2가지 용도로 사용됩니다. 먼저 데몬에게 리셋 시그널을 보내 데몬이 설정 정보를 다시 읽게 만들 때 사용되며, 터미널 드라이버가 터미널과 관련된 프로세스들을 정리(clean up)하려고 할 때도 사용됩니다.
  • INT : 터미널 드라이버가 현존하는 작업(existing operation)을 종료시킬 때 사용합니다.
  • TERM : 실행을 종료하고 정리(clean up)한 후 빠져나갑니다.
  • TSTP : 키보드에서 CTRL+Z를 누를 때 발생하며 프로그램에게 상태를 정리(clean up)하게 한 후 STOP 시그널을 보냅니다.
  • CONT : STOP 시그널로 멈춘 프로세스를 다시 작동하게 만듭니다.
  때에 따라 끝도 없이 실행되고 있거나 문제를 일으키는 프로세스가 있을 때가 있는데 이럴 때 해당 프로세스들을 멈추는 방법을 알아야 합니다. 프로세스에게 시그널을 보낼 때는 kill 명령어를 사용합니다.
kill [-signal] process_identifier (PID)
  참고로 시그널은 숫자로 사용할 수도 있고 상징적인 이름으로 사용할 수도 있습니다. kill 명령어를 사용하는 가장 좋은 방법은 kill 뒤에 PID를 적는 겁니다.
kill 4578
  죽이려는 프로세스의 PID는 top이나 ps 명령어를 통해 확인이 가능합니다. 위와 동일한 효과를 내는 또 다른 방법은 '-15'를 사용하는 겁니다.
kill -15 4578
  kill 명령어는 기본적으로 '-15'를 사용하기 때문에 'kill 4578'은 'kill -15 4578'과 동일합니다. '-15'는 프로세스에게 마치 사용자가 로그 아웃을 했을 때처럼 작동을 멈추라고 알리는 시그널입니다. 이 방법의 장점은 해당 프로세스의 자식 프로세스도 함께 죽인다는 겁니다.

  차선책으로 '-9'를 사용하는 방법이 있습니다. 이것은 프로세스를 강제로 죽이는 시그널입니다.


2011/01/03 14:02 2011/01/03 14:02