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


27

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

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

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


Добро пожаловать в Супер пользователя! Пожалуйста, не ставьте свой ответ на вопрос. Опубликуйте его как ответ ниже, как только вы сможете (примерно через 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


14

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

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

sudo apt-get install tmux

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

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

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

Удачи!


7

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

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


5

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

$ nohup abcd &

$ выход

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.