Controlling Services and Daemons
Tags: ramadanbersamaredhat, bagasumiabibiba
Published: 2024-03-19 09:26:47

## **Mengidentifikasi Proses Sistem yang Dimulai Secara Otomatis**


**Pengertian Systemd**
Systemd adalah program yang mengatur bagaimana komputer Linux Anda memulai dan menjalankan layanan-layanan yang dibutuhkan. Ini termasuk memastikan bahwa program-program latar belakang, yang disebut daemon, seperti server web atau server email, mulai berjalan secara otomatis setiap kali Anda nyalakan komputer Anda.

Daemon adalah program-program yang berjalan di latar belakang komputer Anda, melakukan berbagai tugas penting seperti menyediakan layanan jaringan atau melakukan tugas tertentu secara terjadwal. Mereka dimulai secara otomatis saat komputer Anda dinyalakan dan terus berjalan sampai Anda mematikannya secara manual. Satu hal penting untuk dicatat adalah bahwa memulai atau menghentikan layanan tidak selalu berarti menghidupkan atau mematikan daemon. Beberapa layanan hanya perlu dijalankan sekali untuk melakukan tugas tertentu dan kemudian berhenti, yang disebut "oneshot".

**Unit Pelayanan**
Systemd menggunakan "unit" untuk mengelola berbagai jenis objek yang diperlukan untuk menjalankan sistem Linux dengan lancar. Ada tiga jenis unit umum :

- Unit Layanan (.service) : Ini adalah unit yang digunakan untuk memulai layanan sistem, seperti server web atau server database. Unit layanan ini bertanggung jawab untuk memulai dan mengelola daemon yang diperlukan oleh layanan tersebut.

- Unit Soket (.socket) : Unit soket mewakili koneksi komunikasi antar proses (IPC). Ketika ada klien yang terhubung ke soket, systemd akan memulai daemon yang sesuai dan meneruskan koneksi ke sana. Ini membantu dalam menunda memulai layanan sampai ada permintaan koneksi yang sebenarnya.

- Unit Jalur (.path) : Unit jalur digunakan untuk menunda aktivasi layanan sampai terjadi perubahan di sistem file tertentu. Ini sering digunakan untuk layanan yang bergantung pada adanya perubahan di direktori sistem, seperti sistem pencetakan yang perlu memantau folder spool untuk tugas cetak baru.

Dengan menggunakan unit-unit ini, systemd dapat mengelola sumber daya sistem dengan lebih efisien dan menjamin bahwa layanan-layanan yang diperlukan berjalan sesuai kebutuhan.

**Unit Layanan Pencatatan**
Perintah _`systemctl list-units --type=service --all`_ digunakan untuk melihat semua unit layanan, termasuk yang tidak aktif, sedangkan systemctl tanpa argumen akan menampilkan unit yang dimuat dan aktif. Contoh output menunjukkan status dan deskripsi singkat tentang setiap layanan yang dimuat di sistem.

Untuk melihat status spesifik dari suatu layanan, Anda dapat menggunakan perintah _`systemctl status nama_layanan.service`_. Misalnya, _`systemctl status sshd.service`_ akan memberikan informasi tentang layanan OpenSSH, termasuk apakah itu sedang berjalan, kapan itu dimuat, dan pid (ID proses) utama.

Dengan menggunakan contoh-contoh ini, Anda dapat melacak status layanan dan memahami apakah layanan tersebut aktif atau tidak, serta mendapatkan informasi tambahan tentang apa yang dilakukannya.

**Memverifikasi Status Layanan**
Anda dapat melihat daftar daemon sistem dan layanan jaringan yang dimulai secara otomatis dengan menggunakan perintah _`systemctl list-units --type=service`_. Ini akan menampilkan nama dan status dari setiap layanan yang sedang berjalan atau dimuat.

Untuk memverifikasi apakah suatu layanan aktif atau diaktifkan untuk memulai secara otomatis saat booting, Anda dapat menggunakan perintah _`systemctl is-active nama_layanan.service`_ dan _`systemctl is-enabled nama_layanan.service`_.

Jika Anda ingin melihat status semua layanan yang gagal saat startup, gunakan perintah _`systemctl --failed --type=service`_.

## **Layanan Sistem Pengendalian**


**Memulai dan Menghentikan Layanan**
Untuk memulai atau menghentikan layanan (services) secara manual, Anda bisa mengikuti langkah-langkah ini :

**Memulai Layanan :**

- Pertama, pastikan layanan tersebut tidak sedang berjalan dengan menggunakan perintah systemctl status.
- Kemudian, gunakan perintah systemctl start sebagai pengguna root (gunakan sudo jika diperlukan). Contohnya, untuk memulai layanan sshd.service, Anda bisa mengetikkan :

```
 [root@host ~]# systemctl start sshd.service
```
 - Anda juga bisa langsung menuliskan perintah di atas tanpa menambahkan .service, seperti ini :

```
[root@host ~]# systemctl start sshd
```
**Menghentikan Layanan :**

   - Untuk menghentikan layanan yang sedang berjalan, gunakan argumen stop dengan perintah systemctl. Misalnya, untuk menghentikan layanan sshd.service, Anda bisa mengetikkan :

```
[root@host ~]# systemctl stop sshd.service
```
Dengan demikian, Anda bisa memulai atau menghentikan layanan sesuai kebutuhan, misalnya untuk melakukan pembaruan, mengubah konfigurasi, menghapus, atau secara manual memulai layanan yang jarang digunakan.

## **Memulai Ulang dan Memuat Ulang Layanan**

Untuk memulai ulang (restart) layanan yang sedang berjalan, gunakan perintah _`systemctl restart <nama_layanan>`_. Proses restart akan menghentikan layanan tersebut dan kemudian memulainya kembali. Selama restart, ID proses berubah dan ID proses baru akan terkait saat layanan tersebut dimulai kembali.

Misalnya, untuk memulai ulang layanan sshd.service, Anda bisa mengetikkan :

```
[root@host ~]# systemctl restart sshd.service
```
Beberapa layanan memiliki kemampuan untuk me-reload (memuat ulang) file konfigurasinya tanpa perlu me-restart layanan. Proses ini disebut reload layanan. Me-reload layanan tidak mengubah ID proses yang terkait dengan berbagai proses layanan. Untuk me-reload layanan yang sedang berjalan, gunakan perintah _`systemctl reload <nama_layanan>`_.

Contohnya, untuk me-reload konfigurasi layanan sshd.service setelah melakukan perubahan konfigurasi :

```
[root@host ~]# systemctl reload sshd.service
```
Jika Anda tidak yakin apakah layanan memiliki fungsi untuk me-reload perubahan file konfigurasi, Anda bisa menggunakan argumen reload-or-restart dengan perintah systemctl. Perintah ini akan me-reload perubahan konfigurasi jika fungsionalitas me-reload tersedia. Jika tidak, perintah tersebut akan me-restart layanan untuk menerapkan perubahan konfigurasi baru :

```
[root@host ~]# systemctl reload-or-restart sshd.service
```
Dengan demikian, Anda dapat mengelola layanan dengan memulai ulang, me-reload konfigurasi, atau menggunakan opsi reload-or-restart sesuai kebutuhan.

## **Ketergantungan Unit Daftar**

Beberapa layanan memerlukan agar layanan lain berjalan terlebih dahulu, menciptakan ketergantungan pada layanan lain tersebut. Beberapa layanan tidak dimulai saat booting tetapi hanya saat diminta. Dalam kedua kasus tersebut, systemd dan systemctl akan memulai layanan sesuai kebutuhan, baik untuk menyelesaikan ketergantungan atau untuk memulai layanan yang jarang digunakan.

Misalnya, jika layanan cetak CUPS tidak berjalan dan sebuah file ditempatkan ke dalam direktori antrian cetak, maka sistem akan memulai daemon atau perintah terkait CUPS untuk memenuhi permintaan cetak.

Untuk menampilkan daftar ketergantungan layanan tertentu, Anda dapat menggunakan perintah _`systemctl list-dependencies UNIT`_. Perintah ini akan menampilkan hierarki ketergantungan untuk memulai unit layanan tersebut. Untuk menampilkan ketergantungan terbalik (unit yang bergantung pada unit yang ditentukan), gunakan opsi --reverse dengan perintah tersebut.

Sebagai contoh, untuk menampilkan daftar ketergantungan layanan sshd.service, Anda bisa mengetikkan :

```
[root@host ~]# systemctl list-dependencies sshd.service
```
Ini akan menunjukkan struktur ketergantungan untuk memulai layanan SSH. Dengan demikian, Anda dapat memahami bagaimana layanan bergantung satu sama lain dan bagaimana sistem memenuhi ketergantungan tersebut saat memulai layanan.

## **Layanan Masking Dan Unmasking**

Kadang-kadang, sebuah sistem dapat memiliki berbagai layanan yang terpasang yang bertentangan satu sama lain. Misalnya, ada beberapa metode untuk mengelola server email (seperti postfix dan sendmail). Memaskkan (masking) sebuah layanan mencegah administrator untuk secara tidak sengaja memulai layanan yang bertentangan dengan yang lain. Memaskkan menciptakan sebuah tautan dalam direktori konfigurasi ke file /dev/null yang mencegah layanan dari dimulai.

Contohnya, untuk memaskkan layanan sendmail, Anda bisa mengetikkan :

```
[root@host ~]# systemctl mask sendmail.service
```
Ini akan menciptakan sebuah tautan dalam direktori konfigurasi yang menunjuk ke file /dev/null, sehingga mencegah layanan sendmail untuk dimulai. Ketika Anda mencoba untuk memulai layanan yang dimaskkan, Anda akan menerima pesan kesalahan bahwa unit layanan tersebut telah dimaskkan.

Untuk menghapus mask dari sebuah layanan, Anda bisa menggunakan perintah systemctl unmask. Misalnya, untuk menghapus mask dari layanan sendmail, Anda bisa mengetikkan :

```
[root@host ~]# systemctl unmask sendmail
```
Ini akan menghapus tautan yang telah dibuat ke file /dev/null, sehingga memungkinkan Anda untuk memulai kembali layanan sendmail jika diperlukan.

Dengan demikian, masking dan unmasking memungkinkan Anda untuk mengelola konflik antara layanan dan mencegah layanan yang tidak diinginkan untuk dimulai secara tidak sengaja.

Layanan yang dinonaktifkan dapat dimulai secara manual atau dengan file unit lain tetapi tidak dimulai secara otomatis saat boot. Layanan bertopeng tidak dimulai secara manual atau otomatis.

## **Mengaktifkan Layanan untuk Memulai atau Berhenti saat Boot**

Sebuah layanan yang dinonaktifkan (disabled) dapat dijalankan secara manual atau oleh file unit lain, namun tidak akan secara otomatis dimulai saat boot. Sebaliknya, sebuah layanan yang dimaskkan (masked) tidak dapat dijalankan baik secara manual maupun otomatis.

Untuk membuat layanan dimulai atau berhenti saat boot, Anda perlu membuat tautan dalam direktori konfigurasi systemd. Perintah systemctl digunakan untuk membuat dan menghapus tautan ini.

Untuk memulai sebuah layanan saat boot, gunakan perintah _`systemctl enable`_.

Contohnya, untuk memulai layanan SSH saat boot, Anda bisa mengetikkan :

```
[root@root ~]# systemctl enable sshd.service
```
Perintah di atas akan membuat sebuah tautan simbolik dari file unit layanan, biasanya berada di direktori /usr/lib/systemd/system, ke lokasi di disk tempat systemd mencari file, yaitu dalam direktori /etc/systemd/system/TARGETNAME.target.wants. Memungkinkan sebuah layanan tidak memulai layanan tersebut dalam sesi saat ini. Untuk memulai layanan dan mengaktifkannya agar dimulai secara otomatis saat boot, jalankan kedua perintah systemctl start dan systemctl enable.

Untuk menonaktifkan layanan agar tidak dimulai secara otomatis, gunakan perintah berikut :

```
[root@host ~]# systemctl disable sshd.service
```
Perintah ini akan menghapus tautan simbolik yang dibuat saat mengaktifkan layanan. Perlu diingat bahwa menonaktifkan sebuah layanan tidak menghentikan layanan tersebut.

Untuk memeriksa apakah layanan diaktifkan atau dinonaktifkan, gunakan perintah _`systemctl is-enabled`_.

## **Ringkasan Perintah systemctl**

Layanan dapat dimulai dan dihentikan pada sistem yang sedang berjalan dan diaktifkan atau dinonaktifkan untuk memulai secara otomatis pada saat boot.

**Tugas Dan Perintah Managemen Layanan Yang Digunakan**

- Melihat informasi rinci tentang status unit :

```
systemctl status UNIT
```
	  
- Mengentikan layanan pada sistem yang sedang berjalan :

```
systemctl stop UNIT
```

- Memulai layanan pada sistem yang sedang berjalan :

```
systemctl start UNIT
```
	 
- Mulai ulang layanan pada sistem yang sedang berjalan :
 
```
systemctl restart UNIT
```

- Muat ulang file konfigurasi layanan yang sedang berjalan :

```
systemctl reload UNIT
```

- Menonaktifkan sepenuhnya layanan agar tidak dimulai, baik secara manual maupun saat boot :

```
systemctl mask UNIT
```
	
- Menyediakan layanan Masked :

```
systemctl unmask UNIT
```
	
- Konfigurasikan layanan untuk dimulai saat boot :

```
systemctl enable UNIT
```
	
- Nonaktifkan layanan agar tidak dimulai saat boot :
 

```
systemctl disable UNIT
```
	
- Daftar unit yang dibutuhkan dan diinginkan oleh unit yang ditentukan :

```
systemctl list-dependencies UNIT
```