Słyszę wiele dyskusji na temat Daemonów działających na moim komputerze Ubuntu - czym one są?
Krótko mówiąc, demon jest procesem działającym w tle .
Demony mogą być zwykłymi programami działającymi w tle, jednak większość z nich jest tworzona przez uruchomienie procesu, rozwidlenie go i wyjście z rodzica.
Rozwidlenie procesu oznacza utworzenie jego dokładnej kopii. Proces macierzysty tego procesu, jeśli prawdziwy rodzic natychmiast zakończy działanie, jest teraz procesem init/sbin/init
, który jest pierwszą rzeczą uruchomioną w każdym systemie operacyjnym podobnym do Uniksa. Teraz proces nazywa się Demonem, nie ma z nim powiązanego TTY.
Oto przykład Daemona w Pythonie:
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!"
Mówiąc wprost, to jeszcze nie jeden. Trzeba będzie również zmienić bieżący katalog roboczy, zobrazować standardowe wejście i wyjście w plikach dziennika i tak dalej. Możesz przeczytać o krwawych szczegółach w tym artykule na Wikipedii .
Jeśli uruchomisz przykład, zauważysz, że po dwóch sekundach zostanie wydrukowany, nawet jeśli proces rozpoczęty w wierszu poleceń został zakończony. Kopia tego procesu jest teraz uruchamiana „przez” init.
/proc/*/fd
). Dobrze wychowany demon całkowicie odłączy się od tty, rezygnując z uchwytów na stdout, stderr i stdin.Jak widać warstwę Daemona
źródło