"-9" - прапор для вбивства команди?


Відповіді:


21

-9є номером сигналу (в даному випадку SIGKILL), тому kill -9надсилає a SIGKILLу відповідний процес.

Цей сигнал змушує процес негайно припинятися (якщо тільки він не чекає функції ядра). Сигнал не можна ні ігнорувати, ні процес прийому може виконувати будь-яку дію очищення після прийому сигналу (тобто обробник сигналу для SIGKILLне викликається). Дивіться також статтю у Вікіпедії про SIGKILL .

На головній сторінці моєї killкоманди (Linux):

   The  default  signal  for  kill is TERM. Use -l or -L to list available
   signals.  Particularly useful signals include  HUP,  INT,  KILL,  STOP,
   CONT,  and  0.   Alternate  signals  may be specified in three ways: -9
   -SIGKILL -KILL.

EDIT : kill -l( bashвбудована команда) перераховує наступні назви сигналів та числові значення в моїй системі:

 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

1
У kill -lсписках Debian також є числові значення. Яка ваша ОС?
Faheem Mitha

що цікаво, я запускаю Ubuntu (наскільки я знаю Debian). З іншого боку, я щойно помітив, що man killперераховує числові значення для деяких сигналів.
Андре Хольцнер

Ну, killє в procps, яка є версією 1:3.2.8-9в Debian стиску. І так, Ubuntu - це в основному Debian. Тож мені цікаво, чому kill -lне повертає те саме.
Faheem Mitha

1
виявляється, що я виконував zshвбудовану killкоманду, а не /bin/kill(яка насправді перераховує числові значення, як ви говорите)
Андре Хольцнер,

5
@FaheemMitha Є дві причини, чому снаряди потребують killвбудованого. Це дозволяє killкоманді приймати номери завдань або імена (наприклад kill %1). І це дозволяє killвикористовувати, навіть якщо досягнуто певної межі кількості процесів.
Жил "ТАК - перестань бути злим"

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.