25

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

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

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

4 ответа4

43

Когда вы используете 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

13

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

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

sudo apt-get install tmux

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

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

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

Удачи!

6

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

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

5

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

$ nohup abcd &

$ выход

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