Ill
Иногда что-то не так происходит с программами и возникает необходимость восстановить порядок в системе. Программа, предоставляющая такой вид услуг, называется kill(1). Она может быть использована для манипулирования процессами несколькими разными способами. Наиболее часто программа применяется, чтобы убивать процессы. У вас появится необходимость в этом, если программа вышла из под контроля и забирает много системных ресурсов, или если вам просто не нравится, что эта программа осталась в памяти.
Для того, чтобы убить процесс, вам надо знать либо его PID, либо имя. Чтобы получить PID воспользуйтесь программой ps, как это обсуждалось в предыдущем разделе. Например, чтобы убить процесс 4747, вы зададите такую команду:
$ kill 4747 |
Для того, чтобы убить процесс, вам надо быть его хозяином. Это сделано в целях безопасности. Если бы вы могли убивать процессы других пользователей, открылась бы возможность произведения множества злонамеренных вещей в системе. Разумеется, root может убить любой процесс в системе.
Есть так же другая разновидность программы kill, которая называется
killall(1). Функция программы соответствует её названию. Она убивает все из запущенных программ, с указанным именем. Если вы хотите убить все выполняемые vim процессы, вам следует воспользоваться такой командой:
$ killall vim |
Все vim процессы, выполняемые вами будут убиты. Если вы выполните команду, как root, то она убьёт вообще все vim процессы, выполняемые любым из пользователей. Это предоставляет интересный способ выбрасывания всех (включая и вас) из системы:
#killall bash |
Иногда обычное выполнение kill не справляется с поставленной задачей. Некоторые процессы не могут быть убиты обычной командой kill. Вам понадобиться воспользоваться более мощной версией. Если этот нудный процесс с PID4747 не умер после выполнения kill, вы можете попробовать следующее:
$ kill -9 4747 |
Практически наверняка, это заставит процесс 4747 умереть. Вы можете воспользоваться этим же ключом с killall программой. Этот ключ позволяет посылать различные сигналы программам. Обычный kill посылает процессу сигнал SIGTERM (terminate - завершиться). kill -9 посылает SIGKILL (kill - убить). В вашем распоряжении целый набор различных сигналов. Вы можете запросить список, выполнив:
$ 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 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 |
$ killall -KILL vim |