16

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

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

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

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

2 ответа2

8

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

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

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

nohup badblocks -nvs /dev/sda &
0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .