pkill не убивает

Я пытался убить процесс, используя pkill -9

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

Как мне теперь действовать?

Edit:

Я был глуп, пытаясь использовать pkill с pid. pkill берет имя процесса, а не pid. kill - это команда, которая принимает pid, как указано в принятом ответе.

Однако другой ответ действительно хорошо объясняет фактическую возможность того, что pkill не убивает, и очень хорошо написан.

1
задан 8 June 2021 в 16:13

2 ответа

Если я правильно помню (я никогда не использую его), pkill использует имя процесса, а не PID. чтобы использовать PID, используйте kill вместо pkill.

6
ответ дан 28 July 2021 в 11:31

Есть ровно три причины, по которым kill -9 не убьет процесс. (На страницах старого руководства это помечено как «Убить с крайним предубеждением». Процесс не может избежать -9, а только отсрочить его смерть .)

Вы можете проверить процесс, например, с помощью ps -O stat -p 1234 . Изучите столбец статуса (S):

Три причины, по которым процесс не умирает сразу после -9:

  • Он уже мертв - это зомби. (status = Z) Он уйдет, когда его родитель будет ждать его (и забрать зомби) или если сам родительский процесс умирает.
  • Он застрял в ожидании устройства. (status = D) Единственный способ убить их - это заставить устройство освободить его или перезагрузить. Это может потребовать ожидания или физических манипуляций с устройством, или другого нестандартного способа «пнуть» застрявшее устройство. (И в редких случаях перезагрузка завершится ошибкой и зависнет, и вам придется выключить и снова включить питание.)
  • Он приостановлен (status = T), и в этом случае kill -9 действительно убивает его, но на самом деле это не так. die, пока процесс не будет возобновлен (kill -CONT)

Команда kill действительно что-то возвращает, хотя в случае успеха ничего не выводит . Все команды имеют возвращаемое значение. Вы можете проверить это с помощью echo $? сразу после выполнения команды. Если возвращаемое значение равно 0, уничтожение выполнено успешно и ничего не печатается. Любое другое значение является ошибкой, и оно должно выводить ошибку; возможными ошибками могут быть: В доступе отказано (или операция не разрешена) или Нет такого процесса. В pkill есть несколько более интересных ошибок.

4
ответ дан 28 July 2021 в 11:31

Другие вопросы по тегам:

Похожие вопросы: