[ad_1]
В этом руководстве мы раскроем простую, но важную концепцию в обработка процессов в системе Linuxто есть как полностью отсоединить процесс от его управляющего терминала.
Когда Линукс процесс связан с терминалом, могут возникнуть две проблемы:
- Ваш управляющий терминал заполнен огромным количеством выходных данных и сообщений об ошибках/диагностике.
- В случае закрытия терминала процесс вместе со своими дочерними процессами будет прекращено.
Чтобы решить эти две проблемы, вам нужно полностью отсоединить процесс от управляющего терминала. Прежде чем мы на самом деле перейдем к решению проблемы, давайте кратко расскажем, как запускать процессы в фоновом режиме в Linux.
Оглавление
Запуск команды или процесса Linux в фоновом режиме
Если процесс уже выполняется, например, пример команды tar ниже, просто нажмите Ctrl+Z
чтобы остановить его, введите команду bg
чтобы продолжить его выполнение в фоновом режиме как задание.
Вы можете просмотреть все свои фоновые задания, набрав jobs
. Однако его стандартный ввод, стандартный выводи стдерр все еще подключены к терминалу.
$ tar -czf home.tar.gz . $ bg $ jobs
Вы также можете запустить процесс Linux в фоновом режиме, используя амперсанд, &
знак.
$ tar -czf home.tar.gz . & $ jobs
Взгляните на пример ниже, хотя команда смолы был запущен как фоновое задание, на терминал по-прежнему было отправлено сообщение об ошибке, означающее, что процесс все еще подключен к управляющему терминалу.
$ tar -czf home.tar.gz . & $ jobs tar: ./.config/etcher: Cannot open: Permission denied
Сохраняйте процесс Linux запущенным после выхода из системы
Мы будем использовать отречься команда, которая используется после того, как процесс был выполнен и переведен в фоновый режим, ее работа заключается в удалении задания оболочки из списка активных заданий оболочки, поэтому вы не будете использовать fg
, bg
команд на эту конкретную работу больше.
Кроме того, когда вы закрываете управляющий терминал или выходите из системы, задание не зависает и не отправляет ПОДПИСАТЬСЯ на любую дочернюю работу.
Давайте посмотрим на приведенный ниже пример использования отрекся встроенная функция bash.
$ sudo rsync Templates/* /var/www/html/files/ & $ jobs $ disown -h %1 $ jobs
Вы также можете использовать nohup
Команда, которая также позволяет процессу продолжать работу в фоновом режиме, когда пользователь выходит из оболочки.
$ nohup tar -czf iso.tar.gz Templates/* & $ jobs
Отключить процесс Linux от терминала
Поэтому, чтобы полностью отсоединить процесс от управляющего терминала, используйте следующий формат команды, это более эффективно для графического пользовательского интерфейса (графический интерфейс) приложения, такие как Firefox:
$ firefox </dev/null &>/dev/null &
В Linux, /dev/ноль это специальный файл устройства который списывает (избавляется) от всех записанных в него данных, в приведенной выше команде ввод считывается, а вывод отправляется в /dev/ноль.
В качестве заключительного замечания, если процесс подключен к управляющему терминалу, как пользователь, вы увидите несколько выходных строк данных процесса, а также сообщения об ошибках на вашем терминале. Опять же, когда вы закроете управляющий терминал, ваш процесс и дочерние процессы будут завершены.
Важно отметить, что с любыми вопросами или замечаниями по этому вопросу обращайтесь к нам, используя форму для комментариев ниже.