Конечно, для вашей конкретной проблемы вы хотите следовать советам @chaos и @steeldriver, но в общем случае, чтобы «постоянно хранить значения в терминале», вы ищете переменные оболочки.
Если «навсегда» вы имеете в виду «пока я не выхожу из сеанса терминала», то вы можете просто использовать команду export server1=111.222.111.222, если вы используете оболочку на основе bash (setenv server1 111.222.111.222 для оболочки csh/tcsh, если я правильно помню). Затем вы можете получить доступ к своей переменной, префиксную ее с помощью $: ssh root@$server1.
Если под «постоянно» вы подразумеваете «каждый раз, когда я запускаю новый терминал», вам нужно будет установить свою переменную в одном из файлов init оболочки. Например. в $HOME/.bashrc для оболочек, основанных на bash, или $HOME/.cshrc - предположительно, используя тот же синтаксис, о котором упоминалось в предыдущем абзаце. Обратите внимание, что вам нужно будет запустить файл инициализации (например, source $HOME/.bashrc или открыть новую оболочку для изменений, которые необходимо принять во внимание.
Примечание: ответ из памяти может потребовать небольшие корректировки. [!d3 ]
Существуют две основные программы, которые вы можете использовать для поддержки программ и состояния терминала через несколько соединений ssh. Это экран (действующий, но, к сожалению, не имеющий силы. По-видимому, активно развивается теперь ) и tmux (более новый, активно поддерживается). Byobu - это интерфейс, который может работать поверх их этих систем и предоставлять дополнительную информацию о состоянии Ubuntu. В новых установках он будет использовать tmux в качестве бэкэнд, если у вас установлена более старая установка byobu и существующая конфигурация, она будет поддерживать предыдущий бэкэнд, будь то экран или tmux.
Byobu можно установить на компьютер, выполнив это на машине на базе Debian:
sudo aptitude install byobu
Используя yum, вы делаете
su -c 'yum install byobu'
Также можно установить byobu в других дистрибутивах.
Вы можете запустить byobu, выполнив byobu
на главной машине после подключения с помощью ssh. Это даст вам оболочку, которая выглядит так:
[!d13]
Вы также можете использовать терминал Byobu на машине Ubuntu с опцией -X и легко получить
Начать byobu, набрав byobu
.
Вы можете нажать F2, чтобы создать новое окно внутри текущую сессию, F3-F4, чтобы переключаться между различными окнами.
Лучшая часть aboutobobu - вам не нужно фактически убивать процессы, запущенные в терминале, чтобы покинуть терминал. Вы можете просто отправить экран / tmux (скелет byobu) в фоновый режим и возобновить следующий раз:
byobu
, и вы вернетесь туда, где вы были. [!d14] Вы также можете создавать различные сеансы byobu byobu -S session1
и так далее. И вы можете подключиться к любому из них, когда вернетесь.
Вы можете сделать гораздо больше, используя Byobu. Используй это! Здесь некоторые [) здесь , здесь или здесь .
Вместо:
cmd options;
Добавить до nohup
:
nohup cmd options & amp;
Затем вы сможете увидеть консольный stdout:
tail -f nohup.out
Самый лучший способ - это самый простой способ.
nohup long-running-command & amp;
Это было сделано специально для этого, оно даже записывает stdout в nohup.log
man nohup
Если вы хотите «зафрахтовать» некоторые уже запущенные задачи, то лучший выбор - ctrl + z, затем запустите
bg
(это будет зависеть от вашей последней приостановленной задачи, позволяющей ей продолжать работать)
, тогда быстрое disout
должно поддерживать процесс после выхода из системы.
screen
и другие могут это сделать, но это не то, для чего они предназначены. Я рекомендую nohup
для задач, которые, как вы знаете, собираетесь оставить, и bg
для задач, которые вы уже выполняете, и не хотите повторно запускать.
Имейте в виду, что оба имеют значение bash. Если вы не используете bash, тогда команды могут быть разными.
Вы не можете сделать это после того, как процесс начался, вам нужно настроить все, прежде чем запускать долгое задание.
Вы можете использовать nohup , но современная мудрость предлагает вы используете экран или byobu как ваш логин, чтобы вы могли отсоединиться и оставить все в порядке.
Экран имеет то преимущество, что вы можете отсоединиться от одной машины и снова подключиться к другой, что удобно, если вы хотите проверить длительные процессы, которые выходят за пределы рабочего дня.
] Существует разумное начало руководства к экрану здесь.
byobu предоставляет простой в использовании интерфейс поверх экрана с меню и т. Д. Это также текущая реализация экрана на более новой ubuntu. F2 для запуска нового терминала F3 / F4 для переключения взад и вперед и F6 для разъединения. Навсегда выйдите на конечные терминалы.
Для одного сценария оболочки, который у меня запущен в течение длительного периода времени, я войду в систему и запустил процесс в фоновом режиме, используя «& amp;».
Пример:
/ path / to / my / script & amp;
Я вышел из системы и отключил сеанс SSH. Когда я вхожу в систему через некоторое время, сценарий все еще выполняется, как доказано непрерывным сбором данных из сценария.
Эй, пока я согласился, что экран является наиболее эффективным вариантом. Вы можете использовать vncserver, а затем запустить процесс на нем.
Кроме того, если ваши единственные проблемы состоят в том, чтобы запустить процесс и не нужно брать его обратно, и, самое главное, вы не знали, что будете нужно закрыть сеанс, и у вас уже запущен процесс, вам не повезло, если вы использовали bash в качестве оболочки
Сначала вам нужно отправить процесс на задний план, набрав Ctrl + Z, а затем bg% 1 (число зависит от номера задания, обычно это 1, но вы можете легко вытащить список с помощью заданий команды)
Наконец, вызывается команда disown (за ней следует jobid ... так же, как и с bg)
Это приведет к удалению отношения родитель-потомок между вашей оболочкой и процессом в фоновом режиме, предотвращая ее смерть, когда ваша оболочка будет завершена.
Экран и nohup - лучший способ, но если вам нужно отключить уже запущенный процесс без экрана или nohup, вы можете запустить команду disown.
disown [-ar] [ -h] [
jobspec
... |
pid
...]
Без options, удалите каждый jobspec из таблицы активных заданий. Если задана опция
blockquote>-h
, задание не удаляется из таблицы, но помечено так, что SIGHUP не отправляется на задание, если оболочка получает SIGHUP. Если jobspec отсутствует, и ни опция-a
, ни опция-r
не используются, используется текущее задание. Если не задано jobspec , опция-a
означает удаление или отметку всех заданий; параметр-r
без аргумента jobspec ограничивает выполнение выполняемых заданий.С отключением вы можете закрыть терминал и получить процесс работающий на машине.
Самый простой ответ ...
ctrl + z приостанавливает запущенную программу
«bg» запустит ее в фоновом режиме
Существуют две основные программы, которые вы можете использовать для поддержки программ и состояния терминала через несколько соединений ssh. Это экран (действующий, но, к сожалению, не имеющий силы. По-видимому, активно развивается теперь ) и tmux (более новый, активно поддерживается). Byobu - это интерфейс, который может работать поверх их этих систем и предоставлять дополнительную информацию о состоянии Ubuntu. В новых установках он будет использовать tmux в качестве бэкэнд, если у вас установлена более старая установка byobu и существующая конфигурация, она будет поддерживать предыдущий бэкэнд, будь то экран или tmux.
Byobu можно установить на компьютер, выполнив это на машине на базе Debian:
sudo aptitude install byobu
Используя yum, вы делаете
su -c 'yum install byobu'
Также можно установить byobu в других дистрибутивах.
Вы можете запустить byobu, выполнив byobu
на главной машине после подключения с помощью ssh. Это даст вам оболочку, которая выглядит так:
[!d13]
Вы также можете использовать терминал Byobu на машине Ubuntu с опцией -X и легко получить
Начать byobu, набрав byobu
.
Вы можете нажать F2, чтобы создать новое окно внутри текущую сессию, F3-F4, чтобы переключаться между различными окнами.
Лучшая часть aboutobobu - вам не нужно фактически убивать процессы, запущенные в терминале, чтобы покинуть терминал. Вы можете просто отправить экран / tmux (скелет byobu) в фоновый режим и возобновить следующий раз:
byobu
, и вы вернетесь туда, где вы были. [!d14] Вы также можете создавать различные сеансы byobu byobu -S session1
и так далее. И вы можете подключиться к любому из них, когда вернетесь.
Вы можете сделать гораздо больше, используя Byobu. Используй это! Здесь некоторые [) здесь , здесь или здесь .
Вы должны проверить экран GNU и посмотреть, поможет ли он вам. В зависимости от того, как вам нужно приложение для запуска в режиме реального времени, это может вызвать больше проблем, чем оно решает, но по крайней мере это позволит вам возобновить сеанс, как будто вы его никогда не покидали.
Как использовать:
screen
для первого запуска, прокрутите вводные сообщения, вам нужно передать терминал. -r
для возобновления этого сеанса. У вас может быть несколько сеансов отдельного экрана одновременно, в этом случае вы увидите список доступных сеансов. Существует много других опций, например разделенные экраны, а также все ярлыки полностью настраиваются.
Вместо:
cmd options;
Добавить до nohup
:
nohup cmd options & amp;
Затем вы сможете увидеть консольный stdout:
tail -f nohup.out
Самый лучший способ - это самый простой способ.
nohup long-running-command & amp;
Это было сделано специально для этого, оно даже записывает stdout в nohup.log
man nohup
Если вы хотите «зафрахтовать» некоторые уже запущенные задачи, то лучший выбор - ctrl + z, затем запустите
bg
(это будет зависеть от вашей последней приостановленной задачи, позволяющей ей продолжать работать)
, тогда быстрое disout
должно поддерживать процесс после выхода из системы.
screen
и другие могут это сделать, но это не то, для чего они предназначены. Я рекомендую nohup
для задач, которые, как вы знаете, собираетесь оставить, и bg
для задач, которые вы уже выполняете, и не хотите повторно запускать.
Имейте в виду, что оба имеют значение bash. Если вы не используете bash, тогда команды могут быть разными.
Я застрял в большом mv, поэтому я не мог остановить процесс, настроить экран и снова запустить его. Мне удалось выйти из сеанса ssh с запущенным процессом, выполнив следующие шаги:
Шаг 3 приостанавливает текущий процесс (например, моя команда «mv»). Шаг 4 ставит приостановленный процесс на задний план и возобновляет его. Шаг 5 позволяет отказаться от процесса.
Самый простой способ - запустить команду в фоновом режиме с помощью & amp;
. Затем просто напишите:
disown -a
В то время как все говорят использовать 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 ведет себя по умолчанию? Может быть, некоторые системные администраторы меняют значения по умолчанию на больших оболочках, чтобы процессы своих пользователей перегружали систему?
Вы не можете сделать это после того, как процесс начался, вам нужно настроить все, прежде чем запускать долгое задание.
Вы можете использовать nohup , но современная мудрость предлагает вы используете экран или byobu как ваш логин, чтобы вы могли отсоединиться и оставить все в порядке.
Экран имеет то преимущество, что вы можете отсоединиться от одной машины и снова подключиться к другой, что удобно, если вы хотите проверить длительные процессы, которые выходят за пределы рабочего дня.
] Существует разумное начало руководства к экрану здесь.
byobu предоставляет простой в использовании интерфейс поверх экрана с меню и т. Д. Это также текущая реализация экрана на более новой ubuntu. F2 для запуска нового терминала F3 / F4 для переключения взад и вперед и F6 для разъединения. Навсегда выйдите на конечные терминалы.
disown
для достижения этого. См. Ответ @ bassgey
– Rich
23 May 2013 в 21:11
отключить
и при необходимости просто Ctrl-z
, затем bg
, чтобы получить его от активного терминала и фона. Затем отклоняется
.
– mimoralea
22 November 2017 в 00:49
Для одного сценария оболочки, который у меня запущен в течение длительного периода времени, я войду в систему и запустил процесс в фоновом режиме, используя «& amp;».
Пример:
/ path / to / my / script & amp;
Я вышел из системы и отключил сеанс SSH. Когда я вхожу в систему через некоторое время, сценарий все еще выполняется, как доказано непрерывным сбором данных из сценария.
& amp;
, если вы выйдете из системы и зашли на свой сеанс SSH, процесс все равно будет работает i>, но вы не будете иметь возможность видеть вывод i> этого процесса (если ваш сценарий эхом отозвался, вы его не увидите, но если он напишет файл, файл будет там)
– DarkCygnus
24 August 2017 в 19:20
Экран и nohup - лучший способ, но если вам нужно отключить уже запущенный процесс без экрана или nohup, вы можете запустить команду disown.
disown [-ar] [ -h] [
jobspec
... |
pid
...]
Без options, удалите каждый jobspec из таблицы активных заданий. Если задана опция
blockquote>-h
, задание не удаляется из таблицы, но помечено так, что SIGHUP не отправляется на задание, если оболочка получает SIGHUP. Если jobspec отсутствует, и ни опция-a
, ни опция-r
не используются, используется текущее задание. Если не задано jobspec , опция-a
означает удаление или отметку всех заданий; параметр-r
без аргумента jobspec ограничивает выполнение выполняемых заданий.С отключением вы можете закрыть терминал и получить процесс работающий на машине.
disown -a & amp; & amp; Выход
– Stefano Palazzo♦
21 October 2010 в 22:45
disown
, и он его убил.
– HDave
24 September 2014 в 02:07
Самый простой ответ ...
ctrl + z приостанавливает запущенную программу
«bg» запустит ее в фоновом режиме
disown
или nohup
), это обычно не приведет к запуску процесса после окончания сеанса SSH.
– Eliah Kagan
13 August 2013 в 05:32
Существуют две основные программы, которые вы можете использовать для поддержки программ и состояния терминала через несколько соединений ssh. Это экран (действующий, но, к сожалению, не имеющий силы. По-видимому, активно развивается теперь ) и tmux (более новый, активно поддерживается). Byobu - это интерфейс, который может работать поверх их этих систем и предоставлять дополнительную информацию о состоянии Ubuntu. В новых установках он будет использовать tmux в качестве бэкэнд, если у вас установлена более старая установка byobu и существующая конфигурация, она будет поддерживать предыдущий бэкэнд, будь то экран или tmux.
Byobu можно установить на компьютер, выполнив это на машине на базе Debian:
sudo aptitude install byobu
Используя yum, вы делаете
su -c 'yum install byobu'
Также можно установить byobu в других дистрибутивах.
Вы можете запустить byobu, выполнив byobu
на главной машине после подключения с помощью ssh. Это даст вам оболочку, которая выглядит так:
[!d13]
Вы также можете использовать терминал Byobu на машине Ubuntu с опцией -X и легко получить
Начать byobu, набрав byobu
.
Вы можете нажать F2, чтобы создать новое окно внутри текущую сессию, F3-F4, чтобы переключаться между различными окнами.
Лучшая часть aboutobobu - вам не нужно фактически убивать процессы, запущенные в терминале, чтобы покинуть терминал. Вы можете просто отправить экран / tmux (скелет byobu) в фоновый режим и возобновить следующий раз:
byobu
, и вы вернетесь туда, где вы были. [!d14] Вы также можете создавать различные сеансы byobu byobu -S session1
и так далее. И вы можете подключиться к любому из них, когда вернетесь.
Вы можете сделать гораздо больше, используя Byobu. Используй это! Здесь некоторые [) здесь , здесь или здесь .
Вы должны проверить экран GNU и посмотреть, поможет ли он вам. В зависимости от того, как вам нужно приложение для запуска в режиме реального времени, это может вызвать больше проблем, чем оно решает, но по крайней мере это позволит вам возобновить сеанс, как будто вы его никогда не покидали.
Как использовать:
screen
для первого запуска, прокрутите вводные сообщения, вам нужно передать терминал. -r
для возобновления этого сеанса. У вас может быть несколько сеансов отдельного экрана одновременно, в этом случае вы увидите список доступных сеансов. Существует много других опций, например разделенные экраны, а также все ярлыки полностью настраиваются.
Самый простой способ - запустить команду в фоновом режиме с помощью & amp;
. Затем просто напишите:
disown -a
В то время как все говорят использовать 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 ведет себя по умолчанию? Может быть, некоторые системные администраторы меняют значения по умолчанию на больших оболочках, чтобы процессы своих пользователей перегружали систему?
Эй, пока я согласился, что экран является наиболее эффективным вариантом. Вы можете использовать vncserver, а затем запустить процесс на нем.
Кроме того, если ваши единственные проблемы состоят в том, чтобы запустить процесс и не нужно брать его обратно, и, самое главное, вы не знали, что будете нужно закрыть сеанс, и у вас уже запущен процесс, вам не повезло, если вы использовали bash в качестве оболочки
Сначала вам нужно отправить процесс на задний план, набрав Ctrl + Z, а затем bg% 1 (число зависит от номера задания, обычно это 1, но вы можете легко вытащить список с помощью заданий команды)
Наконец, вызывается команда disown (за ней следует jobid ... так же, как и с bg)
Это приведет к удалению отношения родитель-потомок между вашей оболочкой и процессом в фоновом режиме, предотвращая ее смерть, когда ваша оболочка будет завершена.
экране
, вопрос был поставлен после входа в систему, как сохранить работу процессов, теперь после входа в систему, но перед их запуском. Отличный ответ Хорхе, ты действительно помог мне! :)
– jwbensley
10 August 2012 в 22:13
bg
(без % 1
) достаточно часто, поскольку по умолчанию используется текущее задание
– Walter Tross
24 November 2012 в 03:55
Самый лучший способ - это самый простой способ.
nohup long-running-command & amp;
Это было сделано специально для этого, оно даже записывает stdout в nohup.log
man nohup
Если вы хотите «зафрахтовать» некоторые уже запущенные задачи, то лучший выбор - ctrl + z, затем запустите
bg
(это будет зависеть от вашей последней приостановленной задачи, позволяющей ей продолжать работать)
, тогда быстрое disout
должно поддерживать процесс после выхода из системы.
screen
и другие могут это сделать, но это не то, для чего они предназначены. Я рекомендую nohup
для задач, которые, как вы знаете, собираетесь оставить, и bg
для задач, которые вы уже выполняете, и не хотите повторно запускать.
Имейте в виду, что оба имеют значение bash. Если вы не используете bash, тогда команды могут быть разными.
Я застрял в большом mv, поэтому я не мог остановить процесс, настроить экран и снова запустить его. Мне удалось выйти из сеанса ssh с запущенным процессом, выполнив следующие шаги:
Шаг 3 приостанавливает текущий процесс (например, моя команда «mv»). Шаг 4 ставит приостановленный процесс на задний план и возобновляет его. Шаг 5 позволяет отказаться от процесса.
Вместо:
cmd options;
Добавить до nohup
:
nohup cmd options & amp;
Затем вы сможете увидеть консольный stdout:
tail -f nohup.out
Вы можете сделать это, используя экран
.
Наберите man screen
, чтобы узнать больше или прочитать эту страницу screen man .
Простой сценарий:
экран
Затем запустите процесс, который вы хотите. -r
. Это «возобновит» сеанс экрана и вы можете увидеть результат своего процесса. -S name
, чтобы упростить подключение к правильному позже.
– David Oneill
25 November 2012 в 04:37
-S
перед выходом и screen -r
при возвращении поразительна!
– Meloman
14 March 2018 в 14:03