Что такое Демон?

Я слышал много разговоров о том, как демоны работают на моем компьютере Ubuntu - что это?

12
задан 22 December 2011 в 12:00

2 ответа

Короче говоря, Daemon - это фоновый процесс.

Демоны могут быть обычными программами, которые работают в фоновом режиме, однако большинство из них создаются путем запуска процесса, разворачивания его и выхода из родителя.

Чтобы развить процесс, нужно создать точную копию. Родитель этого процесса, если настоящий родитель заканчивается сразу, теперь является процессом init на /sbin/init, что является первым, что началось в каждой операционной системе, подобной Unix. Теперь этот процесс называется Daemon, у него нет TTY, связанного с ним.

Вот пример Демона в Python:

import sys, os, time

pid = os.fork()

# there now exist two processes
if pid > 0: # If this is the parent,
    sys.exit(0) # quit.

# this is the background part:
time.sleep(5)
print "Hello, World!"

Это еще не один, строго говоря. Вам также необходимо будет изменить текущий рабочий каталог, отредактировать стандартный ввод и вывод в лог-файлы и так далее. Вы можете прочитать подробные сведения в этой статье в википедии.

Если вы запустите этот пример, вы заметите, что через две секунды он будет распечатан, даже если процесс, который вы начали в командной строке, завершен , Копия этого процесса запускается «по» init сейчас.

14
ответ дан 25 May 2018 в 22:58
  • 1
    чтобы расширить это, если вы придете в Linux из Windows, вы можете представить себе демонов как эквивалент * nix для Windows '" services & quot ;. – nathwill 16 February 2011 в 02:32
  • 2
    @ stefano-palazzo Вы сказали «... у него нет TTY, связанного с ним», но затем «... вы заметите, через две секунды он печатает ...». Я думал, что отсоединение TTY означает, что вы не можете написать терминал. – Jorge Bucaran 23 June 2016 в 07:52
  • 3
    @JorgeBucaran Да. Печать немного озорная. Он все еще может иметь дескриптор стандартного потока вывода tty, который запустил его. Когда вы открываете файл (например, / dev / stdout), вы получаете номер (называемый файловым дескриптором), и это все, что вам нужно записать в него, пока процесс, который его открыл, все еще работает (вы можете видеть открытые файлы в /proc/*/fd). Хорошо выполненный демон полностью отделится от tty, отказавшись от ручек до stdout, stderr и stdin. – Stefano Palazzo♦ 23 June 2016 в 08:08
  • 4
    @StefanoPalazzo я вижу. Можно сохранить ссылку на родительский процесс std / out / err и все же отсоединиться от него. Если я могу произвольно сохранить ссылку на TTY, то что означает отделить процесс? Я нашел & lt; superuser.com/questions/178587/… ; полезно, но все еще чувствую себя неясным. – Jorge Bucaran 23 June 2016 в 09:09
  • 5
    @JorgeBucaran означает перезаписать собственные процессы (например, с помощью dup2 ) с новыми, которые вы создали (например, файл журнала). Вот полный пример – Stefano Palazzo♦ 23 June 2016 в 09:17
В многозадачных компьютерных операционных системах демон - это компьютерная программа, работающая как фоновый процесс, а не находящаяся под прямым контролем интерактивного пользователя. Традиционно имена процессов конца демона с буквой d, чтобы пояснить, что процесс, по сути, является демоном, а также для дифференциации между демоном и нормальной компьютерной программой. Например, syslogd - это демон, который реализует средство регистрации системы, а sshd - это демон, который обслуживает входящие соединения SSH.

Как вы видите слой Daemon

1
ответ дан 25 May 2018 в 22:58

Другие вопросы по тегам:

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