Невозможно завершить процесс с помощью kill -9

0

Я не могу завершить процесс по сигналу SIGKILL.

$ ps aux | grep -i phps
username 17564   0.0  0.0        0      0   ??  ?E   Sun09AM   0:00.00 (phpstorm)
username 27664   0.0  0.0  2442020    788 s000  S+   11:53AM   0:00.00 grep -i phps
$ sudo kill -9 17564
$ ps aux | grep -i phps
username 17564   0.0  0.0        0      0   ??  ?E   Sun09AM   0:00.00 (phpstorm)
username 27883   0.0  0.0  2423392    312 s000  R+   11:55AM   0:00.00 grep -i phps

Что означает этот процесс в скобках? Как это убить?

Александр Плаксин
источник
@patrix - не совсем дуплекс - другой вопрос не показывает вывод ps, включая () - поэтому может не совпадать. Здесь решение состоит в том, чтобы убить процесс, который вызвал phpstorm
Марк
@ Хорошо, не заметил этого. Благодарю.
nohillside

Ответы:

4

Я предполагаю, что вы пытаетесь убить PIS 17564 kill -9 17564

Тем не менее, он уже мертв, и его имя отображается в () в выводе ps. (Я узнал, что это зомби-процесс, но, похоже, это не правильно, но решение остается тем же). Оно исчезнет, ​​когда запустившийся процесс прочитает свой код завершения.

Страница man для ps говорит, что состояние E означает, что процесс пытается выйти. Показанная команда на самом деле является ключевым словом ucomm (accounting), поскольку система не может найти фактические аргументы.

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

ps -ajxпокажет статус и родительский - обратите внимание, что Apple / BSD изменил параметры ps в Tiger и ps -auxне работает, ps auxвидит взлом, так как это то, что все используют. Так что вам нужно прочитать справочную страницу.

отметка
источник
спасибо за глубокое объяснение. Это помогает. ps -ajxпоказывает родительский идентификатор (PPID) в третьей строке. и ps -ajx -p PIDбудет отображать точное состояние процесса. Снова тнкс.
Александр Плаксин
Обновление . Я смог воспроизвести проблему еще раз. Во- первых . Ваш -aаргумент следует избегать, если вы укажете -p. Потому что он по-прежнему будет отображать все процессы. второй . `$ ps -p 542 -jx USER PID PPID PGID SESS JOBC STAT TT TIME COMMAND имя пользователя 542 1 542 0 1? E ?? 0: 00.00 (phpstorm) `Похоже, что родительский /sbin/launchd. И перезапуск это очень похоже на перезапуск системы.
Александр Плаксин