링크 ux 의 trap 명령

trap 명령 은 신 호 를 받 은 후에 취 할 동작 을 지정 하 는 데 사 용 됩 니 다.흔히 볼 수 있 는 용 도 는 스 크 립 트 프로그램 이 중 단 될 때 청 소 를 완성 하 는 것 이다.그러나 이번에 제 가 이 를 만난 것 은 고객 이 필요 로 하기 때 문 입 니 다. 터미널 에서 서버 에 접근 한 사용 자 는 서버 에 로그 인 한 후에 특정한 명령 을 자동 으로 실행 합 니 다. 예 를 들 어 응용 프로그램 (명령 은 'bashrc 등 파일 에 쓰 임) 을 열 고 마지막 으로 종료 하고 연결 을 끊 습 니 다.이 기간 동안 Ctrl + C 등 을 사용 하여 프로그램 을 종료 하고 Shell 환경 으로 돌아 가 는 것 을 허용 할 수 없습니다. 그렇지 않 으 면 안전 문제 가 발생 할 수 있 습 니 다.    물론 응용 프로그램 에서 중단 신 호 를 차단 하고 chroot 방식 으로 접근 하 는 등 해결 방법 이 많다.그러나 이 방법 들 은 일부 제한 이 있 습 니 다. 예 를 들 어 응용 을 수정 하고 telnet 등 chroot 방식 (ssh 는 chroot 를 지원 할 수 있 습 니 다) 등 이 있 습 니 다.trap 을 사용 하 는 것 도 좋 은 해결 방법 이다.1. 신호 역사상 셸 은 항상 숫자 로 신 호 를 대표 합 니 다. 새로운 스 크 립 트 프로그램 은 신호 이름 을 사용 해 야 합 니 다.\# include 명령 으로 포 함 된 signal. h 헤더 파일 에 저장 되 어 있 습 니 다. 신호 이름 을 사용 할 때 SIG 접 두 사 를 생략 해 야 합 니 다.kill 과 trap 등 은 신호 번호 와 관련 된 이름 을 볼 수 있 습 니 다.'신호' 는 비동기 로 프로그램 에 보 내 는 사건 을 말한다.기본적으로 프로그램 실행 을 중지 합 니 다.
인용 하 다.
# trap -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     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
부록 에 설명 문서 가 하나 있다.2. trap 의 사용 1. 형식 trap 명령 을 실행 하 는 매개 변 수 는 두 부분 으로 나 뉘 는데 앞의 부분 은 지정 한 신 호 를 받 을 때 취 할 행동 이 고 뒤의 부분 은 처리 할 신호 이름 입 니 다.

  
  
  
  
  1. trap command signal 


그것 은 세 가지 형식 으로 각각 세 가지 서로 다른 신호 응답 방식 에 대응한다.첫 번 째 종류:

  
  
  
  
  1. trap "commands" signal-list 


스 크 립 트 가 signal - list 목록 에 표 시 된 신 호 를 받 았 을 때 trap 명령 은 더 블 따옴표 의 명령 을 실행 합 니 다.두 번 째:

  
  
  
  
  1. trap signal-list 

trap 은 명령 을 지정 하지 않 고 신 호 를 받 는 기본 동작 입 니 다. 기본 동작 은 프로 세 스 의 실행 을 끝 내 는 것 입 니 다.세 번 째:

  
  
  
  
  1. trap " " signal-list 

trap 명령 은 빈 명령 줄 을 지정 합 니 다. 신 호 를 무시 할 수 있 습 니 다. 우리 가 사용 하 는 것 은 바로 이것 입 니 다. ※스 크 립 트 프로그램 은 보통 위 에서 아래로 해석 되 어 실행 되 기 때문에 보호 하고 싶 은 코드 이전에 trap 명령 을 지정 해 야 한 다 는 것 을 기억 하 십시오.2. 테스트 는 사용자 의 요구 에 따라 HUP INT QUIT TSTP 의 몇 가지 신 호 를 차단 해 야 합 니 다.그래서 실행 가능:

  
  
  
  
  1. # trap "" HUP INT QUIT TSTP 

 
이 럴 때 지속 적 인 명령 을 열 고 실행 을 중단 할 수 있 습 니 다. 예 를 들 어:

  
  
  
  
  1. # tail -f /var/log/messages  

이 어 Ctrl + C 또는 Ctrl +\를 사용 하여 프로그램 이 종료 되 지 않 을 것 입 니 다.3. 복구 신호 복구 하려 면 Ctrl + Z 로 프로그램 을 백 엔 드 에 두 고 실행

  
  
  
  
  1. # trap : HUP INT QUIT TSTP 

그리고 ps - ef 로 PID 번 호 를 보고 bg 1 은 프로그램 을 계속 실행 시 키 고 마지막 으로 kill 로 죽 이면 됩 니 다.4. 다른 것 도 실행 해 보 세 요:

  
  
  
  
  1. # trap "echo 'Hello World' " HUP INT QUIT TSTP 

이렇게 하면 Ctrl + C 등 을 실행 할 때 echo 명령 이 자동 으로 실 행 됩 니 다. 결 과 는 실제 Hello World 문자열 입 니 다.
인용 하 다.
# tail -f/var/log/messages
May 18 16:57:54 192.168.228.153 dhcpd: DHCPREQUEST for 192.168.228.221 from 00:1d:72:92:d4:68 via eth0
May 18 16:57:54 192.168.228.153 dhcpd: DHCPACK on 192.168.228.221 to 00:1d:72:92:d4:68 via eth0
[root@mail ~]# Hello World
※ 이 방식 은 인 터 럽 트 를 차단 할 수 없습니다. Ctrl + C 등의 정 보 를 입력 한 후에 도 기본 동작 으로 작 동 합 니 다. 즉, 프로그램 을 종료 하면 추가 명령 만 실 행 됩 니 다.3. 부록 1. 인 터 럽 트 버튼 의 서로 다른 터미널 형식, Shell 버 전의 인 터 럽 트 버튼 이 다 르 고 심지어 사용자 정의 도 할 수 있 습 니 다. 이것 은 stty 명령 을 통 해 조회 할 수 있 습 니 다.
인용 하 다.
# stty -a
speed 38400 baud; rows 30; columns 111; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol =  ; eol2 =  ; start = ^Q; stop = ^S;
susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
↑ 가 Ctrl 의 줄 임 말이다.2. 신호 상세
인용 하 다.
명칭.      기본 동작            설명 하 다.
SIGHUP      프로 세 스 종료      단말 회선 차단
SIGINT    프로 세 스 종료      인 터 럽 트 프로 세 스
SIGQUIT   CORE 파일 만 들 기  프로 세 스 를 종료 하고 코어 파일 생 성
SIGILL    CORE 파일 만 들 기        불법 명령
SIGTRAP   CORE 파일 만 들 기        추적 자폭
SIGBUS    CORE 파일 만 들 기        버스 오류
SIGSEGV   CORE 파일 만 들 기        세그먼트 불법 오류
SIGFPE    CORE 파일 만 들 기        부동 소수점 이상
SIGIOT    CORE 파일 만 들 기        실행 I/O 자동 함몰
SIGKILL   프로 세 스 종료      프로 세 스 죽 이기
SIGPIPE   프로 세 스 종료      읽 기 프로 세 스 가 없 는 파이프 에 데 이 터 를 쓰기
SIGALARM  프로 세 스 종료      타이머
SIGTERM   프로 세 스 종료      소프트웨어 종료 신호
SIGSTOP   프로 세 스 정지      비 단말기 정지 신호
SIGTSTP   프로 세 스 정지      단말 정지 신호
SIGCONT   무시 신호      정 지 된 프로 세 스 를 계속 실행 합 니 다.
SIGURG    무시 신호      I/O 긴급 신호
SIGIO     무시 신호      설명자 에서 I/O 를 진행 할 수 있 습 니 다.
SIGCHLD   무시 신호      하위 프로 세 스 가 정지 되 거나 종료 되 었 을 때 부모 프로 세 스 에 알 립 니 다.
SIGTTOU   프로 세 스 정지      백그라운드 프로 세 스 쓰기 터미널
SIGTTIN   프로 세 스 정지      백 엔 드 프로 세 스 읽 기 터미널
SIGXGPU   프로 세 스 종료      CPU 시한 초과
SIGXFSZ   프로 세 스 종료      파일 길이 가 너무 깁 니 다.
SIGWINCH  무시 신호      창 크기 변경
SIGPROF   프로 세 스 종료      통계 분포 도 는 타이머 로 때 가 된다.
SIGUSR1   프로 세 스 종료      사용자 정의 신호 1
SIGUSR2   프로 세 스 종료      사용자 정의 신호 2
SIGVTALRM 프로 세 스 종료      가상 타이머
 
 
 

좋은 웹페이지 즐겨찾기