Это происходит много раз, когда мы пытаемся получить доступ к приложению или контенту, но он запрашивает повторный вход или всплывающее окно, в котором говорится, что ваша сессия истекла. Обычно время ожидания сеанса истекает, когда содержимое находится в режиме ожидания и транзакция не выполняется. Много раз устанавливается переменная “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? Упоминайте в своих комментариях.