티스토리 뷰

찾아 본 자료

signal 정리

xaida 2020. 3. 3. 15:16

signal과 event

1-1. kill은 용도에 맞지 않게 이름이 지어짐.

1-2. kill이 실행되면 signal을 프로세스에게 보냄.

1-3. signal은 software interrupt의 일종으로 어떤 event가 발생했음을 프로세스에게 알려주는 매커니즘.

1-4. 리눅스의 목록은 /usr/include/singal.h에 정의 되어있고, kill -l로도 전체 시그널 목록 확인 가능.

1-4 시그널 목록 확인 ( 숫자와 의미는 POSIX에 정의 되어 있음 )

signal handler

2-1. signal 발생은 비동기 작업이며, 개발자는 프로그램을 특정 시그널을 수신했을 때 실행되기를 바라는 함수를 등록가능.

2-2. signal handler를 지정하지 않았을 경우 커널에 기본 정의된 액션을 실행하고, 기본 액션은 시그널의 종류에 따라 다름.

action 기본동작
TERM 시그널을 수신한 프로세스 종료
IGN 시그널 무시
CORE 시그널을 수신한 프로세스를 종료하면서 코어 덤프 파일 생성
STOP 시그널을 수신한 프로세스 중지
CONT 중지된 프로세스 재시작

 

kill -9를 쓰면 안되는 이유

3-1. kill -9로 signal을 보내면 개발자가 구현한 종료 함수가 호출되지 않고 즉시 프로세스가 종료되어 버리므로 데이터가 유실되거나 리소스가 제대로 안닫히는 큰 문제 발생 가능.

3-2. kill -TERM PID 나 kill -INT PID같이 종료를 의미하는 signal을 여러번 전송해 주는 것을 추천

 

signal LIST

 Signal Name

 Number

 Description

 SIGHUP

 1

 Hangup (POSIX)

 SIGINT

 2

 Terminal interrupt (ANSI)

 SIGQUIT

 3

 Terminal quit (POSIX)

 SIGILL

 4

 Illegal instruction (ANSI)

 SIGTRAP

 5

 Trace trap (POSIX)

 SIGIOT

 6

 IOT Trap (4.2 BSD)

 SIGBUS

 7

 BUS error (4.2 BSD)

 SIGFPE

 8

 Floating point exception (ANSI)

 SIGKILL

 9

 Kill(can't be caught or ignored) (POSIX)

 SIGUSR1

 10

 User defined signal 1 (POSIX)

 SIGSEGV

 11

 Invalid memory segment access (ANSI)

 SIGUSR2

 12

 User defined signal 2 (POSIX)

 SIGPIPE

 13

 Write on a pipe with no reader, Broken pipe (POSIX)

 SIGALRM

 14

 Alarm clock (POSIX)

 SIGTERM

 15

 Termination (ANSI)

 SIGSTKFLT

 16

 Stack fault

 SIGCHLD

 17

 Child process has stopped or exited, changed (POSIX)

 SIGCONT

 18

 Continue executing, if stopped (POSIX)

 SIGSTOP

 19

 Stop executing(can't be caught or ignored) (POSIX)

 SIGTSTP

 20

 Terminal stop signal (POSIX)

 SIGTTIN

 21

 Background process trying to read, from TTY (POSIX)

 SIGTTOU

 22

 Background process trying to write, to TTY (POSIX)

 SIGURG

 23

 Urgent condition on socket (4.2 BSD)

 SIGXCPU

 24

 CPU limit exceeded (4.2 BSD)

 SIGXFSZ

 25

 File size limit exceeded (4.2 BSD)

 SIGVTALRM

 26

 Virtual alarm clock (4.2 BSD)

 SIGPROF

 27

 Profiling alarm clock (4.2 BSD)

 SIGWINCH

 28

 Window size change (4.3 BSD, Sun)

 SIGIO

 29

 I/O now possible (4.2 BSD)

 SIGPWR

 30

 Power failure restart (System V)

 

 

참고 : https://www.lesstif.com/pages/viewpage.action?pageId=12943674

 

Unix, Linux 에서 kill 명령어로 안전하게 프로세스 종료 시키는 방법

시스템 작업하던 직원이 java 관련 프로세스 종료를 kill -9 로 하는 것을 보고 왜 이렇게 하는지 물어보니 "프로세스 종료시 이렇게 하는 게 아닌가요?" 라는 답변이 돌아왔습니다.

www.lesstif.com

참고 : https://shaeod.tistory.com/463

 

[리눅스] Signals 정리

※요약 Signal은 Unix/Linux에서 커널이나 프로세스가 다른 프로세스에게 비동기적인 사건을 알려주거나 시간을 동기화 시키기 위해 사용한다. signal을 받은 프로세스는 보통 3가지 작업을 할 수 있다. 프로세스..

shaeod.tistory.com

 

'찾아 본 자료' 카테고리의 다른 글

PIP 신뢰할 수 없는 SSL인증서 해결방법  (0) 2019.11.04
zeroMQ install  (0) 2019.11.01
배달의민족] 대규모 채용 기념 할인쿠폰  (0) 2018.05.05
openssl 인증서 정보 확인  (0) 2018.04.04
MySQL 컴파일 설치  (0) 2018.03.19
공지사항
최근에 올라온 글
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30