Что происходит с запущенными процессами, когда я теряю удаленное соединение с * nix box?

16

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

Когда я восстановил соединение с ящиком, что случилось с процессами bash и sshd, которые работали, когда я потерял соединение? Сегодня я неоднократно терял связь и заметил гораздо больше процессов bash и sshd, чем обычно.

Если есть какие-то процессы, нужно ли их убивать? Как я могу определить, какие процессы были отменены из моего предыдущего сеанса?

Спасибо за любые ответы!

Дэвид Мрамор
источник

Ответы:

8

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

Вы, вероятно, должны прекратить старые сеансы, хотя это не обязательно. Введите ps auxв консоли список процессов, затем kill PIDдля каждого зависшего сеанса ssh, где PID - это PID (идентификатор процесса) для этого сеанса. Старые, зависшие сеансы должны иметь более низкие PID, чем ваш текущий новый сеанс.

Если существует длительный процесс, который вы хотите продолжить, даже после отключения, вы можете добавить к команде префикс nohup:

nohup badblocks -nvs /dev/sda &
грабить
источник
0

Когда сеанс ssh умирает, псевдо-tty, связанный, закрывается и сбрасывается. Обычно оболочка и другие процессы, связанные с этим tty, уничтожаются, так как они являются дочерними процессами процесса, который его создал. Если есть процессы, висящие вокруг, возможно, они были задержаны? Да, их, вероятно, следует убить - чистота рядом с благочестием. Они занимают некоторые ресурсы - обычно не очень, но это может сложиться через некоторое время.

Шеннон Нельсон
источник