Controlling Services and Daemons
Tags: ramadhanbersamaredhat, redhat124, chapter9, cloudcomputing
Published: 2024-03-19 03:05:11

**Mengidentifikasi Proses Sistem yang Dimulai Secara Otomatis**

- **Tujuan**
Mengontrol dan memantau layanan jaringan dan daemon sistem menggunakan Systemd.

**Pengantar ke systemd**
Daemon _systemd_ mengelola startup untuk Linux, termasuk startup layanan dan manajemen layanan secara umum. Daemon ini mengaktifkan sumber daya sistem, daemon server, dan proses lainnya pada saat boot dan pada sistem yang sedang berjalan.
Daemon adalah proses yang menunggu atau berjalan di latar belakang, melakukan berbagai tugas. Umumnya, daemon dimulai secara otomatis pada saat boot dan terus berjalan hingga dimatikan atau hingga dihentikan secara manual. Sudah menjadi konvensi bahwa nama-nama banyak program daemon diakhiri dengan huruf **d**.

Sebuah layanan dalam pengertian **systemd** sering mengacu pada satu atau lebih daemon, tetapi memulai atau menghentikan sebuah layanan dapat membuat perubahan satu kali pada status sistem, yang tidak melibatkan proses daemon yang berjalan setelahnya (disebut **oneshot**).
Pada Red Hat Enterprise Linux, proses pertama yang dimulai (PID 1) adalah **systemd**. Beberapa fitur yang disediakan oleh **systemd** antara lain:

- Kemampuan paralelisasi (memulai beberapa layanan secara bersamaan), yang meningkatkan kecepatan booting sistem.
- Memulai daemon sesuai permintaan tanpa memerlukan layanan terpisah.
- Manajemen ketergantungan layanan otomatis, yang dapat mencegah waktu henti yang lama. Misalnya, layanan yang bergantung pada jaringan tidak akan mencoba memulai hingga jaringan tersedia.
- Metode pelacakan proses-proses yang terkait secara bersama-sama dengan menggunakan grup-grup kontrol Linux.

**Menjelaskan Unit Layanan**
**systemd** menggunakan _unit_ untuk mengelola berbagai jenis objek. Beberapa jenis unit yang umum tercantum di bawah ini:
- Unit layanan memiliki ekstensi **.service** dan merepresentasikan layanan sistem. Jenis unit ini digunakan untuk memulai daemon yang sering diakses, seperti server web.
- Unit soket memiliki ekstensi **.socket** dan mewakili soket komunikasi antar-proses (IPC) yang harus dimonitor oleh **systemd**. Jika sebuah klien tersambung ke soket, **systemd** akan memulai sebuah daemon dan meneruskan koneksi ke soket tersebut. Unit soket digunakan untuk menunda dimulainya sebuah layanan pada saat boot dan memulai layanan yang jarang digunakan sesuai permintaan.
- Unit path memiliki ekstensi **.path** dan digunakan untuk menunda aktivasi sebuah layanan hingga terjadi perubahan sistem berkas tertentu. Ini biasanya digunakan untuk layanan yang menggunakan direktori spool seperti sistem pencetakan.

Perintah **systemctl** digunakan untuk mengelola unit. Sebagai contoh, tampilkan jenis-jenis unit yang tersedia dengan perintah **systemctl -t help.**

- **Penting**
Saat menggunakan **systemctl**, Anda dapat menyingkat nama unit, entri pohon proses, dan deskripsi unit.

**Mendaftarkan Unit Layanan**
Anda menggunakan perintah **systemctl** untuk menjelajahi status sistem saat ini. Sebagai contoh, perintah berikut ini mencantumkan semua unit layanan yang sedang dimuat, dengan paginasi output yang lebih **less**.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yc2ue7iusx1rei9lkfri.png)
Output di atas membatasi jenis unit yang terdaftar untuk unit layanan dengan opsi **--type=service**. Keluarannya memiliki kolom-kolom berikut ini:

Kolom-kolom dalam perintah systemctl list-units Output Perintah

- **UNIT**
Nama unit layanan.
- **LOAD**
Apakah systemd telah mengurai konfigurasi unit dengan benar dan memuat unit ke dalam memori.
- **ACTIVE**
Status aktivasi tingkat tinggi unit. Informasi ini menunjukkan apakah unit telah berhasil dihidupkan atau tidak.
- **SUB**
Status aktivasi tingkat rendah unit. Informasi ini menunjukkan informasi yang lebih rinci tentang unit. Informasi ini bervariasi berdasarkan jenis unit, status, dan bagaimana unit dijalankan.

**KETERANGAN**
Deskripsi singkat tentang unit.

Secara default, perintah systemctl **list-units --type=service** hanya mencantumkan unit layanan dengan status aktivasi aktif. Opsi **--all** mencantumkan semua unit layanan tanpa memandang status aktivasi. Gunakan opsi **--state=** untuk memfilter berdasarkan nilai pada bidang **LOAD, ACTIVE, atau SUB**.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pyymb9lh051jw107h68u.png)
Perintah **systemctl** tanpa argumen apa pun mencantumkan daftar unit yang dimuat dan aktif.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xz9hy206fid8ine3gikw.png)
Perintah **systemctl list-unit** menampilkan unit-unit yang diurai dan dimuat oleh layanan **systemd** ke dalam memori; perintah ini tidak menampilkan layanan yang terinstal, tetapi tidak diaktifkan. Untuk melihat status dari semua berkas unit yang terinstal, gunakan perintah **systemctl list-unit-files**. Sebagai contoh:
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4pir7oqjyvblu4xbxo3b.png)
Pada keluaran perintah **systemctl list-units-files**, entri yang valid untuk bidang **STATE** **enable, disable, static,** dan **masked.**

**Melihat Status Layanan**
Melihat status unit tertentu dengan systemctl status name.type. Jika tipe unit tidak disediakan, **systemctl** akan menampilkan status unit layanan, jika ada.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ptqcd5a5gkhiym55dj90.png)
Perintah ini menampilkan status layanan saat ini. Arti dari bidang-bidang tersebut adalah:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wrxaguukuaf6uxbdceeg.png)
Beberapa kata kunci yang menunjukkan status layanan dapat ditemukan dalam output status:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6a3jllvyybu5q0rm8fex.png)

**Catatan**
Perintah **systemctl status _NAME_** menggantikan perintah **service _NAME_ status**  yang digunakan pada Red Hat Enterprise Linux 6 dan sebelumnya.

**Memverifikasi Status Layanan**

The **systemctl** command provides methods for verifying the specific states of a service. For example, use the following command to verify that the a service unit is currently active (running):
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6mudoiypiimpbuefc516.png)
Perintah ini mengembalikan status unit layanan, yang biasanya aktif atau tidak aktif.
Jalankan perintah berikut ini untuk memverifikasi apakah unit servis diaktifkan untuk memulai secara otomatis selama boot sistem:
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k2xmvpiuwh9t5dpq03vd.png)
Perintah ini mengembalikan apakah unit layanan diaktifkan untuk memulai pada saat boot, yang biasanya diaktifkan atau dinonaktifkan.

Untuk memverifikasi apakah unit gagal saat pengaktifan, jalankan perintah berikut:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aepb6ucby1f7x37v8v5m.png)
Perintah akan kembali aktif jika sudah berjalan dengan benar atau gagal jika terjadi kesalahan selama pengaktifan. Jika unit dihentikan, perintah tersebut akan kembali tidak dikenal atau tidak aktif.

Untuk membuat daftar semua unit yang gagal, jalankan perintah **systemctl --failed --type=service**.