Как остановить бесконечный рабочий процесс (ztail) запущенный ssh сессией после того, как тот сеанс закрыт

AFAIK является пределом на длину пути, определенного в include/linux/limits.h, и является 4 096 символами (включая финал Null- байт). Длина имени файла ограничена 255 символами. Однако фактическая файловая система могла бы осуществить дальнейшие ограничения.

2
11.11.2012, 22:27
2 ответа

Это только происходит, если Вы работаете ztail (или любая другая команда) как новый процесс корневого уровня (т.е. без родительского процесса), например, в фоновом режиме или через крон.

Обычно, когда Вы запускаете стандарт ssh сессия Вы получаете процесс оболочки, который является корневым процессом для всех программ, которые Вы запускаете. Если ssh сессия завершается, ядро уничтожает все дочерние процессы также. (Вот почему люди обычно используют screen или сопоставимые вещи сохранить сессии.)

Таким образом, самая легкая вещь для Вас состояла бы в том, чтобы использовать это поведение по умолчанию. Взгляните на ps axjf проверять что ztailкорневой процесс, затем выясните, почему он переживает завершенный ssh сессия.

1
27.01.2020, 22:23
  • 1
    , "Если ssh сессия завершается, ядро, уничтожает все дочерние процессы также". Не точно. Ядро отправляет a SIGHUP группе процесса, когда терминал управления исчезает, или лидер сессии умирает, создавая осиротевшую группу процесса. Это - вероятный ztail, или влияет на группы сессий/процесса с setpgid или setsid, или игнорирование SIGHUP. См. главу 9 в APUE для всех окровавленных деталей. –  Jim Paris 11.11.2012, 22:18

Во время ssh-сессии сессия оболочки будет дочерним процессом. Тот дочерний процесс будет иметь другой дочерний процесс: ztail. После закрытия оболочки ztail освободит своих родителей. Как со всеми этими процессами, они будут adoped init с PID 1.

К если родительский pid ztail1, это - по всей вероятности один из Ваших "зомби".

0
27.01.2020, 22:23

Теги

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