/usr/bin/kill -L
인쇄:
1 HUP 2 INT 3 QUIT 4 ILL 5 TRAP 6 ABRT 6 IOT 7 BUS 8 FPE 9 KILL 10 USR1
11 SEGV 12 USR2 13 PIPE 14 ALRM 15 TERM 16 STKFLT 17 CHLD 17 CLD 18 CONT 19 STOP 20 TSTP
21 TTIN 22 TTOU 23 URG 24 XCPU 25 XFSZ 26 VTALRM 27 PROF 28 WINCH 29 IO 29 POLL 30 PWR
31 SYS 34 RTMIN 64 RTMAX
이제 sed를 사용하여 신호 수에 따라 "11 SEGV", "12 USR2" 또는 "SEGV", "USR2"를 인쇄할 수 있기를 원합니다(두 솔루션 모두 작동함).
저는 이렇게 했습니다 /usr/bin/kill -L|sed -n "s/\(^\| \)11 \([^ ]\+\)\+/<<\2>>/;s/.*<<\([^>]\+\)>>.*/\1/p"
. "SEGV"가 11로 출력됩니다.
그러나 문제는 두 번째 교체 없이 더 간단하게 수행할 수 있느냐는 것입니다.
답변1
너할 수 있다달리기
/usr/bin/kill -L | grep -o '[0-9]\+ [A-Z0-9]\+'
개행문자로 신호를 분리하고 쉽게 grep
사용하세요 grep -w "^$NUM"
.
또는 사용하기 더 쉽습니다 kill -l "$NUM"
;-)
$ kill -l 11
SEGV