ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Как сохранить процессы запущенными после SSH выхода из системы в Linux

Это происходит много раз, когда мы пытаемся получить доступ к приложению или контенту, но он запрашивает повторный вход или всплывающее окно, в котором говорится, что ваша сессия истекла. Обычно время ожидания сеанса истекает, когда содержимое находится в режиме ожидания и транзакция не выполняется. Много раз устанавливается переменная “session_time”, которая пока сохраняет активное соединение. Но что происходит, когда время сеанса истекает, сигнал “SIGNUP” отправляется процессам, работающим в фоновом режиме, а также для процессов, которые являются потомками основного процесса, которые вынуждены завершаться независимо от завершения или частичного завершения задачи. Итак, как мы можем сохранить процесс работает даже после выхода из SSH? В этой статье я объясню, как сохранить процесс работает даже после того, как SSH отключен от терминала Linux (Ubuntu 18.04 и CentOS 7).

1) Команда Screen

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

Использование одного сеанса screen

Для входа в сеанс отсоединенного экрана

$ screen -r

 

В то время как в экране; использовать «exit», чтобы полностью закончить сеанс экрана.

$ exit
[screen is terminating]

 

Вы находитесь в вашей родительской оболочки Bash; Проверка ‘screen -r’ , если есть экран сессии

$ screen -r

 

Нет экрана для возобновления.

Добавить несколько экранов

Добавьте больше сеансов экрана и просто переключитесь с одного на другой. Мы видели, как использовать один сеанс экрана выше. Давайте попробуем несколько. Добавить первый экран:

$ screen
(run 'top' from screen session; And "ctrl+a" + "d")
$ top	
[detached from 15603.pts-1.centos7]

 

Теперь добавьте второй экран:

$ screen

 

Запустите любую команду из этой новой сессии экрана по вашему желанию. Давайте попробуем «DF», чтобы проверить, смонтированные диски. (запуск «df -hT» с экраном сессии, и « “ctrl+a” + “d”)

$ df -hT 
[detached from 15652.pts-1.centos7]

 

Бонус: экранные имена слишком длинные? Назовем сеанс; имя заменит tty.host.
Это название сессии по Вашему желанию; назовем сессии как “ping”.

$ screen -S 	
$ screen -S ping

 

Затем отсоединить сессию. Вы увидите имя сеанса сразу после pid; вместо tty.host

$ ping -c5 andreyex.ru		
[detached from 12529.ping]
 $ screen -r
There are several suitable screens on:
        12456.ping      (Detached)				
        12142.pts-1.centos7     (Detached)
        12046.pts-1.centos7     (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.

2) Команда disown

Команда Top похожа на просмотр вкладки процессы в диспетчере задач Windows. Команда Top рассказывает все о текущей, мертвых и т. д. процессов. Также показывает загрузку процессора и загрузку процессора в среднем за 1 мин, 5 мин, 15 мин метку времени.

$ top > sys_summary &
$ jobs -l
[1]+ 10832 Stopped (signal) top > sys_summary
$ disown -h %1
$ ps -ef | grep top
root 2416 1979 0 13:21 ? 00:00:03 nautilus-desktop --force
root 10832 10724 0 13:21 pts/2 00:00:00 top
root 10915 10724 0 13:21 pts/2 00:00:00 grep --color=auto top

3) Команда nohup

Давайте запустим yum с помощью nohup для установки пакета

$ nohup yum install -y httpd* > ApacheInstall 2>&1 &

 

Теперь давайте посмотрим, рабочие места, работающие в фоновом режиме

$ jobs -l
[1]+  3646 Running                 nohup yum install -y httpd* > ApacheInstall 2>&1 &

4) Команда setsid

setsid – создает сеанс и устанавливает идентификатор группы процессов

setsid () создает новый сеанс, если вызывающий процесс не групповой процесс загрузки. PID вызывающего процесса устанавливается для обработки идентификатора сеанса и соответствующего группового идентификатора вызывающего процесса.

$ setsid iostat
$ ps -ef | grep iostat

 

Что бы прекратить используйте команду CLT+C

5) Команда Tmux

Tmux является терминальный мультиплексор. Переключение между несколькими программами в одном терминале производится легко отсоединить их (они продолжают работать в фоновом режиме) и прикрепить их к другому терминалу.

Присоединить и отсоединить сессии tmux

$ tmux attach
$ tmux detach

 

Выход/завершение tmux

$ exit

 

Именование сессий при создании его

$ tmux new -s

 

Закрепление с помощью имени

$ tmux attach

 

Переключение между сессиями с использованием имен

$ tmux switch -t

 

Сессии могут быть использованы для разделения различных рабочих сред. Я, как правило, сеанс «Офис» и сеанс «Главная страница»; в «кабинете», я все держать открытым, что мне нужно во время моего развития изо дня в день, в то время как в «Home», я продолжаю открывать текущие драгоценные камни с открытым исходным кодом для взлома на дома.

6) Команда byobu

Многие дистрибутивы не поддерживает Bayou, пожалуйста, следуйте ниже командам, чтобы получить byobu и установить на CentOS, Ubuntu или Fedora.

$ sudo apt-get install byobu (Ubuntu)
$ sudo yum install byobu (CentOS)

 

После установки для соответствующей среды используйте простую команду ниже

$ byobu

 

Теперь мы собираемся начать длительный процесс и выйти.

$ tar -xvzf community_images.tar.gz

 

Нажмите «F6» для фона выполнения процесса.
После входа в удаленную систему, просто введите Bayou повторно, чтобы прикрепить сеанс.

$ byobu

 

Как вы думаете, как сохранить процесс даже после выхода из сеанса SSH? Упоминайте в своих комментариях.

Как сохранить процессы запущенными после SSH выхода из системы в Linux

Exit mobile version