Как можно использовать htop для приостановки процесса и всех его дочерних процессов?

Как можно использовать htop для приостановки процесса и всех его дочерних процессов?

Я использую recollиндексацию файлов, и она срабатывает в самый неподходящий момент.

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

Есть ли возможность приостановить или остановить родительский процесс и все его дочерние процессы, а не завершать его полностью?

решение1

Начиная с версии2.0.0(выпущен в 2016 году), вы можете нажать c, чтобы пометить процесс и его потомков. Это упоминается во встроенной справке, которая отображается на h.

Затем вы можете нажать , kчтобы отправить сигнал отмеченным процессам; вам будет представлен список всех возможных сигналов для выбора.

решение2

Вы можете выбрать отправку сигнала SIGTSTPили SIGSTOP:

  • SIGTSTP: Сигнал отправляется при нажатии Ctrl+ Z. Он приостановит и остановит процесс, вы можете возобновить его с помощью bg(возобновляет его в фоновом режиме) или fg(возобновляет его, возвращая его на передний план).

  • SIGSTOP: Просто останавливает процесс. Не может быть проигнорирован, не может быть заблокирован. Процесс возобновится только если вы пошлете ему SIGCONTсигнал.

решение3

Вы можете нажать Space, чтобы пометить процесс. Команда kill применяется ко всем помеченным процессам.

Не существует простого способа пометить процесс и его дочерние процессы, но в древовидной структуре ( t) они должны быть перечислены последовательно.

В зависимости от того, как выполняется recoll, процессы могут находиться в своих собственныхгруппа процессов. Если они есть, то вы можете использовать kill -STOP -1234для приостановки их всех, где 1234 — это идентификатор группы процессов (обычно, но не обязательно, идентификатор процесса начального процесса в группе). Вы можете проверить с помощью ps -o pid,ppid,pgid,comm -C recoll, затем ps -o pid,ppid,pgid,comm ww | grep -v recollувидеть, есть ли другие процессы в группе процессов. Htop не имеет интерфейса для групп процессов.

Если все процессы называются recoll, то более простой метод — отфильтровать процессы по имени. В htop используйте команду filter, тогда вы можете легко пометить процессы, которые хотите завершить. В командной строке запустите , ps $(pgrep recoll)чтобы получить список соответствующих процессов. Если вас устраивает список, запустите , pkill -STOP recollчтобы приостановить эти процессы.

Связанный контент