Нужно ли отключать процесс для продолжения работы после отключения?

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

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

Это потому, что я не совсем понял, что такое disown или есть какие-то настройки где-то, влияющие на поведение команды bg по умолчанию?

Вот что я сделал:

  • Подключен к моей коробке CentOS 6 через SSH
  • Создал простой процесс:

     tar zcvf example.tar.gz ./examplepath > /dev/null 2>&1 
  • Приостановил работу

  • Возобновил его в фоновом режиме через bg 1
  • Отключен от SSH-сервера

Затем я проверил по FTP, чтобы узнать, все еще растет размер файла .tar.gz .

2 Solutions collect form web for “Нужно ли отключать процесс для продолжения работы после отключения?”

Процессы, создаваемые с помощью bg или & , обычно умирают в двух сценариях:

  1. Оболочка получает SIGHUP
  2. Они пытаются писать на терминал, который больше не существует.

Пункт №1 является основным виновником закрытия терминала. Однако независимо от того, произойдет это или нет, зависит от того, как вы закрываете терминал. Вы можете закрыть его:

  1. Что-то вроде нажатия «X» в вашем оконном менеджере
  2. Вы можете ввести exit , logout или CTRL + D.

Пункт №1 – это тот, который приведет к отправке SIGHUP. # 2 нет.

Короче говоря, если вы выполняете процесс с помощью bg , а затем выходите с exit , exit logout или CTRL + D , процесс не будет убит.

Когда вы закрываете терминал, все процессы, которые используют этот терминал (см. Столбец TTY в ps -elf ), получают SIGHUP . Он должен обработать, что делать в SIGHUP . В классических unixes (AIX, Solaris) процесс закрывается по этому сигналу. Вот почему вам нужно использовать disown . От man bash :

Оболочка выходит по умолчанию при получении SIGHUP. Перед выходом из него интерактивная оболочка передает SIGHUP во все задания, запускается или останавливается. Остановленные задания отправляются SIGCONT для обеспечения получения SIGHUP. Чтобы оболочка не отправляла сигнал на конкретное задание, его следует удалить из таблицы заданий с отключенным встроенным устройством (см. Ниже инструкции SHELL BUILTIN COMMANDS) или пометить, чтобы не получать SIGHUP с помощью disown -h.

  • Туннель AFP через SSH через Интернет
  • переопределение параметров для конфигурации клиента openssh
  • Возможно ли иметь условные параметры в ~ / .ssh / config в зависимости от вызывающего приложения (ssh или sshfs)?
  • Как загрузить файл, а затем проверить его и запустить некоторые другие команды, используя только ssh, cat и diff в одном сеансе SSH?
  • Расчет времени для отправки одного файла с фиксированной пропускной способностью сети?
  • Пусть удаленный сеанс ssh знает о tmux?
  • Невозможно нажать git update и запустить команды Unix при подключении через SSH
  • если условие с ssh выходит во время цикла без завершения
  • Как отключить tty для одного пользователя, только используя файл Sudoers.d?
  • Вопросы безопасности сервера SSH в Интернете
  • Автозаполнение имен хостов при использовании SSH в файле истории
  • Interesting Posts

    cd: разрешено: binutils-2.21.1

    Как переименовать несколько файлов

    Вопросы об использовании ssh и о том, как они относятся к пользователям

    Почему мне нужно использовать newgrp или su (или выйти из системы и войти снова), чтобы применить новые членства в группах?

    Что такое символ трубы «x | y» »в заявлении case?

    Почему многие команды предоставляют «тихий» вариант?

    В чем проблема с этим скриптом для изменения обоев?

    Проблемы с RDP-доступом к пакету обновления 1 для Windows 7 с удаленного рабочего стола Remmina

    Как запустить программу из оболочки bash без ее запуска в процессе оболочки

    Как найти оптимальное разрешение монитора и заставить его работать? мягкая фетровая шляпа

    Сделать отступ от отступов GNU длинными комментариями

    Действительные символы здесь doc tag

    Должен ли я выводить имя программы при возникновении предупреждения или ошибки?

    Автоматически изменяется ли tmpfs при изменении объема ОЗУ и конкурирует ли он с несколькими tmpfs?

    скрипт использовать вывод команды (ls) и использовать ее в другой команде

    Linux и Unix - лучшая ОС в мире.