Perintah Systemctl: Cara Memulai Ulang, Memuat Ulang, dan Menghentikan Layanan di Linux
Mengelola layanan secara efisien adalah salah satu keterampilan paling penting bagi administrator sistem Linux. Baik Anda menjalankan server web dengan lalu lintas tinggi di paket VPS Hosting atau memelihara lingkungan Dedicated Server, memahami cara mengontrol layanan sistem menggunakan systemctl sangat penting. Panduan komprehensif ini mencakup semua yang perlu Anda ketahui tentang memulai ulang, memuat ulang, dan menghentikan layanan di Linux menggunakan systemd dan systemctl.
Apa Itu systemd dan Mengapa Penting?
systemd adalah sistem init dan manajer layanan default yang digunakan di hampir semua distribusi Linux modern, termasuk Ubuntu, Debian, CentOS, Rocky Linux, AlmaLinux, dan Fedora. Ini menggantikan sistem init yang lebih lama seperti SysVinit dan Upstart, membawa peningkatan signifikan dalam cara Linux melakukan boot dan mengelola proses.
Fitur Utama systemd
- Startup layanan paralel — Secara dramatis mengurangi waktu boot dengan memulai layanan secara bersamaan
- Aktivasi layanan sesuai permintaan — Layanan dapat diluncurkan hanya saat diperlukan, menghemat sumber daya sistem
- Manajemen ketergantungan — Secara otomatis menangani ketergantungan dan pengurutan layanan
- Logging terpusat — Terintegrasi dengan
journalduntuk manajemen log terstruktur dan terpadu - Kontrol sumber daya berbasis Cgroup — Melacak dan membatasi penggunaan CPU, memori, dan I/O per layanan
- Aktivasi socket dan D-Bus — Memungkinkan pola komunikasi antar proses yang canggih
Memahami systemd bukan hanya akademis — ini secara langsung mempengaruhi stabilitas, kinerja, dan keamanan lingkungan Linux Anda.
Apa Itu systemctl?
systemctl adalah antarmuka baris perintah utama untuk berinteraksi dengan systemd. Ini memungkinkan administrator untuk:
- Memulai, menghentikan, memulai ulang, dan memuat ulang layanan
- Mengaktifkan atau menonaktifkan layanan saat boot
- Memeriksa status layanan dan melihat log
- Mengelola target sistem (runlevel)
- Memuat ulang konfigurasi daemon
systemd
Semua perintah systemctl yang memodifikasi status sistem memerlukan hak istimewa root atau akses sudo.
Perintah systemctl Inti untuk Manajemen Layanan
1. Memulai Ulang Layanan
Memulai ulang layanan menghentikannya sepenuhnya dan kemudian memulainya kembali. Ini adalah operasi utama ketika:
- Anda telah membuat perubahan konfigurasi yang memerlukan restart proses penuh
- Layanan telah mogok atau menjadi tidak responsif
- Anda perlu menerapkan file biner yang diperbarui setelah upgrade paket
Sintaks:
sudo systemctl restart <service_name>Contoh — Mulai ulang server web Nginx:
sudo systemctl restart nginxContoh — Mulai ulang server web Apache:
sudo systemctl restart apache2Contoh — Mulai ulang database MySQL/MariaDB:
sudo systemctl restart mysql> Penting: Memulai ulang layanan menyebabkan gangguan singkat. Untuk lingkungan produksi, pertimbangkan menggunakan reload jika didukung untuk menghindari downtime.
2. Memuat Ulang Layanan
Memuat ulang menginstruksikan layanan yang sedang berjalan untuk membaca ulang file konfigurasinya tanpa menghentikan proses. Ini ideal untuk menerapkan perubahan konfigurasi dengan zero downtime.
Sintaks:
sudo systemctl reload <service_name>Contoh — Muat ulang Nginx setelah mengedit konfigurasinya:
sudo systemctl reload nginxContoh — Muat ulang daemon SSH setelah memodifikasi sshd_config:
sudo systemctl reload sshd> Catatan: Tidak semua layanan mendukung operasi reload. Jika layanan tidak mengimplementasikannya, systemctl akan mengembalikan kesalahan. Dalam kasus tersebut, gunakan restart sebagai gantinya.
Pro Tip — Gunakan reload-or-restart untuk kompatibilitas maksimal:
sudo systemctl reload-or-restart <service_name>Perintah ini mencoba reload terlebih dahulu. Jika layanan tidak mendukung reload, secara otomatis kembali ke restart penuh — menjadikannya opsi teraman untuk deployment dan otomasi yang ditulis skrip.
3. Menghentikan Layanan
Menghentikan layanan mengakhirinya segera. Gunakan ini ketika Anda perlu membawa layanan offline untuk pemeliharaan, troubleshooting, atau rekonfigurasi.
Sintaks:
sudo systemctl stop <service_name>Contoh — Hentikan server web Nginx:
sudo systemctl stop nginxContoh — Hentikan layanan firewall:
sudo systemctl stop ufw> Peringatan: Menghentikan layanan penting (seperti sshd di server jarak jauh) dapat mengunci Anda keluar dari sistem. Selalu pastikan Anda memiliki metode akses alternatif, seperti konsol atau manajemen out-of-band, sebelum menghentikan layanan penting.
4. Memulai Layanan
Jika layanan tidak sedang berjalan, gunakan perintah start untuk meluncurkannya.
Sintaks:
sudo systemctl start <service_name>Contoh:
sudo systemctl start nginx5. Mengaktifkan Layanan saat Boot
Mengaktifkan layanan membuat symlink yang diperlukan sehingga systemd secara otomatis memulainya selama boot sistem.
Sintaks:
sudo systemctl enable <service_name>Contoh:
sudo systemctl enable nginxAktifkan dan mulai secara bersamaan (direkomendasikan):
sudo systemctl enable --now nginx6. Menonaktifkan Layanan saat Boot
Menonaktifkan layanan mencegahnya dari startup otomatis, tetapi tidak menghentikannya jika sedang berjalan.
Sintaks:
sudo systemctl disable <service_name>Contoh:
sudo systemctl disable bluetoothNonaktifkan dan hentikan secara bersamaan:
sudo systemctl disable --now bluetooth7. Memeriksa Status Layanan
Perintah status adalah salah satu perintah systemctl yang paling sering digunakan. Ini memberikan snapshot real-time dari status layanan, termasuk entri log terbaru.
Sintaks:
sudo systemctl status <service_name>Contoh — Periksa status Nginx:
sudo systemctl status nginxContoh output:
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2024-01-15 10:23:45 UTC; 2h 34min ago
Docs: man:nginx(8)
Process: 1234 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 1235 (nginx)
Tasks: 3 (limit: 4915)
Memory: 6.2M
CPU: 45ms
CGroup: /system.slice/nginx.service
├─1235 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
└─1236 "nginx: worker process"Output mencakup:
- Loaded — Apakah file unit dimuat dan jika diaktifkan saat boot
- Active — Status berjalan saat ini (
active (running),inactive (dead),failed, dll.) - Main PID — ID proses utama layanan
- Memory/CPU — Metrik konsumsi sumber daya
- CGroup — Hierarki kelompok kontrol
- Recent logs — Entri journal terakhir untuk diagnostik cepat
Perintah systemctl Lanjutan
Memeriksa apakah Layanan Aktif atau Diaktifkan
Untuk digunakan dalam skrip dan otomasi, perintah ini mengembalikan kode exit gaya boolean sederhana:
# Check if a service is currently running
systemctl is-active nginx
# Check if a service is enabled at boot
systemctl is-enabled nginx
# Check if a service has failed
systemctl is-failed nginxMendaftar Semua Layanan
# List all loaded and active units
systemctl list-units --type=service
# List all installed unit files and their states
systemctl list-unit-files --type=service
# List only failed services
systemctl --failedMemuat Ulang Daemon systemd
Setelah membuat atau memodifikasi file unit, Anda harus memuat ulang daemon systemd untuk mengenali perubahan:
sudo systemctl daemon-reloadMenutup dan Membuka Masker Layanan
Menutup masker layanan mencegahnya dari startup manual atau otomatis — bahkan oleh layanan lain:
# Prevent a service from ever starting
sudo systemctl mask <service_name>
# Re-enable a masked service
sudo systemctl unmask <service_name>Referensi Cepat: Lembar Contekan Perintah systemctl
| Perintah | Deskripsi |
|---|---|
systemctl start <service> | Mulai layanan yang dihentikan |
systemctl stop <service> | Hentikan layanan yang sedang berjalan |
systemctl restart <service> | Hentikan dan mulai ulang layanan |
systemctl reload <service> | Muat ulang konfigurasi tanpa menghentikan |
systemctl reload-or-restart <service> | Muat ulang jika didukung, jika tidak mulai ulang |
systemctl enable <service> | Aktifkan layanan saat boot |
systemctl disable <service> | Nonaktifkan layanan saat boot |
systemctl enable --now <service> | Aktifkan dan mulai segera |
systemctl disable --now <service> | Nonaktifkan dan hentikan segera |
systemctl status <service> | Tampilkan status layanan dan log |
systemctl is-active <service> | Periksa apakah layanan sedang berjalan |
systemctl is-enabled <service> | Periksa apakah layanan dimulai saat boot |
systemctl is-failed <service> | Periksa apakah layanan telah gagal |
systemctl list-units --type=service | Daftar semua layanan aktif |
systemctl --failed | Daftar semua layanan yang gagal |
systemctl daemon-reload | Muat ulang file unit systemd |
systemctl mask <service> | Sepenuhnya cegah layanan dari startup |
systemctl unmask <service> | Hapus masker dari layanan |
Kasus Penggunaan Praktis untuk Administrator Server
Skenario 1: Menerapkan Perubahan Konfigurasi Nginx
Anda telah mengedit /etc/nginx/nginx.conf di server web Anda. Untuk menerapkan perubahan tanpa menghilangkan koneksi aktif:
# First, test the configuration syntax
sudo nginx -t
# If the test passes, reload gracefully
sudo systemctl reload nginxSkenario 2: Memulihkan Layanan yang Gagal
Layanan telah mogok dan menunjukkan status failed:
# Check what went wrong
sudo systemctl status myapp.service
# View full logs for the service
sudo journalctl -u myapp.service -n 50 --no-pager
# Restart the service
sudo systemctl restart myapp.serviceSkenario 3: Menyiapkan Layanan Baru Setelah Deployment
Setelah men-deploy aplikasi baru dengan file unit kustom:
# Reload systemd to recognize the new unit file
sudo systemctl daemon-reload
# Enable and start the service in one command
sudo systemctl enable --now myapp.service
# Verify it's running correctly
sudo systemctl status myapp.servicePerbedaan Antara restart, reload, dan stop — Sekilas
| Tindakan | Proses Dihentikan? | Downtime? | Kasus Penggunaan |
|---|---|---|---|
stop | Ya | Ya | Pemeliharaan, troubleshooting |
restart | Ya, kemudian dimulai ulang | Singkat | Perubahan konfigurasi yang mem |
