Apa target, layanan, dan soket systemd?

35

Saya tahu bahwa mereka semua adalah file unit, tetapi saya tidak dapat memahami arti khusus dari mereka. Saya pikir targetnya mirip dengan daemon dan soket sama dengan socket (IP + port) tetapi juga dengan nomor inode. Adakah yang bisa menjelaskannya dengan kata-kata sederhana?

drpaneas
sumber
3
manHalaman-halaman systemd adalah contoh: sudahkah Anda melihatnya man systemd.{service,socket,target}?
jasonwryan
@jasonwryan Sebenarnya saya melihat dan tidak memiliki jawaban lengkap. Saya menatap utas ini sehingga saya bisa belajar juga. Saya tahu apa layanan itu, soket, tetapi ada celah ketika datang ke target. Saya masih meneliti dan akan menjawab pertanyaan jika sudah cukup jelas bagi saya.
LD James

Jawaban:

40

Unit layanan:

A unit configuration file whose name ends in .service encodes
information about a process controlled and supervised by systemd.

- systemd.service (5)

Unit layanan Systemd adalah unit yang benar-benar menjalankan dan melacak program dan daemon, dan dependensi digunakan untuk memastikan bahwa layanan dimulai dalam urutan yang benar. Mereka adalah jenis unit yang paling umum digunakan.

Unit soket:

A unit configuration file whose name ends in ".socket" encodes
information about an IPC or network socket or a file system FIFO
controlled and supervised by systemd, for socket-based activation.

- systemd.socket (5)

Unit soket di sisi lain tidak benar-benar memulai daemon sendiri. Sebagai gantinya, mereka hanya duduk di sana dan mendengarkan alamat IP dan port, atau soket domain UNIX, dan ketika sesuatu terhubung, daemon yang digunakan untuk memulai soket dan koneksi diserahkan padanya.

Ini berguna untuk memastikan bahwa dasmon besar yang mengambil banyak sumber daya tetapi jarang digunakan tidak berjalan dan mengambil sumber daya sepanjang waktu, tetapi mereka hanya dimulai ketika dibutuhkan.

Unit target:

A unit configuration file whose name ends in ".target" encodes
information about a target unit of systemd, which is used for grouping
units and as well-known synchronization points during start-up.

- systemd.target (5)

Target digunakan untuk pengelompokan dan unit pemesanan. Mereka agak setara dengan runlevel di mana pada target yang berbeda, layanan yang berbeda, soket, dan unit lainnya dimulai. Tidak seperti runlevel, mereka jauh lebih bebas dan Anda dapat dengan mudah membuat target sendiri untuk memesan unit, dan target memiliki ketergantungan di antara mereka sendiri.

Misalnya, multi-user.targetadalah apa yang sebagian besar daemon dikelompokkan di bawah, dan itu perlu basic.targetdiaktifkan, yang berarti bahwa semua layanan yang dikelompokkan di bawah basic.targetakan dimulai sebelum yang masuk multi-user.target.

Kyrias
sumber
11

Dokumentasi untuk systemd sangat baik untuk proyek yang relatif baru. Untuk memulai dengan target , dari man systemd.target:

Unit target tidak menawarkan fungsionalitas tambahan selain fungsionalitas generik yang disediakan oleh unit. Mereka ada hanya untuk mengelompokkan unit melalui dependensi (berguna sebagai target boot), dan untuk menetapkan nama standar untuk titik sinkronisasi yang digunakan dalam dependensi antar unit. Antara lain, unit target adalah pengganti yang lebih fleksibel untuk runlevel SysV dalam sistem init SysV klasik.

"Grup unit" ini mencakup berbagai fungsi yang berbeda, dari basic.targetyang pada dasarnya mencakup boot sistem, hingga segala hal dari dbus, gettys, mount point untuk swap dan timer. Anda dapat melihat daftar lengkapnya dengan man systemd.special.

file layanan adalah unit dasar untuk menjalankan proses yang dikendalikan oleh systemd. Lagi, dariman systemd.service :

File konfigurasi unit yang namanya berakhir dengan .service mengkodekan informasi tentang suatu proses yang dikendalikan dan diawasi oleh systemd.

Ini merupakan daemon yang dapat dimulai, dihentikan, dimulai kembali, dimuat ulang.

Akhirnya, soket , dariman systemd.socket :

File konfigurasi unit yang namanya berakhir dengan ".socket" mengkodekan informasi tentang IPC atau soket jaringan atau sistem file yang FIFO dikendalikan dan diawasi oleh systemd, untuk aktivasi berbasis soket.

Ini mencakup soket di sistem file atau di Internet, serta FIFO klasik sebagai transportasi. Setiap unit soket memiliki unit layanan yang cocok, yang dimulai jika koneksi pertama masuk pada soket atau FIFO.

Selain manhalaman, ada baiknya membaca serangkaian posting blog Lennart, systemd untuk Administrator , yang memberikan pandangan mendalam pada arsitektur dan implementasi systemd (saat ini ada 20 posting dalam seri).

jasonwryan
sumber