Поиск по сайту:

Команда killall в Linux для начинающих (8 примеров)


На этой странице

  1. Команда killall в Linux
  2. Q1. Как использовать команду killall?
  3. Вопрос 2. Является ли killall чувствительным к регистру?
  4. Вопрос 3. Как заставить killall спрашивать перед завершением процесса?
  5. Q4. Как выбрать сигнал, который killall посылает процессу?
  6. В5. Как предотвратить жалобу killall, если указанный процесс не существует?
  7. Q6. Как убить все процессы, принадлежащие пользователю?
  8. Q7. Как убивать процессы по времени?
  9. Q8. Как убедиться, что killall возвращается только после смерти процессов?
  10. Заключение

Мы уже обсуждали команду kill Linux, которую вы можете использовать, если хотите завершить процессы в Linux. Однако существует еще одна утилита командной строки, которую вы можете использовать для той же цели: killall. В этом уроке мы обсудим основы этой команды, используя несколько простых для понимания примеров.

Но прежде чем мы это сделаем, стоит упомянуть, что все примеры, включенные в этот учебник, были протестированы на Ubuntu 22.04 LTS.

команда killall в линуксе

Команда killall позволяет вам убивать процессы по имени. Ниже приведен синтаксис инструментов:

killall [OPTIONS] name

А вот как справочная страница объясняет этот инструмент:

killall sends a signal to all processes running any of the specified commands. If no signal name is specified, SIGTERM is sent. Signals can be specified either by name (e.g.  -HUP or -SIGHUP) or by number (e.g.  -1) or by option -s.

If  the command name is not regular expression (option -r) and contains a slash (/), processes executing that particular file will be  selected for killing, independent of their name.

killall returns a zero return code if at least one process has been killed for each listed command, or no commands were listed and at least one process matched the -u and -Z search criteria. killall returns non-zero otherwise.

A killall process never kills itself (but may kill other  killall  processes).

Следующие примеры в стиле вопросов и ответов должны дать вам лучшее представление о том, как работает команда killall.

Q1. Как использовать команду killall?

Основное использование инструментов очень простое - все, что вам нужно сделать, это передать имя процесса в качестве аргумента для killall. Например, чтобы убить процесс gthumb, запущенный в моей системе, я использовал команду killall следующим образом:

killall gthumb

Обратите внимание: если вы не знаете точное имя процесса, вы можете использовать команду ps для получения этой информации.

Q2. Является ли killall чувствительным к регистру?

Да, это так. Он выдает ошибку «процесс не найден», если пользователь не может написать имя процесса в правильном регистре. Ниже приведен пример:

Однако, если вы хотите, вы можете заставить killall игнорировать регистр, используя параметр командной строки -I.

Q3. Как заставить killall спрашивать перед завершением процесса?

Предположим, вы хотите, чтобы команда killall запрашивала разрешения пользователя перед тем, как завершить процесс, тогда вы можете использовать параметр командной строки -i. Это сделает операцию killall интерактивной.

Например:

Q4. Как выбрать сигнал, который killall посылает процессу?

По умолчанию это сигнал SIGTERM, который killall отправляет процессам. Однако вы можете отправлять и другие сигналы. Вы можете использовать параметры -s, --signal и -SIGNAL для отправки этих других сигналов.

Однако, чтобы это работало, вам нужно знать, какие все сигналы может отправить команда killall. Это можно сделать с помощью параметра командной строки -l.

killall -l

Ниже приведен список, созданный вышеупомянутой командой в нашей системе:

Q5. Как предотвратить жалобу killall, если указанный процесс не существует?

Если процесс, имя которого передано killall, не запущен (не существует), то инструмент передает это пользователю в выводе.

Однако, если вы не хотите, чтобы инструмент выдавал такой вывод, вы можете использовать параметр командной строки -q.

Таким образом, вы можете видеть, что команда killall оставалась тихой, когда использовалась опция -q.

Q6. Как убить все процессы, принадлежащие пользователю?

Если требуется убить все процессы, которыми владеет конкретный пользователь, вы можете использовать параметр -u, предоставляемый killall. Излишне говорить, что эта опция требует, чтобы вы указали имя пользователя в качестве входных данных.

killall -u [user-name]

Например:

killall -u himanshu

Q7. Как убивать процессы по времени?

Предположим, вы хотите убить все процессы, которые сейчас работают более 5 часов, тогда вы можете сделать это с помощью опции -o следующим образом:

killall -o 5h

Конечно, вы можете указать имена процессов, если не хотите убивать все процессы. Точно так же, если вы хотите убить процессы, которым, скажем, менее 4 часов, вы можете сделать это с помощью параметра командной строки -y.

killall -y 4h

Вот как справочная страница объясняет эти параметры:

-o, --older-than
              Match only processes that are older (started  before)  the  time
              specified.   The  time is specified as a float then a unit.  The
              units are  s,m,h,d,w,M,y  for  seconds,  minutes,  hours,  days,
              weeks, Months and years respectively.

 -y, --younger-than
              Match  only  processes that are younger (started after) the time
              specified.  The time is specified as a float then a  unit.   The
              units  are  s,m,h,d,w,M,y  for  seconds,  minutes,  hours, days,
              weeks, Months and years respectively.

Q8. Как убедиться, что killall возвращается только после смерти процессов?

После того, как killall доставит сигнал процессу, если вы хотите убедиться, что команда возвращается только после того, как процесс умирает, вы можете сделать это с помощью параметра командной строки -w, который заставляет killall ждать.

killall -w [process-name]

Вот как man-страница описывает эту опцию:

-w, --wait
              Wait  for  all killed processes to die.  killall checks once per
              second if any of the  killed  processes  still  exist  and  only
              returns if none are left.  Note that killall may wait forever if
              the signal was ignored, had no effect, or if the  process  stays
              in zombie state.

Заключение

Killall не может быть легкой прогулкой для новичков, но это также не очень сложно. Вам нужно попрактиковаться в параметрах командной строки, которые он предлагает. Мы обсудили большинство из них, поэтому этот урок должен стать хорошей отправной точкой. Как только вы закончите с ними, вы можете прочитать больше о команде, перейдя на ее справочную страницу.