@rinaz22

Как работает killall -w в ubuntu?

Всем привет! Прочитал про killall, что можно завершить все процессы по названию. У данной команды есть еще ключ -w, который нужен чтобы не просто послать сигнал, но и подождать, пока все заданные процессы завершатся.
Подскажите пожалуйста, как это работает? В интернете не нашел конкретно с ключом -w.
У меня откуда-то висят процессы php-cgi, которые запустили почти час назад. Я бы хотел завершить подобные процессы, если они нигде не используются. Поможет ли команда killall -w php-cgi в данном случае? И чтобы не "убить" нужные процессы
  • Вопрос задан
  • 101 просмотр
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
$ man killall
...
killall sends a signal to all processes running any of the specified commands. If no signal
name is specified, SIGTERM is sent.
...
-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.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
saboteur_kiev
@saboteur_kiev Куратор тега Ubuntu
software engineer
Это не какая-то волшебная команда, которая умеет убивать процессы, это просто отправка SIGNAL, что есть часть архитектурного соглашения POSIX систем.

То есть команда killall пошлет всем указанным процессам указанный сигнал (или SIGTERM по умолчанию), а при указании -w будет ждать, пока все указанные процессы не завершатся, проверяя их наличие раз в секунду.
Если процессы зависли и не завершаются, killall будет ждать вечно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы