Lewati ke konten utama

Manajemen Services pada Linux

1. Konsep Dasar Services

Apa Itu Service?

Service dalam sistem operasi Linux adalah proses yang berjalan di latar belakang untuk menyediakan fungsionalitas tertentu, seperti server web, database, logging, atau manajemen jaringan. Service sangat penting karena mereka memastikan bahwa layanan kritis berjalan dengan andal dan dapat dikontrol oleh administrator sistem.

Perbedaan System V init, systemd, dan Upstart

System InitKeterangan
System V initSistem init tradisional yang menggunakan skrip shell di /etc/init.d/. Menggunakan runlevel untuk mengatur status sistem.
systemdSistem init modern yang menggantikan System V init. Menggunakan unit file dan dependency-based execution untuk meningkatkan efisiensi.
UpstartSistem init yang dikembangkan oleh Ubuntu untuk menggantikan System V init, tetapi akhirnya ditinggalkan demi systemd.

Konsep Runlevel pada System V init

Runlevel menentukan status sistem dan layanan yang berjalan:

RunlevelKeterangan
0Halt (sistem mati)
1Single user mode
2Multi-user mode tanpa jaringan
3Multi-user mode dengan jaringan
4Tidak digunakan secara default
5Mode grafis (GUI)
6Reboot

2. System V init

Direktori dan Script Init

  • /etc/init.d: Berisi skrip init untuk mengelola layanan.
  • /etc/rc*.d: Direktori yang mengandung symbolic link ke skrip di /etc/init.d untuk setiap runlevel.

Perintah-perintah Dasar System V init

sudo /etc/init.d/<nama-service> status  # Cek status service
sudo /etc/init.d/<nama-service> start # Memulai service
sudo /etc/init.d/<nama-service> stop # Menghentikan service
sudo /etc/init.d/<nama-service> restart # Merestart service
sudo /etc/init.d/<nama-service> reload # Reload konfigurasi (jika didukung)

Untuk melihat daftar semua skrip init:

ls /etc/init.d

Menggunakan init untuk mengganti runlevel:

sudo init 0  # Mematikan sistem
sudo init 6 # Merestart sistem

3. systemd

Unit Files

  • /etc/systemd/system: Direktori untuk unit files yang dibuat pengguna.
  • /lib/systemd/system: Direktori unit files bawaan distribusi.

Perintah-perintah systemctl

Manajemen Service

systemctl --status-all                       # Daftar semua unit (termasuk service)
systemctl list-units --type=service # Daftar service yang aktif
systemctl list-units --type=service --all # Daftar semua service (aktif dan tidak aktif)
systemctl list-units --type=service --state=inactive # Daftar service yang tidak aktif
systemctl status <nama-service>.service # Cek status service
systemctl is-active <nama-service>.service # Cek apakah service aktif

Mengelola Service

sudo systemctl start <nama-service>      # Memulai service
sudo systemctl stop <nama-service> # Menghentikan service
sudo systemctl restart <nama-service> # Merestart service
sudo systemctl reload <nama-service> # Reload konfigurasi
sudo systemctl enable <nama-service> # Mengaktifkan service agar berjalan saat boot
sudo systemctl disable <nama-service> # Menonaktifkan service dari boot

Daemon Management

sudo systemctl daemon-reexec  # Restart semua proses systemd tanpa reboot
sudo systemctl daemon-reload # Reload konfigurasi systemd tanpa mengganggu layanan yang sedang berjalan

Contoh Konfigurasi Unit File systemd

Contoh file unit /etc/systemd/system/myservice.service:

[Unit]
Description=Contoh Service
After=network.target

[Service]
ExecStart=/usr/bin/python3 /opt/myservice.py
Restart=always
User=nobody
Group=nogroup

[Install]
WantedBy=multi-user.target

Untuk mengaktifkan service ini:

sudo systemctl daemon-reload
sudo systemctl enable myservice.service
sudo systemctl start myservice.service

4. Manajemen Service dengan service

Perintah-perintah Dasar

service --status-all
service <nama-service> status
service <nama-service> start | restart | stop

5. Troubleshooting Services

System V init

  • Service tidak berjalan saat boot: Pastikan ada symbolic link di /etc/rc*.d/.
  • Service gagal dijalankan: Cek log di /var/log/syslog atau /var/log/messages.

systemd

  • Service tidak bisa dimulai: Jalankan journalctl -xe -u <nama-service> untuk melihat log.
  • Service gagal restart: Gunakan systemctl reset-failed <nama-service> untuk mereset status gagal.
  • Konfigurasi berubah tapi tidak berlaku: Gunakan systemctl daemon-reexec atau systemctl daemon-reload.

Dokumen ini memberikan dasar-dasar manajemen layanan pada Linux dengan fokus pada perbedaan antara System V init dan systemd. Dengan memahami konsep ini, administrator sistem dapat mengelola layanan dengan lebih efektif.