Как сохранить работоспособность программы после отключения SSH? [Дубликат]

15

Возможные дубликаты:
Поддерживайте работоспособность программы после закрытия консоли, после запуска программы. Как я могу использовать ssh для запуска команды на удаленном компьютере Unix и выхода из нее
до ее завершения?

Здравствуй!

Я хочу запустить программу из моего ноутбука по SSH-соединению с удаленным сервером. Проблема в том, что я иду домой с ноутбуком :)

Как сохранить работоспособность программы?

Максимум
источник

Ответы:

22

«Экран», скорее всего, то, что вы хотите. Это позволяет отключать и повторно подключаться по желанию. После того, как вы подключитесь к серверу по SSH, запустите screen до запуска вашей программы. Ctrl-a, Ctrl-d отключит вас (программа продолжается независимо). По возвращении screen -r соединит вас, как будто вас никогда не было.

Думайте об этом как VNC или RDP для текстовых терминалов. Ищите «использование экрана» для многих учебных пособий.

Отредактировано, чтобы добавить: В эти дни я бы рекомендовал вместо этого tmux , особенно если он используется в сочетании со скриптом tmx . Возможность разбивать панели (по вертикали и по горизонтали) и изменять их размеры - огромное преимущество над экраном.

Крис
источник
5
Кстати, экран будет продолжать работать, если время соединения истекло или что-то в этом роде, пока вы все еще подключены к нему. Некоторые полезные команды: ctrl + a, ctrl + d = отсоединиться от экрана, screen -r = повторно прикрепить к экрану, screen -x = прикрепить к экрану в режиме совместного использования (можно использовать для обучения и т. Д., Два пользователя могут поделиться на том же экране), ctrl + a, esc = войти в режим прокрутки (нажмите q, чтобы выйти снова). ПРИМЕЧАНИЕ. Если вы запустите экран, набрав «screen program», он сразу запустит программу на экране, но если он выйдет, вы потеряете буфер. Ввод только «экран» даст вам постоянный терминал.
Крис, также tnx за полезный ответ.
18

nohup это команда, которая запускает другую команду и делает ее невосприимчивой к сигналу "зависания".

Вы запускаете это так же просто, как:

nohup command

но вам также нужно будет перенаправить stdin, stdout и stderr. Смотрите man-страницу для получения дополнительной информации.

Вы также, вероятно, захотите поместить его в фоновом режиме.

Вам также необходимо знать killкоманду, чтобы в конечном итоге убить ее.

Oddthinking
источник
Да, много! так просто))
Это тот, который я использую. Очень очень легко Используйте teeдля перенаправления stdin, stdout и stderr.
Ритвик Бозе