Можно ли продолжить сеанс ssh при каждом повторном подключении? [dубликат]

Это оказалось проблемой с настройками видеокарты. Я выполнил редактор конфигурации для видеокарты. В этом случае, выполнив

gksu nvidia-settings

, я должен был включить второй монитор и перезапустить xwindows и выполнить его работу.

530
задан 21 October 2010 в 17:09

92 ответа

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

Вы можете использовать nohup, но современная мудрость подсказывает, что вы используете экран или byobu как ваш войдите в систему, чтобы вы могли отсоединиться и уйти от работы.

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

Существует разумное начало работы nohup здесь.

byobu ставит простой в использовании интерфейс поверх экрана с меню и т. Д. Это также текущая реализация экрана на более новой ubuntu. F2 для запуска нового терминала F3 / F4 для переключения взад и вперед и F6 для разъединения. Регулярно завершайте вывод на конечные терминалы.

16
ответ дан 2 August 2018 в 00:57
  • 1
    byobu использует tmux в эти дни .. – scottl 28 November 2012 в 13:04
  • 2
    «Вы не можете сделать это после того, как процесс начался, вам нужно настроить все, прежде чем запускать многолетнее задание. & quot; - нет, вы можете использовать disown для достижения этого. См. Ответ @ bassgey – Rich 23 May 2013 в 21:11
  • 3
    после борьбы за изучение экрана и tmux .... byobu принес слезы на глаза – HDave 24 September 2014 в 02:06
  • 4
    disown и, если необходимо, просто Ctrl-z, затем bg, чтобы получить его от активного терминала и фона. Тогда disown. – mimoralea 22 November 2017 в 00:49

Для одного сценария оболочки, который у меня запущен в течение длительного периода времени, я войду в систему и запустил процесс в фоновом режиме, используя «& amp;».

Пример:

  / path / to / my / script & amp;   

Я вышел из системы и отключил сеанс SSH. Когда я вхожу в систему через некоторое время, сценарий все еще выполняется, как доказано непрерывным сбором данных из сценария.

7
ответ дан 4 August 2018 в 16:27

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

Вы можете использовать nohup , но современная мудрость предлагает вы используете экран или byobu как ваш логин, чтобы вы могли отсоединиться и оставить все в порядке.

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

] Существует разумное начало руководства к экрану здесь.

byobu предоставляет простой в использовании интерфейс поверх экрана с меню и т. Д. Это также текущая реализация экрана на более новой ubuntu. F2 для запуска нового терминала F3 / F4 для переключения взад и вперед и F6 для разъединения. Навсегда выйдите на конечные терминалы.

16
ответ дан 4 August 2018 в 16:27

Вы должны проверить экран GNU и посмотреть, поможет ли он вам. В зависимости от того, как вам нужно приложение для запуска в режиме реального времени, это может вызвать больше проблем, чем оно решает, но по крайней мере это позволит вам возобновить сеанс, как будто вы его никогда не покидали.

Как использовать:

  • Используйте команду screen для первого запуска, прокрутите вводные сообщения, вам нужно передать терминал.
  • Ca Cc открывает другое терминал
  • Ca Ck убивает терминал
  • Вы можете использовать Ca C-Space и Ca C-Backspace для циклического перехода через терминалы
  • Ca Ca удобен, re в основном используя только два терминала
  • Ca Cd отсоединяет текущий сеанс экрана и выходит из экранов. Затем вы можете использовать экран -r для возобновления этого сеанса. У вас может быть несколько сеансов отдельного экрана одновременно, в этом случае вы увидите список доступных сеансов.

Существует много других опций, например разделенные экраны, а также все ярлыки полностью настраиваются.

3
ответ дан 4 August 2018 в 16:27

Существуют две основные программы, которые вы можете использовать для поддержки программ и состояния терминала через несколько соединений ssh. Это экран (действующий, но, к сожалению, не имеющий силы. По-видимому, активно развивается теперь ) и tmux (более новый, активно поддерживается). Byobu - это интерфейс, который может работать поверх их этих систем и предоставлять дополнительную информацию о состоянии Ubuntu. В новых установках он будет использовать tmux в качестве бэкэнд, если у вас установлена ​​более старая установка byobu и существующая конфигурация, она будет поддерживать предыдущий бэкэнд, будь то экран или tmux.

Byobu

Byobu можно установить на компьютер, выполнив это на машине на базе Debian:

  sudo aptitude install byobu  

Используя yum, вы делаете

  su -c 'yum install byobu'  

Также можно установить byobu в других дистрибутивах.

Используя byobu

Вы можете запустить byobu, выполнив byobu на главной машине после подключения с помощью ssh. Это даст вам оболочку, которая выглядит так:

image-byobu [!d13]

Вы также можете использовать терминал Byobu на машине Ubuntu с опцией -X и легко получить

Использование:

Начать byobu, набрав byobu .

Вы можете нажать F2, чтобы создать новое окно внутри текущую сессию, F3-F4, чтобы переключаться между различными окнами.

Лучшая часть aboutobobu - вам не нужно фактически убивать процессы, запущенные в терминале, чтобы покинуть терминал. Вы можете просто отправить экран / tmux (скелет byobu) в фоновый режим и возобновить следующий раз:

  • Чтобы выйти из него и выполнить его (отключение), нажмите F6.
  • В следующий раз, когда вы придете, просто сделайте byobu , и вы вернетесь туда, где вы были. byobu-detach-attach [!d14]

Вы также можете создавать различные сеансы byobu byobu -S session1 и так далее. И вы можете подключиться к любому из них, когда вернетесь.

Вы можете сделать гораздо больше, используя Byobu. Используй это! Здесь некоторые [) здесь , здесь или здесь .

19
ответ дан 4 August 2018 в 16:27

Самый простой ответ ...

ctrl + z приостанавливает запущенную программу

«bg» запустит ее в фоновом режиме

2
ответ дан 4 August 2018 в 16:27

Экран и nohup - лучший способ, но если вам нужно отключить уже запущенный процесс без экрана или nohup, вы можете запустить команду disown.

disown [-ar] [ -h] [ jobspec ... | pid ...]

Без options, удалите каждый jobspec из таблицы активных заданий. Если задана опция -h , задание не удаляется из таблицы, но помечено так, что SIGHUP не отправляется на задание, если оболочка получает SIGHUP. Если jobspec отсутствует, и ни опция -a , ни опция -r не используются, используется текущее задание. Если не задано jobspec , опция -a означает удаление или отметку всех заданий; параметр -r без аргумента jobspec ограничивает выполнение выполняемых заданий.

С отключением вы можете закрыть терминал и получить процесс работающий на машине.

72
ответ дан 4 August 2018 в 16:27

Эй, пока я согласился, что экран является наиболее эффективным вариантом. Вы можете использовать vncserver, а затем запустить процесс на нем.

Кроме того, если ваши единственные проблемы состоят в том, чтобы запустить процесс и не нужно брать его обратно, и, самое главное, вы не знали, что будете нужно закрыть сеанс, и у вас уже запущен процесс, вам не повезло, если вы использовали bash в качестве оболочки

Сначала вам нужно отправить процесс на задний план, набрав Ctrl + Z, а затем bg% 1 (число зависит от номера задания, обычно это 1, но вы можете легко вытащить список с помощью заданий команды)

Наконец, вызывается команда disown (за ней следует jobid ... так же, как и с bg)

Это приведет к удалению отношения родитель-потомок между вашей оболочкой и процессом в фоновом режиме, предотвращая ее смерть, когда ваша оболочка будет завершена.

7
ответ дан 4 August 2018 в 16:27

В то время как все говорят использовать disown (единственный вариант, который у вас есть после того, как вы уже начали процесс), nohup или даже запустить команду на экране ! d2], что полезно, если вы хотите увидеть весь вывод из команды ... Я поклонник экрана .. Я все еще пробовал самые последние основные дистрибутивы Linux и просто поставил работа в фоновом режиме и прекращение работы не приводит к тому, что все процессы, которые работают, умирают. Должна быть глобальная установка или что-то еще. Я пытаюсь это на некоторых довольно старых системах (slackware 12), и мой тестовый скрипт продолжает работать до тех пор, пока я не рунет его вручную:

  shell $ cat & gt;  test.pl #! / usr / bin / perl while (1) {sleep (1);  } shell $ perl ./test.pl & amp;  shell $ exit logout shell $ ps aux test.pl mymom 31337 1 0 13:25?  00:00:00 perl ./test.pl shell $  

Хотя я согласен, что экран был бы лучшим способом запустить это, даже если бы мой скрипт написал чтобы записывать файлы или что-то в этом роде. Мне никогда не приходилось использовать disown -a или nohup , если он не был полностью паранойей. Может быть, кто-то может пролить свет на то, как bash ведет себя по умолчанию? Может быть, некоторые системные администраторы меняют значения по умолчанию на больших оболочках, чтобы процессы своих пользователей перегружали систему?

178
ответ дан 4 August 2018 в 16:27

Самый простой способ - запустить команду в фоновом режиме с помощью & amp; . Затем просто напишите:

  disown -a  
2
ответ дан 4 August 2018 в 16:27

Я застрял в большом mv, поэтому я не мог остановить процесс, настроить экран и снова запустить его. Мне удалось выйти из сеанса ssh с запущенным процессом, выполнив следующие шаги:

  1. ssh [server]
  2. command
  3. CTRL + Z
  4. bg
  5. disown
  6. exit

Шаг 3 приостанавливает текущий процесс (например, моя команда «mv»). Шаг 4 ставит приостановленный процесс на задний план и возобновляет его. Шаг 5 позволяет отказаться от процесса.

35
ответ дан 4 August 2018 в 16:27

Самый лучший способ - это самый простой способ.

nohup long-running-command & amp;

Это было сделано специально для этого, оно даже записывает stdout в nohup.log

man nohup

Если вы хотите «зафрахтовать» некоторые уже запущенные задачи, то лучший выбор - ctrl + z, затем запустите

bg (это будет зависеть от вашей последней приостановленной задачи, позволяющей ей продолжать работать)

, тогда быстрое disout должно поддерживать процесс после выхода из системы.

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

Имейте в виду, что оба имеют значение bash. Если вы не используете bash, тогда команды могут быть разными.

210
ответ дан 4 August 2018 в 16:27

Вместо:

  cmd options;   

Добавить до nohup :

  nohup cmd options & amp;   

Затем вы сможете увидеть консольный stdout:

  tail -f nohup.out  
-1
ответ дан 4 August 2018 в 16:27

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

Вы можете использовать nohup , но современная мудрость предлагает вы используете экран или byobu как ваш логин, чтобы вы могли отсоединиться и оставить все в порядке.

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

] Существует разумное начало руководства к экрану здесь.

byobu предоставляет простой в использовании интерфейс поверх экрана с меню и т. Д. Это также текущая реализация экрана на более новой ubuntu. F2 для запуска нового терминала F3 / F4 для переключения взад и вперед и F6 для разъединения. Навсегда выйдите на конечные терминалы.

16
ответ дан 6 August 2018 в 01:07

Для одного сценария оболочки, который у меня запущен в течение длительного периода времени, я войду в систему и запустил процесс в фоновом режиме, используя «& amp;».

Пример:

  / path / to / my / script & amp;   

Я вышел из системы и отключил сеанс SSH. Когда я вхожу в систему через некоторое время, сценарий все еще выполняется, как доказано непрерывным сбором данных из сценария.

7
ответ дан 6 August 2018 в 01:07

Вы должны проверить экран GNU и посмотреть, поможет ли он вам. В зависимости от того, как вам нужно приложение для запуска в режиме реального времени, это может вызвать больше проблем, чем оно решает, но по крайней мере это позволит вам возобновить сеанс, как будто вы его никогда не покидали.

Как использовать:

  • Используйте команду screen для первого запуска, прокрутите вводные сообщения, вам нужно передать терминал.
  • Ca Cc открывает другое терминал
  • Ca Ck убивает терминал
  • Вы можете использовать Ca C-Space и Ca C-Backspace для циклического перехода через терминалы
  • Ca Ca удобен, re в основном используя только два терминала
  • Ca Cd отсоединяет текущий сеанс экрана и выходит из экранов. Затем вы можете использовать экран -r для возобновления этого сеанса. У вас может быть несколько сеансов отдельного экрана одновременно, в этом случае вы увидите список доступных сеансов.

Существует много других опций, например разделенные экраны, а также все ярлыки полностью настраиваются.

3
ответ дан 6 August 2018 в 01:07

Существуют две основные программы, которые вы можете использовать для поддержки программ и состояния терминала через несколько соединений ssh. Это экран (действующий, но, к сожалению, не имеющий силы. По-видимому, активно развивается теперь ) и tmux (более новый, активно поддерживается). Byobu - это интерфейс, который может работать поверх их этих систем и предоставлять дополнительную информацию о состоянии Ubuntu. В новых установках он будет использовать tmux в качестве бэкэнд, если у вас установлена ​​более старая установка byobu и существующая конфигурация, она будет поддерживать предыдущий бэкэнд, будь то экран или tmux.

Byobu

Byobu можно установить на компьютер, выполнив это на машине на базе Debian:

  sudo aptitude install byobu  

Используя yum, вы делаете

  su -c 'yum install byobu'  

Также можно установить byobu в других дистрибутивах.

Используя byobu

Вы можете запустить byobu, выполнив byobu на главной машине после подключения с помощью ssh. Это даст вам оболочку, которая выглядит так:

image-byobu [!d13]

Вы также можете использовать терминал Byobu на машине Ubuntu с опцией -X и легко получить

Использование:

Начать byobu, набрав byobu .

Вы можете нажать F2, чтобы создать новое окно внутри текущую сессию, F3-F4, чтобы переключаться между различными окнами.

Лучшая часть aboutobobu - вам не нужно фактически убивать процессы, запущенные в терминале, чтобы покинуть терминал. Вы можете просто отправить экран / tmux (скелет byobu) в фоновый режим и возобновить следующий раз:

  • Чтобы выйти из него и выполнить его (отключение), нажмите F6.
  • В следующий раз, когда вы придете, просто сделайте byobu , и вы вернетесь туда, где вы были. byobu-detach-attach [!d14]

Вы также можете создавать различные сеансы byobu byobu -S session1 и так далее. И вы можете подключиться к любому из них, когда вернетесь.

Вы можете сделать гораздо больше, используя Byobu. Используй это! Здесь некоторые [) здесь , здесь или здесь .

19
ответ дан 6 August 2018 в 01:07

Самый простой ответ ...

ctrl + z приостанавливает запущенную программу

«bg» запустит ее в фоновом режиме

2
ответ дан 6 August 2018 в 01:07

Экран и nohup - лучший способ, но если вам нужно отключить уже запущенный процесс без экрана или nohup, вы можете запустить команду disown.

disown [-ar] [ -h] [ jobspec ... | pid ...]

Без options, удалите каждый jobspec из таблицы активных заданий. Если задана опция -h , задание не удаляется из таблицы, но помечено так, что SIGHUP не отправляется на задание, если оболочка получает SIGHUP. Если jobspec отсутствует, и ни опция -a , ни опция -r не используются, используется текущее задание. Если не задано jobspec , опция -a означает удаление или отметку всех заданий; параметр -r без аргумента jobspec ограничивает выполнение выполняемых заданий.

С отключением вы можете закрыть терминал и получить процесс работающий на машине.

72
ответ дан 6 August 2018 в 01:07

Эй, пока я согласился, что экран является наиболее эффективным вариантом. Вы можете использовать vncserver, а затем запустить процесс на нем.

Кроме того, если ваши единственные проблемы состоят в том, чтобы запустить процесс и не нужно брать его обратно, и, самое главное, вы не знали, что будете нужно закрыть сеанс, и у вас уже запущен процесс, вам не повезло, если вы использовали bash в качестве оболочки

Сначала вам нужно отправить процесс на задний план, набрав Ctrl + Z, а затем bg% 1 (число зависит от номера задания, обычно это 1, но вы можете легко вытащить список с помощью заданий команды)

Наконец, вызывается команда disown (за ней следует jobid ... так же, как и с bg)

Это приведет к удалению отношения родитель-потомок между вашей оболочкой и процессом в фоновом режиме, предотвращая ее смерть, когда ваша оболочка будет завершена.

7
ответ дан 6 August 2018 в 01:07

В то время как все говорят использовать disown (единственный вариант, который у вас есть после того, как вы уже начали процесс), nohup или даже запустить команду на экране ! d2], что полезно, если вы хотите увидеть весь вывод из команды ... Я поклонник экрана .. Я все еще пробовал самые последние основные дистрибутивы Linux и просто поставил работа в фоновом режиме и прекращение работы не приводит к тому, что все процессы, которые работают, умирают. Должна быть глобальная установка или что-то еще. Я пытаюсь это на некоторых довольно старых системах (slackware 12), и мой тестовый скрипт продолжает работать до тех пор, пока я не рунет его вручную:

  shell $ cat & gt;  test.pl #! / usr / bin / perl while (1) {sleep (1);  } shell $ perl ./test.pl & amp;  shell $ exit logout shell $ ps aux test.pl mymom 31337 1 0 13:25?  00:00:00 perl ./test.pl shell $  

Хотя я согласен, что экран был бы лучшим способом запустить это, даже если бы мой скрипт написал чтобы записывать файлы или что-то в этом роде. Мне никогда не приходилось использовать disown -a или nohup , если он не был полностью паранойей. Может быть, кто-то может пролить свет на то, как bash ведет себя по умолчанию? Может быть, некоторые системные администраторы меняют значения по умолчанию на больших оболочках, чтобы процессы своих пользователей перегружали систему?

178
ответ дан 6 August 2018 в 01:07

Самый простой способ - запустить команду в фоновом режиме с помощью & amp; . Затем просто напишите:

  disown -a  
2
ответ дан 6 August 2018 в 01:07

Я застрял в большом mv, поэтому я не мог остановить процесс, настроить экран и снова запустить его. Мне удалось выйти из сеанса ssh с запущенным процессом, выполнив следующие шаги:

  1. ssh [server]
  2. command
  3. CTRL + Z
  4. bg
  5. disown
  6. exit

Шаг 3 приостанавливает текущий процесс (например, моя команда «mv»). Шаг 4 ставит приостановленный процесс на задний план и возобновляет его. Шаг 5 позволяет отказаться от процесса.

35
ответ дан 6 August 2018 в 01:07

Самый лучший способ - это самый простой способ.

nohup long-running-command & amp;

Это было сделано специально для этого, оно даже записывает stdout в nohup.log

man nohup

Если вы хотите «зафрахтовать» некоторые уже запущенные задачи, то лучший выбор - ctrl + z, затем запустите

bg (это будет зависеть от вашей последней приостановленной задачи, позволяющей ей продолжать работать)

, тогда быстрое disout должно поддерживать процесс после выхода из системы.

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

Имейте в виду, что оба имеют значение bash. Если вы не используете bash, тогда команды могут быть разными.

210
ответ дан 6 August 2018 в 01:07

Вместо:

  cmd options;   

Добавить до nohup :

  nohup cmd options & amp;   

Затем вы сможете увидеть консольный stdout:

  tail -f nohup.out  
-1
ответ дан 6 August 2018 в 01:07

Для одного сценария оболочки, который у меня запущен в течение длительного периода времени, я войду в систему и запустил процесс в фоновом режиме, используя «& amp;».

Пример:

  / path / to / my / script & amp;   

Я вышел из системы и отключил сеанс SSH. Когда я вхожу в систему через некоторое время, сценарий все еще выполняется, как доказано непрерывным сбором данных из сценария.

7
ответ дан 7 August 2018 в 18:34

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

Вы можете использовать nohup , но современная мудрость предлагает вы используете экран или byobu как ваш логин, чтобы вы могли отсоединиться и оставить все в порядке.

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

] Существует разумное начало руководства к экрану здесь.

byobu предоставляет простой в использовании интерфейс поверх экрана с меню и т. Д. Это также текущая реализация экрана на более новой ubuntu. F2 для запуска нового терминала F3 / F4 для переключения взад и вперед и F6 для разъединения. Навсегда выйдите на конечные терминалы.

16
ответ дан 7 August 2018 в 18:34

Вы должны проверить экран GNU и посмотреть, поможет ли он вам. В зависимости от того, как вам нужно приложение для запуска в режиме реального времени, это может вызвать больше проблем, чем оно решает, но по крайней мере это позволит вам возобновить сеанс, как будто вы его никогда не покидали.

Как использовать:

  • Используйте команду screen для первого запуска, прокрутите вводные сообщения, вам нужно передать терминал.
  • Ca Cc открывает другое терминал
  • Ca Ck убивает терминал
  • Вы можете использовать Ca C-Space и Ca C-Backspace для циклического перехода через терминалы
  • Ca Ca удобен, re в основном используя только два терминала
  • Ca Cd отсоединяет текущий сеанс экрана и выходит из экранов. Затем вы можете использовать экран -r для возобновления этого сеанса. У вас может быть несколько сеансов отдельного экрана одновременно, в этом случае вы увидите список доступных сеансов.

Существует много других опций, например разделенные экраны, а также все ярлыки полностью настраиваются.

3
ответ дан 7 August 2018 в 18:34

Существуют две основные программы, которые вы можете использовать для поддержки программ и состояния терминала через несколько соединений ssh. Это экран (действующий, но, к сожалению, не имеющий силы. По-видимому, активно развивается теперь ) и tmux (более новый, активно поддерживается). Byobu - это интерфейс, который может работать поверх их этих систем и предоставлять дополнительную информацию о состоянии Ubuntu. В новых установках он будет использовать tmux в качестве бэкэнд, если у вас установлена ​​более старая установка byobu и существующая конфигурация, она будет поддерживать предыдущий бэкэнд, будь то экран или tmux.

Byobu

Byobu можно установить на компьютер, выполнив это на машине на базе Debian:

  sudo aptitude install byobu  

Используя yum, вы делаете

  su -c 'yum install byobu'  

Также можно установить byobu в других дистрибутивах.

Используя byobu

Вы можете запустить byobu, выполнив byobu на главной машине после подключения с помощью ssh. Это даст вам оболочку, которая выглядит так:

image-byobu [!d13]

Вы также можете использовать терминал Byobu на машине Ubuntu с опцией -X и легко получить

Использование:

Начать byobu, набрав byobu .

Вы можете нажать F2, чтобы создать новое окно внутри текущую сессию, F3-F4, чтобы переключаться между различными окнами.

Лучшая часть aboutobobu - вам не нужно фактически убивать процессы, запущенные в терминале, чтобы покинуть терминал. Вы можете просто отправить экран / tmux (скелет byobu) в фоновый режим и возобновить следующий раз:

  • Чтобы выйти из него и выполнить его (отключение), нажмите F6.
  • В следующий раз, когда вы придете, просто сделайте byobu , и вы вернетесь туда, где вы были. byobu-detach-attach [!d14]

Вы также можете создавать различные сеансы byobu byobu -S session1 и так далее. И вы можете подключиться к любому из них, когда вернетесь.

Вы можете сделать гораздо больше, используя Byobu. Используй это! Здесь некоторые [) здесь , здесь или здесь .

19
ответ дан 7 August 2018 в 18:34

Самый простой ответ ...

ctrl + z приостанавливает запущенную программу

«bg» запустит ее в фоновом режиме

2
ответ дан 7 August 2018 в 18:34

Другие вопросы по тегам:

Похожие вопросы: