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

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

Я спрашиваю, потому что каждый сайт, который я посетил, говорит об использовании 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.

  • ssh, sudo, а затем скачать?
  • PuTTY не подключается через SSH; другие клиенты работают нормально
  • Как перезаписать эту функцию, чтобы избежать ввода аргументов
  • sshfs: тип файла отличается от точки монтирования
  • пароль root не работает, но может ssh через пользователя sudo (centos)
  • Разблокируйте зашифрованные тома после перезапуска сервера через SSH
  • автоматический пароль без пароля ssh при входе / перезапуске
  • Как скопировать между двумя удаленными узлами, используя tar, переданные в SSH с удаленного сервера, когда за брандмауэром?
  • Мой ключ ssh не работает, разрешения выглядят хорошо
  • SSH - требуется только аутентификатор Google из-за пределов локальной сети
  • PHP exec ожидает скрипт с SCP, затем SSH
  • Interesting Posts

    Параметры команды -k команды nc

    Разница между очками и tty

    Arch Linux не подключается к Wi-Fi больше

    Командная строка Linux: путаница glob

    Как остановить все единицы, принадлежащие одной и той же цели?

    Можете ли вы дополнительно интегрировать и представить последовательные выходные данные команды vututils в vim с использованием последовательных разделов и т. Д.?

    Тестирование успеха алгоритма перегрузки

    С какой целью драйвер блочного устройства использует младшие номера?

    Переустановите Grub в целевой системе

    Ошибка синтаксиса в команде if / else

    Идентифицировать удаленный сервер Windows из сценария оболочки

    Невозможно переключиться на графический процессор nvidia в linux mint 18

    Что делает команда sed в строке ниже?

    Направление звука для конкретных приложений

    Автоматическое создание make-файлов для другого компилятора из существующего make-файла

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