Как я могу убить процесс, используя top на OS X?

8

На других Unixe я могу использовать, topа затем нажать Kи ввести идентификатор процесса. Как я могу сделать это в OS X?

Я могу печатать kill [the_pid]самостоятельно в командной строке, и это работает. Однако мне было интересно, есть ли способ, чтобы это произошло в topпрограмме.

Майкл Даррант
источник
1
если вы находитесь на других * NIX, вы, вероятно, уже использовали htop. Я нахожу это более информативным и последовательным от машины к машине. Это доступно через MacPorts.
Эфсмит

Ответы:

5
# top

нажмите shift+ s. Это поднимет:

signal [TERM]:

В этот момент вы можете просто нажать клавишу возврата для «вежливого» запроса на завершение процесса («сигнал 15»), который позволит процессу очистить файлы, освободить память и т. Д. Для процесса, который не может быть остановлен таким образом, вы можете ввести слово «убить», которое является сигналом «9», затем нажмите return.

Теперь top запрашивает pid (идентификатор процесса):

pid:

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

Иван Миронов
источник
1
Я бы не использовал SIGKILL в качестве первого выбора. Предлагаемый SIGTERM должен подходить для большинства процессов. SIGKILL завершает процесс без какого-либо обращения или очистки, возможно, оставляя процесс «зомби», который все еще имеет дескрипторы открытых файлов, выделенную память и т. Д.
Ян Стейнман
Спасибо, январь. Однако я не вижу упоминания о SIGKILL в этом ответе. Предположительно подразумевается? Также, если SIGTERM является лучшим вариантом, пожалуйста, укажите, что именно печатать.
Майкл Даррант
хорошо, я просто обновлю это сам.
Майкл Даррант
4

Со topстраницы руководства :

  S<signal><pid>
          Send  <sig>  to  <pid>.   <sig> can be specified either as a number or
          as a name (for example, HUP).  The default signal starts out as TERM.
          Each time a signal is  successfully  sent,  the default signal is updated
          to be that signal.  <pid> is a process id.
Nohillside
источник