уничтожьте группу процессов с отрицательным PID

  1. Если сервер позволяет аутентификацию с открытым ключом, поместите открытый ключ соединяющегося клиента к серверу ~/.ssh/authorized_keys файл. Использовать ssh-keygen на клиенте, создавание пары ключей. Можно также использовать ssh-copy-id сценарий для копирования открытого ключа в сервер. На генерации ключей можно опустить пароль, таким образом, Вас не попросят его. Обязательно сохраните закрытый ключ (~/.ssh/id_rsa) безопасный.

  2. Используйте autossh для поддержания туннеля.

7
23.03.2013, 00:53
5 ответов

Это не говорит "такого PID" или является там ошибкой, - поскольку в этом работает?

kill -TERM -- -GPID

Также отметьте, согласно (подчеркните мой),
человек 1:

"[…], Когда аргумент формы '-n' дан, и это предназначено для обозначения группы процесса […]"

человек 2:

"[…], Если pid - меньше чем-1, то сигнал отправляется в каждый процесс в группе процесса, идентификатор которой - pid […]"

человек 3:

"[…], Если pid отрицателен, но не-1, сигнал должен быть отправлен во все процессы (исключая неуказанный набор системных процессов), чей идентификатор группы процесса равен абсолютному значению pid, […]"

Как в, не PID, но идентификатор группы процесса.


Еще, возможно, Вы можете иметь таким образом забава с/proc / [pid] / статистика

ppid: awk '{gsub(/\([^)]+\)/,"_"); print $4}' /proc/3955/stat
pgrp: awk '{gsub(/\([^)]+\)/,"_"); print $5}' /proc/3955/stat

pkill - НАЗОВИТЕ-g PGRP

7
27.01.2020, 20:15
  • 1
    это говорит/bin/kill:-23958: Никакой такой процесс. –  David Dai 22.03.2013, 11:00
  • 2
    pkill - НАЗЫВАЕТ-g PGRP, это работает отлично в моем случае. –  David Dai 22.03.2013, 11:12

Вы могли использовать "pkill" или "killtree" решение, показанное на этом потоке на других из сайтов StackExchange :)

https://stackoverflow.com/questions/392022/best-way-to-kill-all-child-processes

pkill -TERM -P PARENT_PID
2
27.01.2020, 20:15

Это может иметь отношение к Вам использующий оболочку встроенное уничтожение а не двоичный файл, попытаться использовать

/bin/kill 

Если это работает, я предложил бы проверить, добавила ли Ваша оболочка опцию группы процесса к более новой версии. Или просто используйте двоичный файл.

2
27.01.2020, 20:15
  • 1
    я думал об этом. И я попробовал/bin/kill, он не помог. –  David Dai 22.03.2013, 10:59

Сигнал об ошибке [11649]/бин/убивать: -23958: Нет такого процесса[11650], возможно, также из-за того, что pid [11651]23958[11652] - это [11653]no[11654] pgid (номер id группы процесса)!

Это может, например, произойти, если вы попытаетесь убить фоновую оболочку (или команду) в скрипте, ошибочно используя [11655]$![11656] в качестве pgid; в оболочке с включенным job-control, однако, [11657]$![11658] может быть использован в качестве pgid (см: [11659] Почему дочерний процесс все еще жив после того, как родительский процесс был убит в Linux?[11660]).

4
27.01.2020, 20:15

если базовая ОС использует Busybox и, таким образом, говорит Error: kill: bad signal name '-', это, скорее всего, проблема с --.

Вам нужно указать kill -TERM -- -[gpid]вместо просто kill -- -[gpid]. TERM — это сигнал по умолчанию.

Не знаю почему.

1
27.01.2020, 20:15

Теги

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