나는 kill 명령의 출력을 가져와서 파일로 인쇄하는 간단한 스크립트를 실행하고 있습니다. 그러나 더 나은/더 깊은 또는 더 흥미로운 결과를 얻으려고 노력하는 동안 나는 다음 명령을 깨달았습니다.
kill -l
명령과 다른 출력을 제공합니다.
sudo kill -l
내 생각에 sudo 권한을 부여한다는 것은 일반적으로 더 많은 정보에 액세스하거나 더 많은 정보를 볼 수 있다는 것을 의미한다고 생각합니다(더 많은 권한과 모든 것을 부여하기 때문입니다). 그러나 이 경우에는 거의 완전히 다른 출력이 얻어지는 것 같습니다.
누군가가 두 번째 명령의 출력을 설명하고 그것이 어떻게/왜 다른 출력을 생성하는지에 대해 밝힐 수 있기를 바랍니다. 후속 질문은 이 기능이 kill 명령에 고유한지 또는 누군가가 그러한 출력을 제공하는 추가 명령을 접했는지 여부입니다.
kill -l
vs의 출력sudo kill -l
anant@anant-VirtualBox:~$ 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
anant@anant-VirtualBox:~$ sudo kill -l
[sudo] password for anant:
HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT
CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS
anant@anant-VirtualBox:~$
답변1
$ type kill
kill is a shell builtin
Run은 kill -l
내장된 셸 버전을 실행하기만 하면 됩니다. 그러나 sudo
해당 명령은 셸을 통해 실행되지 않으므로 sudo kill -l
대신 find를 통해 실행됩니다. 본질적으로 동일한 유틸리티의 두 가지 다른 구현은 약간 다릅니다./bin/kill
$PATH
-l
쉘 내장 구현과 외부 구현이 있는 유틸리티를 사용하여 비슷한 결과를 얻을 수 있습니다. 많지는 않습니다. echo
그러나 printf
Bash의 내장 버전은 최소한 다음 사항을 제외하면 GNU coreutils의 버전과 유사합니다.
$ echo --help # Bash
--help
$ /bin/echo --help # coreutils
Usage: /bin/echo [SHORT-OPTION]... [STRING]...
or: /bin/echo LONG-OPTION
Echo the STRING(s) to standard output.
...
printf --help
( 다른 텍스트가 있는 두 가지도 있습니다 .)
쉘에 내장 버전이 있는 주된 이유 kill
는 프로세스 제한에 도달하면 다른 프로세스를 종료하기 위해 새 프로세스를 시작할 수 없기 때문입니다.