Apa itu Daemon?

12

Saya mendengar banyak pembicaraan tentang Daemon yang berjalan di komputer Ubuntu saya - apakah itu?

Marco Ceppi
sumber

Jawaban:

15

Singkatnya, Daemon adalah proses latar belakang .

Daemon bisa saja berupa program normal yang berjalan di latar belakang, namun sebagian besar dibuat dengan memulai suatu proses, forking dan keluar dari induknya.

Memotong suatu proses berarti membuat salinan persisnya. Induk proses itu, jika induk sebenarnya langsung berakhir, sekarang adalah proses init di /sbin/init, yang merupakan hal pertama yang dimulai pada setiap sistem operasi mirip Unix. Sekarang, proses ini disebut Daemon, tidak memiliki TTY yang terkait dengannya.

Berikut ini contoh Daemon dengan 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!"

Ini belum satu, secara tegas. Anda juga harus mengubah direktori kerja saat ini, redicted input dan output standar untuk file log dan sebagainya. Anda dapat membaca detail berdarah di artikel wikipedia ini .

Jika Anda menjalankan contoh, Anda akan melihat, setelah dua detik itu mencetak, meskipun proses yang Anda mulai pada baris perintah telah dihentikan. Salinan proses ini dijalankan 'oleh' init sekarang.

Stefano Palazzo
sumber
8
untuk memperluas ini, jika Anda datang ke Linux dari Windows, Anda dapat menganggap daemon sebagai * nix yang setara dengan "layanan" Windows.
nathwill
1
@ stefano-palazzo Anda mengatakan "... tidak ada TTY yang terkait dengannya", tetapi kemudian "... Anda akan melihat, setelah dua detik ia mencetak ...". Saya pikir melepaskan TTY berarti Anda tidak bisa menulis ke terminal.
Jorge Bucaran
1
@JorgeBucaran Ya. Pencetakannya agak nakal. Itu masih dapat memiliki pegangan ke aliran keluaran standar tty yang memulai itu. Ketika Anda membuka file (seperti / dev / stdout), Anda mendapatkan nomor (disebut deskriptor file), dan hanya itu yang Anda butuhkan untuk menulis selama proses yang dibuka masih berjalan (Anda dapat melihat membuka file dalam /proc/*/fd). Daemon yang berperilaku baik akan melepaskan diri sepenuhnya dari tty dengan menyerahkan pegangan ke stdout, stderr, dan stdin.
Stefano Palazzo
1
@StefanoPalazzo saya mengerti. Orang dapat mempertahankan referensi ke proses orang tua std / out / err dan masih terlepas dari itu. Jika saya dapat secara sewenang-wenang menyimpan referensi ke TTY, lalu, apa artinya melepaskan proses? Saya menemukan < superuser.com/questions/178587/... > berguna, tetapi masih terasa tidak jelas.
Jorge Bucaran
1
@JorgeBucaran artinya menimpa proses stdio sendiri (misalnya dengan menggunakan dup2 ) dengan yang baru yang Anda buat (seperti file log). Ini contoh lengkapnya
Stefano Palazzo
1

Dalam sistem operasi komputer multitasking, daemon adalah program komputer yang berjalan sebagai proses latar belakang, alih-alih berada di bawah kendali langsung pengguna interaktif. Secara tradisional, nama proses daemon diakhiri dengan huruf d, untuk klarifikasi bahwa proses tersebut, pada kenyataannya, adalah daemon, dan untuk diferensiasi antara daemon dan program komputer normal. Sebagai contoh, syslogd adalah daemon yang mengimplementasikan fasilitas sistem logging, dan sshd adalah daemon yang melayani koneksi SSH yang masuk.

Seperti yang Anda lihat lapisan Daemon

Harga Younis
sumber
2
dari mana kutipannya?
Zanna