0

I was running a simple script that would take the output of the kill command and print it onto a file. However, while experimenting for better/more in depth or interesting results, I realized that the command,

kill -l

gives a different output from the command,

sudo kill -l

I thought providing sudo privileges meant that you would typically be able to access/view more information (since it grants more permission and everything). However, it seems that in this case, an almost entirely different output is obtained.

I was hoping somebody could explain the output of the second command, and also shed some light on how/why a different output is produced. A follow up question is is this feature exclusive to the kill command or if somebody has come across more commands that give outputs like this.

Output for 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:~$
3
  • Few signals (called by kill command) can only be called with root privileges ; this is simply that . You should list signals & roles from : man 7 signals – francois P Sep 16 '19 at 17:35
  • 6
    You are running the kill that is built into your shell in the first instance, while you run the external command kill (possibly /bin/kill) with sudo. Is this the answer to your question, or are you wondering what the output of built-in version actually means? What shell are you using? Also consider including the output in the actual question, as text. – Kusalananda Sep 16 '19 at 17:40
  • 1
0
$ type kill
kill is a shell builtin

Running just kill -l runs the shell's builtin version of it. But sudo doesn't run its commands through a shell, so sudo kill -l runs /bin/kill found through $PATH instead. Two different implementations of essentially the same utility, and they just have a slightly different output format for -l.

You could get a similar result with any utility that has a shell builtin implementation, and an external one. There just aren't many of them. echo and printf come to mind, but Bash's builtin versions are similar to the ones in GNU coreutils, at least apart from this:

$ 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.
...

(Both also have printf --help, with different texts.)

The reason the shell has a builtin version of kill is mostly that if you hit a limit on the number of processes, you can't start a new process to terminate the others.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.