Продолжить фоновую задачу / задания SSH при закрытии SSH

27

У меня тот же вопрос, что и здесь, но даже за его пределами.

Если я выйду из системы или выйду из SSH-соединения, моя программа будет работать в фоновом режиме. Перед выходом я набираю bgи jobsпроверяю фоновое выполнение задачи, но после выхода из SSH программа не запускается, она закрывается при закрытии окна SSH.

Что я могу сделать, если я хочу, чтобы моя программа все еще работала после закрытия окна SSH? Я использую, nohup screenно это также не работает, или я что-то упустил?

Huei
источник
Добро пожаловать в Супер пользователя! Пожалуйста, не ставьте свой ответ на вопрос. Опубликуйте его как ответ ниже, как только вы сможете (примерно через 7 часов) с помощью кнопки « Ответить на ваш вопрос» . Спасибо. (Также обратите внимание, что нет необходимости добавлять <br/>s к вашему сообщению. Просто делайте абзацы по мере необходимости. И пока вы это делаете, пожалуйста, используйте правильную
заглавную букву
Кстати, не нужно использовать bgили nohupпри использовании screen. Также этот вопрос связан.
только что
вы проверяете этот поток @ переполнение стека stackoverflow.com/questions/285015/…
Ashildr

Ответы:

46

Когда вы используете, screenвам нужно отсоединиться с CTRL+A+ Dдо выхода ssh.

В качестве альтернативы, если вы хотите запустить процесс напрямую с экрана, вы можете использовать

screen -dmSL [session name] [commands]
  • -d начинает сеанс экрана и немедленно отсоединяется от него
  • -m заставляет создавать новый сеанс экрана
  • -S позволяет дать сессии имя
  • -L включает запись в ~/screenlog.0

пример:

screen -dmSL workstuff myscript.sh

Вы можете затем либо:

возобновить позже, используя screen -x workstuff

или

проверьте файл журнала less -r ~/screenlog.0

justbrowsing
источник
14

Использование tmux. Я даже не уверен, что screenвсе еще находится в стадии активной разработки. Это что-то вроде предпочтения, но, как тот, кто использует tmux, я могу засвидетельствовать, что он настроен примерно через 5 минут и работал отлично.

В системе на основе Debian (на удаленной машине):

sudo apt-get install tmux

затем введите tmuxдля входа, запустите любой процесс, который вам нужен, и нажмите Ctrl+ Bзатем D(это оставляет сеанс tmux). Затем вы можете выйти из SSH.

Когда вам нужно вернуться / проверить это снова, запустите SSH и войдите tmux attach. Это вернет вас к вашей tmuxсессии.

tmuxимеет гораздо больше возможностей, как описано здесь. Но это должно решить вашу непосредственную проблему.

Удачи!

evamvid
источник
7

Наконец, я решил это с помощью screen:

В режиме экрана отсоедините его с помощью CtrlAD. Затем вы можете закрыть окно SSH.

Huei
источник
5

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

$ nohup abcd &

$ выход

Ashildr
источник