Что именно означает, что сеанс «работает в фоновом режиме»?

Ваш последний комментарий раскрывает вашу проблему.

Удалите строку исключения из файла репо и/или /etc/yum.conf, запустите yum clean allи попробуйте снова установить glibc. Эта строка исключает пакеты (и ), которые необходимо обновить.

1
11.04.2020, 08:02
1 ответ

О процессах Unix можно сказать, что они «работают в фоновом режиме» по двум основным причинам:

  1. Все еще порождается другим процессом, таким как оболочка. Вот что происходит, если вы используете оператор &в оболочках Bourne:

    sleep 10 &
    

    Этот sleepпроцесс будет запускаться оболочкой в ​​фоновом режиме, поэтому он будет продолжать работать, но вы сможете взаимодействовать с приглашением оболочки и выполнять другие команды. Если программа, работающая в фоновом режиме, попытается прочитать какой-либо ввод, она будет остановлена ​​сигналом SIGTTIN.

    Однако, что важно, он по-прежнему принадлежит процессу оболочки, в котором он был запущен, и он по-прежнему подключен к tty (терминалу, на котором он запущен ), и если tty закрыт (ssh соединение обрывается и оболочка завершает работу ), процесс будет уничтожен с помощью SIGHUP.

    Это называется управлением заданиями оболочки -процессы могут быть переведены в фоновый режим с помощью &, bgили ^Zи возвращены на передний план с помощью fgи перечислены с помощью jobsи т. д.. На самом деле он предназначен для временного запуска одной команды в фоновом режиме, пока вы работаете над другой, а не для длительных -запущенных процессов, которые должны быть защищены от выхода из оболочки и закрытия терминала.

  2. Процесс-демон. Это процесс, который полностью отделяется от родительского процесса и от его ttys. У него новая группа процессов и идентификатор сеанса, а его родитель имеет PID 1 (, обычно init, хотя в современном Linux, я полагаю, systemdвзял на себя эту роль ). Поскольку процесс демона не связан с оболочкой и не привязан к tty, он не уничтожается при выходе из оболочки или закрытии tty.Он должен быть явно уничтожен системой или пользователем. Большинство систем Unix поставляются со множеством демонов по умолчанию для выполнения всевозможных действий.

Это широкое объяснение, и я не упомянул множество подробностей об управлении заданиями оболочки и процессах демона.

Существует программа под названием nohup, которая может заставить программу работать с (1 )игнорировать сигнал SIGHUP, поэтому она не завершается при закрытии tty. Это не делает его настоящим демоном, но хорошо подходит для простых заданий, которые только выводят и никогда не требуют ввода.

tmux — это программа, работающая как демон, но позволяющая запускать другие программы (оболочки или что-то еще )внутри нее. tmux намного сложнее, чем nohup-, вы можете запускать полноэкранные программы и программы, требующие как ввода, так и вывода. Поскольку это демон, он не уничтожается, когда tty исчезает (, например, когда разрывается соединение ssh ).

В tmux «присоединен» означает, что tmux показывает один или несколько процессов, запущенных внутри него на терминале. Вы можете «отсоединить» tmux от этого терминала, а затем снова «присоединить» его к другому терминалу. Отключение происходит автоматически, если ssh-соединение обрывается или разрывается. Таким образом, вы можете закрыть свой терминал и ssh, а затем подключиться с другого терминала и подключить tmux, и все будет как было.

2
19.03.2021, 02:30

Теги

Похожие вопросы