Мне нужно запускать команды SSH удаленно, вывод выводится локально. Но если соединение разрывается, я хочу, чтобы команда все еще выполнялась.
Я говорю не столько о входе в систему и выполнении, но о выполнении команды ssh user @ remotehost 'commands && command etc'
Как я могу обеспечить выполнение команды, даже если разрывается соединение?
источник
Вы хотите иметь постоянный сеанс, который можно возобновить, или просто чтобы отключить соединение от прекращения действия исключения?
Для первого используйте
screen
для второгоnohup
.источник
Как уже упоминалось ранее,
screen
можно сделать все возможное. Но не только то, что вам нужно. Я использую screen на протяжении многих лет, и теперь использую его каждый раз, когда захожу в систему. Попробуйте установитьscreen
и создать~/.screenrc
с таким конфигом:Тогда беги
screen -Rd vcf
. Это предпочтительный вызов экрана. Вы переподключитесь к ранее созданному сеансу с именем vcf * (или получите предупреждение, если он неоднозначный) или, если сеанс еще не открыт, он будет создан. CTRL+ Aэто мета-ключ, который делает все.CTRL+A C
( CTRL+ A, затем C) создать новое окно (экран) внутри сессии.CTRL+A SPACE
переместить фокус на следующее окно в раунде.CTRL+A D
отключить текущий сеанс, сохраняя все окна работоспособными между соединениями. Если у вас есть запуск какого-то более долгого задания, вы можете отсоединиться от экрана и подключиться к нему позже, чтобы посмотреть, что произойдет. То же самое происходит, если ваш ssh-сеанс потерян - экран остается активным со всеми открытыми окнами и всеми запущенными задачами.Если вы хотите закрыть какое-то окно внутри экрана - просто
exit
из оболочки в нем. Если вы хотите закрыть все оболочки / задачи во всех окнах и выйти из экрана - просто нажмитеCTRL+A CTRL+\
и нажмите «Y» при появлении запроса.Для всего остального смотрите man screen.
источник
Я видел эту альтернативу надежному ssh "like" соединению:
http://mosh.mit.edu/
источник
Я бы обычно делал:
источник