linux kill 명령 및 USR 1 신호 해석

4092 단어 linux기초
다음은 nginx 로그 파일 절단 계획 작업 입 니 다.
[root@proxy ~]# vim /usr/local/nginx/logbak.sh
#!/bin/bash
date=`date +%Y%m%d`
logpath=/usr/local/nginx/logs
if [ -f $logpath/nginx.pid ];then
  mv $logpath/access.log $logpath/access-$date.log
  mv $logpath/error.log $logpath/error-$date.log
  kill -USR1 $(cat $logpath/nginx.pid)
fi

[root@proxy ~]# crontab -e
03 03 * * 5  /usr/local/nginx/logbak.sh

  우리 먼저 보 자. kill - USR 1 $(cat $logpath / nginx. pid) 이 명령 은 무엇 을 했 습 니까?
   1. 먼저 / usr / local / nginx / logs / nginx. pid 파일 은 nginx 의 pid 번 호 를 저장 하고 있 습 니 다. nginx 프로그램 을 시작 할 때 이 파일 이 자동 으로 생 성 됩 니 다. nginx 프로그램 을 닫 으 면 이 nginx. pid 파일 이 사라 집 니 다.
[root@proxy ~]# ss -antulp | grep nginx
tcp    LISTEN     0      128       *:80                    *:*                   users:(("nginx",pid=3960,fd=6),("nginx",pid=3959,fd=6),("nginx",pid=3958,fd=6))

[root@proxy ~]# cat /usr/local/nginx/logs/nginx.pid 
3958

##################################################################

[root@proxy ~]# nginx -s stop

[root@proxy ~]# cat /usr/local/nginx/logs/nginx.pid 
cat: /usr/local/nginx/logs/nginx.pid:          

2  $(cat $logpath / nginx. pid) 는 'cat $logpath / nginx. pid' 와 비슷 합 니 다. nginx 의 프로 세 스 pid 번 호 를 받 았 습 니 다. 저 는 3958 입 니 다.
   그러면 전체 명령 은: kill - USR 1 3958  
   -USR 1 은 무엇 을 대표 합 니까? 우 리 는 이어서 아래 를 봅 시다.
[root@proxy ~]# 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	

Liux 시스템 에서 Liux 는 신 호 를 통 해 '실행 중인 프로 세 스' 와 통신 합 니 다.Liux 시스템 에 도 자주 사용 하 는 SIGHOP, SIGKILL, SIGSTOP 등 미리 정 의 된 신호 가 많 습 니 다.
USR 1 에 대응 하 는 숫자 옵션 은 - 10 입 니 다. 그러면 nginx 는 USR 1 의 신 호 를 받 은 후에 무엇 을 했 습 니까?
(1) nginx 의 주 프로 세 스 는 USR 1 신 호 를 받 으 면 로그 파일 을 다시 엽 니 다. (nginx 설정 파일 의 로그 이름 으로 설정 파일 에 access log 항목 이 설정 한 값 입 니 다. 파일 이 존재 하지 않 으 면 자동 으로 새 파일 xxx. log 를 만 듭 니 다.) 
[root@proxy ~]# /usr/local/nginx/logbak.sh
[root@proxy ~]# ls /usr/local/nginx/logs/
access-20181103.log  access.log  error-20181103.log  error.log  nginx.pid
#      

(2) 그리고 로그 파일 의 소유 자 를 '워 크 프로 세 스 (worker 프로 세 스)' 로 바 꿉 니 다. 워 크 프로 세 스 가 로그 파일 에 대한 읽 기와 쓰기 권한 을 갖 도록 하기 위해 서 입 니 다. (master 와 worker 는 보통 다른 사용자 로 실행 되 기 때문에 소유 자 를 바 꿔 야 합 니 다.) 
[root@proxy ~]# ll /usr/local/nginx/logs/access.log 
-rw-r--r--. 1 nginx root 0 11   3 13:25 /usr/local/nginx/logs/access.log


[root@proxy ~]# ll /usr/local/nginx/logs/access-20181103.log 
-rw-r--r--. 1 root root 204608511 11   3 10:44 /usr/local/nginx/logs/access-20181103.log

##                

 
(3) nginx 메 인 프로 세 스 는 이름 을 바 꾸 는 로그 파일 을 닫 습 니 다.구체 적 으로 더 세분 화 된 점 은 메 인 프로 세 스 가 USR 1 신 호 를 워 커 에 게 보 내 고 워 커 가 이 신 호 를 받 으 면 로그 파일 을 다시 엽 니 다 (즉, 설정 파일 에 약 정 된 xxx. log).
 
3 위의 kill - l 명령 을 결합 하여 보충 합 니 다.
9 번 째 신호 (SIGKILL) 만 이 프로 세 스 를 무조건 종료 할 수 있 고 다른 신호 프로 세 스 는 무시 할 권리 가 있 습 니 다.다음은 자주 사용 하 는 신호 입 니 다.
HUP    1    터미널 단선, 프로필 다시 불 러 오기, 부 드 러 운 업그레이드
INT     2    인 터 럽 트 (Ctrl + C)
QUIT    3    종료 (Ctrl + \)
TERM   15    종료 (kill 명령 후 프로 세 스 를 직접 추가 하 는 pid 번호 의 기본 옵션 이 - 15 이면 이 프로 세 스 를 종료 하 는 것 을 의미 합 니 다)
KILL    9    강제 종료
CONT   18    계속 (STOP 와 반대로 fg / bg 명령)
STOP    19    일시 정지 (Ctrl + Z)

좋은 웹페이지 즐겨찾기