Рейтинг:1

Почему я не могу запускать программы после закрытия SSH-соединения с помощью setsid, nohup или disown?

флаг no

Я пытаюсь запустить программу «ao» на удаленном сервере. Чтобы он продолжал работать после закрытия SSH-соединения, я попробовал следующее:

setsid ./a.o
nohup ./ао
./ао &
отречься -h %1

Ни один из этих вариантов не работает, и я не могу понять, почему. Любые идеи о том, как решить эту проблему?

P.S. Я использую туннельное соединение для подключения к серверу через машину перехода. Кроме того, это программа, в которой используется код CUDA, работающий на графическом процессоре. Имеют ли они какое-либо отношение к проблеме?

user535733 avatar
флаг cn
Вы можете использовать терминальный мультиплексор, чтобы поддерживать работу процессов после выхода из системы. Оба `screen` и `tmux` довольно хороши, и оба находятся в репозиториях Ubuntu.
edwardliang2019 avatar
флаг no
@ user535733 Большое спасибо. Я попробовал tmux, и это сработало!
Рейтинг:1
флаг cn

нет Страница Википедии имеет ссылку на эту проблему конкретно:

Обратите внимание, что фоновые задания nohpping обычно используются, чтобы избежать их завершения при выходе из удаленного сеанса SSH. Другая проблема, которая часто возникает в этой ситуации, заключается в том, что ssh отказывается выходить из системы («зависает»), поскольку он отказывается терять какие-либо данные из/в фоновых заданиях.[6][7] Эту проблему также можно решить путем перенаправления всех трех потоков ввода-вывода:

$ nohup ./myprogram > foo.out 2> foo.err < /dev/null &

Также обратите внимание, что закрытие сеанса SSH не всегда отправляет сигнал HUP зависимым процессам, например, когда псевдотерминал не выделен.

Как упоминалось в комментариях, экран и tmux идеально подходят и для этого. Лично я предпочитаю tmux.

edwardliang2019 avatar
флаг no
Большое спасибо! Это отлично решает мою проблему. И tmux у меня тоже работает.

Ответить или комментировать

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