После выхода из ssh-соединения процесс прерывается / время ожидания

1095
John

Я запускаю сценарий Python в фоновом режиме на сервере Ubuntu SSH. nohup python x.py & Через некоторое время, возможно, через полчаса скрипт python перестает работать, когда я возвращаюсь на сервер и набираю ps. Не уверен почему. Я не хочу, чтобы это когда-нибудь истекло.

2

1 ответ на вопрос

4
Amelia

Процессы в сеансе SSH принадлежат процессу вашей оболочки; как правило:
sshd [your-username] tty[your-tty].

Когда вы завершаете сеанс, все дочерние процессы также закрываются.

Чтобы обойти это, используйте терминальное мультиплексирование или демоны.

Наиболее распространенными мультиплексорами являются screen и tmux .

Затем вы можете запустить экран, используя screen -S my-session-name, и запустить ваш процесс в обычном режиме.

Затем вы можете нажать ctrl+ a, dчтобы отсоединиться от экрана, и процесс все равно будет запущен, но как дочерний элемент экрана, а не сеанс ssh

Для повторного подключения введите screen -x my-session-name(-r также работает)

Так почему экран не умирает по той же причине, что и скрипт Python? Mattias Åslund 10 лет назад 0
Получив ошибку памяти сейчас, программа не работает так долго, как раньше John 10 лет назад 0
@ MattiasÅslund screen создает еще один TTY в / tmp (на самом деле это сокет), который будет иметь принадлежащие ему процессы, вместо того, чтобы использовать ваш текущий TTY (который будет в `/ dev / tty [id]`), так как он пойдет poof, когда sshd решает, что пора выходить. Вы вызываете экран; это не вызывается вашей оболочкой Amelia 10 лет назад 1
@ Аноним, ты уверен, что раньше не работал в пространстве подкачки? Amelia 10 лет назад 0
Я думаю так. Прежде чем я загрузил данные и обработал их в течение некоторого времени, и я думаю, что когда я вышел, процесс остановился. Теперь программа выдает ошибку памяти при загрузке данных, даже не попадает в обработку. John 10 лет назад 0
Я попробовал это на 64-битном сервере, работал. Странно, хотя, работал на 32-разрядных раньше. Спасибо. John 10 лет назад 0

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