Daemon nedir?


12

Ubuntu bilgisayarımda çalışan Daemons hakkında çok fazla konuşma duyuyorum - bunlar nedir?

Yanıtlar:


15

Kısacası, bir Daemon arka plan işlemidir .

Arka plan programları sadece arka planda çalışan normal programlar olabilir, ancak birçoğu bir işlem başlatılarak, çatallanarak ve ebeveynden çıkılarak oluşturulur.

Bir işlemi çatallamak, tam bir kopyasını oluşturmak anlamına gelir. Bu sürecin üst öğesi , gerçek üst öğe hemen sonlandırılırsa, şu andaki init işlemidir /sbin/init; bu, her Unix benzeri işletim sisteminde ilk başlatılan şeydir. Şimdi, süreç Daemon olarak adlandırılır, onunla ilişkili TTY yoktur.

Python'da bir Daemon örneği:

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!"

Henüz bir tane değil, kesinlikle. Ayrıca geçerli çalışma dizinini, yeniden girilen standart girdi ve çıktıları günlük dosyalarına dönüştürmeniz gerekir. Bu wikipedia makalesinde kanlı detayları okuyabilirsiniz .

Örneği çalıştırırsanız, komut satırında başlattığınız işlem sona ermiş olsa bile iki saniye sonra yazdırıldığını fark edeceksiniz. Bu işlemin kopyası 'in' init tarafından çalıştırıldı.


8
bunu genişletmek için Windows'tan Linux'a geliyorsanız, arka plan pencerelerini Windows'un "hizmetlerinin" * nix eşdeğeri olarak düşünebilirsiniz.
nathwill

1
@ stefano-palazzo "... onunla ilişkili TTY'si yok" dediniz, ama sonra "... fark edeceksiniz, iki saniye sonra yazdırılıyor ...". TTY'nin sökülmesinin terminale yazamayacağınız anlamına geldiğini düşündüm.
Jorge Bucaran

1
@JorgeBucaran Evet. Baskı biraz yaramaz. Yine de, onu başlatan tty'nin standart çıkış akışına bir tutamağı olabilir. Bir dosyayı açtığınızda (/ dev / stdout gibi), bir sayı alırsınız (dosya tanımlayıcı olarak adlandırılır) ve açılan işlem devam ettiği sürece ona yazmanız gereken tek şey budur (görebilirsiniz. dosya açıldı /proc/*/fd). İyi davranmış bir daemon, stdout, stderr ve stdin için tutamaçlardan vazgeçerek kendini tamamen tty'den ayıracaktır.
Stefano Palazzo

1
@StefanoPalazzo Anlıyorum. Ebeveynin std / out / err işlemine bir referans saklanabilir ve yine de ondan ayrılabilir. TTY'ye keyfi olarak bir referans verebilirsem, bir süreci ayırmak ne anlama gelir? < Superuser.com/questions/178587/… > adresini yararlı buldum , ancak yine de belirsiz hissediyorum.
Jorge Bucaran

1
@JorgeBucaran, kendi stdio'larının (örneğin dup2 kullanarak ) oluşturduğunuz yeni işlemlerle (bir günlük dosyası gibi) üzerine yazmak anlamına gelir . İşte tam bir örnek
Stefano Palazzo

1

Çok görevli bilgisayar işletim sistemlerinde, arka plan programı, etkileşimli bir kullanıcının doğrudan denetimi altında olmak yerine, arka plan işlemi olarak çalışan bir bilgisayar programıdır. Geleneksel olarak, bir arka plan programının işlem adları, sürecin aslında bir arka plan programı olduğunu ve bir arka plan programı ile normal bir bilgisayar programı arasındaki ayrım için d harfiyle biter. Örneğin, syslogd, sistem günlüğü oluşturma özelliğini uygulayan arka plan programıdır ve sshd, gelen SSH bağlantılarına hizmet eden bir arka plan programıdır.

Gördüğünüz gibi Daemon'un katmanı


2
alıntı nereden?
Zanna

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.