systemctl dan journalctl: Panduan Lengkap Mengelola Service Linux untuk Sysadmin
Dalam administrasi Linux Server, banyak komponen penting berjalan sebagai service atau layanan sistem. Web server seperti Nginx dan Apache, database seperti MariaDB dan PostgreSQL, SSH, Docker, monitoring agent, DNS server, hingga berbagai service aplikasi harus berjalan dalam kondisi yang benar agar server tetap berfungsi.
Masalahnya, service Linux tidak selalu berjalan mulus.
Sebuah service bisa berhenti karena konfigurasi salah, port sudah digunakan aplikasi lain, permission bermasalah, dependency tidak tersedia, file konfigurasi mengalami error, disk penuh, atau proses sebelumnya mengalami crash.
Di sinilah dua perintah Linux menjadi sangat penting bagi sysadmin:
systemctl
dan:
journalctl
Secara sederhana, systemctl digunakan untuk mengelola dan memeriksa service, sedangkan journalctl digunakan untuk membaca log yang dikumpulkan oleh systemd.
Jika systemctl menjawab pertanyaan:
“Apakah service ini berjalan?”
maka journalctl membantu menjawab:
“Mengapa service ini gagal atau mengalami masalah?”
Keduanya merupakan pasangan yang sangat berguna dalam troubleshooting Linux Server.
Mengenal systemd dan systemctl
Sebelum memahami systemctl, kita perlu mengenal systemd.
Pada banyak distribusi Linux modern, systemd berfungsi sebagai sistem init dan service manager. Salah satu tugasnya adalah mengelola proses dan service yang diperlukan oleh sistem.
Perintah:
systemctl
merupakan antarmuka untuk berkomunikasi dengan systemd.
Dengan systemctl, sysadmin dapat:
- menjalankan service;
- menghentikan service;
- me-restart service;
- melihat status service;
- membuat service otomatis berjalan saat boot;
- menonaktifkan service saat boot;
- melihat service yang gagal;
- memeriksa dependency;
- mengelola unit systemd.
Contohnya:
systemctl status nginx
Perintah tersebut digunakan untuk melihat status service Nginx.
Mengenal Unit pada systemd
Systemd tidak hanya mengelola service. Ia memiliki berbagai jenis unit.
Beberapa jenis unit yang umum antara lain:
| Unit | Fungsi |
|---|---|
.service | Mengelola service |
.socket | Mengelola socket |
.timer | Menjalankan task berdasarkan jadwal |
.mount | Mengelola mount point |
.target | Mengelompokkan unit |
.path | Memantau perubahan file/path |
Untuk pekerjaan sehari-hari sysadmin, unit .service merupakan salah satu yang paling sering digunakan.
Misalnya:
nginx.service
ssh.service
docker.service
mariadb.service
cron.service
Ketika mengetik:
systemctl status nginx
systemd akan mencari unit:
nginx.service
sehingga .service biasanya tidak perlu ditulis.
Perintah Dasar systemctl
1. Menjalankan Service dengan start
Gunakan start ketika ingin menjalankan service.
sudo systemctl start nginx
Setelah perintah tersebut dijalankan, Nginx akan diminta untuk aktif.
Kemudian periksa:
systemctl status nginx
Jika berhasil, status biasanya menunjukkan:
Active: active (running)
Perlu diperhatikan bahwa start hanya menjalankan service saat ini.
Ia tidak otomatis membuat service berjalan kembali setelah server reboot.
2. Menghentikan Service dengan stop
Untuk menghentikan service:
sudo systemctl stop nginx
Kemudian:
systemctl status nginx
Statusnya seharusnya berubah menjadi:
inactive
Perintah ini berguna ketika ingin menghentikan sementara sebuah service untuk maintenance atau troubleshooting.
3. Restart Service
Jika konfigurasi service baru saja diubah, salah satu tindakan yang umum dilakukan adalah:
sudo systemctl restart nginx
Restart berarti service dihentikan kemudian dijalankan kembali.
Contoh workflow:
sudo nano /etc/nginx/nginx.conf
Setelah konfigurasi diperbaiki:
sudo nginx -t
Jika konfigurasi valid:
sudo systemctl restart nginx
Kemudian:
systemctl status nginx
Best practice
Jangan langsung melakukan restart setelah mengubah konfigurasi.
Untuk service yang menyediakan mekanisme validasi konfigurasi, lakukan pemeriksaan terlebih dahulu.
Contohnya Nginx:
sudo nginx -t
Apache:
sudo apache2ctl configtest
Dengan demikian, risiko membuat service gagal start akibat typo konfigurasi dapat dikurangi.
4. Reload Service
Selain restart, beberapa service mendukung:
sudo systemctl reload nginx
Perbedaannya:
restart
Stop → Start
Sedangkan:
reload
Muat ulang konfigurasi tanpa menghentikan service sepenuhnya
Reload biasanya lebih ideal ketika service mendukungnya dan perubahan konfigurasi tidak membutuhkan restart penuh.
Contohnya:
sudo nginx -t
sudo systemctl reload nginx
Namun tidak semua service mendukung reload.
5. Melihat Status Service dengan status
Ini merupakan salah satu perintah paling penting:
systemctl status nginx
Output dapat berisi informasi seperti:
● nginx.service - A high performance web server
Loaded: loaded
Active: active (running)
Main PID: 1234
Tasks: 5
Memory: 12.5M
CGroup: ...
Bagian yang perlu diperhatikan:
Loaded
Menunjukkan apakah unit berhasil ditemukan dan dimuat oleh systemd.
Active
Menunjukkan kondisi service.
Contohnya:
active (running)
berarti service sedang berjalan.
Sedangkan:
inactive (dead)
berarti service tidak berjalan.
Dan:
failed
menunjukkan service mengalami kegagalan.
Main PID
Menunjukkan Process ID utama service.
Logs
systemctl status biasanya juga menampilkan beberapa baris log terakhir yang berkaitan dengan service.
Namun untuk investigasi lebih mendalam, gunakan journalctl.
6. Membuat Service Otomatis Berjalan Saat Boot dengan enable
Misalnya Anda ingin SSH server otomatis berjalan setelah server melakukan boot.
Gunakan:
sudo systemctl enable ssh
Untuk distribusi tertentu nama servicenya dapat berbeda, misalnya:
sudo systemctl enable ssh.service
Perlu dipahami:
enable
tidak selalu berarti service langsung berjalan saat itu juga.
Perintah tersebut terutama mengatur agar service diaktifkan pada proses boot sesuai konfigurasi systemd.
Jika ingin langsung mengaktifkan sekaligus menjalankannya:
sudo systemctl enable --now nginx
Ini sangat praktis.
7. Menonaktifkan Service dengan disable
Untuk menghapus konfigurasi autostart:
sudo systemctl disable nginx
Service tidak lagi dikonfigurasi untuk otomatis berjalan saat boot.
Tetapi perintah tersebut tidak selalu menghentikan service yang sedang berjalan.
Jika ingin menghentikan service sekaligus menonaktifkan autostart:
sudo systemctl disable --now nginx
Ringkasan Perintah systemctl
| Perintah | Fungsi |
|---|---|
systemctl start SERVICE | Menjalankan service |
systemctl stop SERVICE | Menghentikan service |
systemctl restart SERVICE | Restart service |
systemctl reload SERVICE | Reload konfigurasi |
systemctl status SERVICE | Melihat status |
systemctl enable SERVICE | Aktifkan autostart |
systemctl disable SERVICE | Nonaktifkan autostart |
systemctl enable --now SERVICE | Enable + start |
systemctl disable --now SERVICE | Disable + stop |
journalctl: Membaca Log Linux
Ketika service gagal berjalan, systemctl status sering kali memberikan petunjuk awal.
Tetapi jika informasi tersebut belum cukup, gunakan:
journalctl
journalctl digunakan untuk membaca log dari systemd journal.
Contoh:
sudo journalctl
Akan menampilkan log yang tersedia.
Pada server yang aktif lama, jumlah log dapat sangat banyak. Karena itu, filtering sangat penting.
Melihat Log Service Tertentu
Misalnya Nginx:
sudo journalctl -u nginx
Parameter:
-u
berarti --unit.
Dengan demikian:
journalctl -u nginx
membatasi log pada unit Nginx.
Untuk SSH:
sudo journalctl -u ssh
Untuk Docker:
sudo journalctl -u docker
Untuk PostgreSQL, nama unit bergantung pada distribusi dan versi:
sudo journalctl -u postgresql
Melihat Log Terbaru dengan -n
Jika hanya ingin melihat 50 baris terakhir:
sudo journalctl -u nginx -n 50
Contoh:
sudo journalctl -u nginx -n 100
Ini jauh lebih praktis daripada membaca seluruh log.
Monitoring Log Secara Real-Time dengan -f
Seperti tail -f, journalctl memiliki opsi:
sudo journalctl -u nginx -f
Parameter:
-f
berarti mengikuti log baru secara real-time.
Ini sangat berguna saat troubleshooting.
Misalnya:
Terminal pertama:
sudo journalctl -u nginx -f
Terminal kedua:
sudo systemctl restart nginx
Terminal pertama akan langsung menampilkan event yang terjadi.
Teknik ini sangat berguna ketika error hanya muncul beberapa detik setelah service dijalankan.
Filter Log Berdasarkan Waktu
journalctl sangat kuat dalam filtering waktu.
Log sejak hari ini
sudo journalctl --since today
Untuk service tertentu:
sudo journalctl -u nginx --since today
Log sejak waktu tertentu
sudo journalctl --since "2026-10-03 08:00:00"
Log sampai waktu tertentu
sudo journalctl --until "2026-10-03 10:00:00"
Rentang waktu
sudo journalctl \
--since "2026-10-03 08:00:00" \
--until "2026-10-03 10:00:00"
Kombinasikan dengan service:
sudo journalctl -u nginx \
--since "2026-10-03 08:00:00" \
--until "2026-10-03 10:00:00"
Teknik ini sangat berguna ketika Anda mengetahui kapan masalah mulai terjadi.
Melihat Log dari Boot Saat Ini
Salah satu kemampuan journalctl yang sangat berguna adalah filtering berdasarkan boot.
Gunakan:
sudo journalctl -b
Artinya membaca log dari boot saat ini.
Untuk service tertentu:
sudo journalctl -b -u nginx
Ini sangat berguna setelah reboot.
Misalnya server baru saja restart dan Nginx tidak aktif. Anda dapat memeriksa:
sudo journalctl -b -u nginx
untuk melihat apa yang terjadi sejak boot terakhir.
Melihat Log dari Boot Sebelumnya
Gunakan:
sudo journalctl -b -1
Angka:
-1
mengacu pada boot sebelumnya.
Misalnya:
sudo journalctl -b -1 -u nginx
sangat berguna untuk menyelidiki service yang gagal setelah reboot.
Anda juga dapat melihat daftar boot:
journalctl --list-boots
Contohnya:
-2 ...
-1 ...
0 ...
Dengan demikian, Anda dapat memilih boot tertentu untuk dianalisis.
Filter Berdasarkan Priority
Tidak semua log memiliki tingkat kepentingan yang sama.
Journal mengenal priority seperti:
emerg
alert
crit
err
warning
notice
info
debug
Untuk melihat error:
sudo journalctl -p err
Untuk melihat warning dan error:
sudo journalctl -p warning
Anda juga dapat menggabungkannya dengan service:
sudo journalctl -u nginx -p err
Ini sangat berguna ketika journal berisi ribuan pesan tetapi Anda hanya ingin melihat error.
Filter Error Sejak Boot Terakhir
Contohnya:
sudo journalctl -b -p err
Atau untuk service:
sudo journalctl -b -u nginx -p err
Workflow seperti ini sangat efektif:
Boot
↓
Service gagal
↓
systemctl status
↓
journalctl -b -u SERVICE
↓
filter priority
↓
identifikasi penyebab
Format Log yang Lebih Ringkas
Untuk melihat pesan log tanpa terlalu banyak metadata:
sudo journalctl -u nginx -o cat
Output menjadi lebih sederhana karena hanya menampilkan isi pesan.
Format ini nyaman untuk membaca log secara cepat.
Studi Kasus: Service Gagal Start
Sekarang kita masuk ke skenario yang sering terjadi di server produksi.
Misalnya Nginx tiba-tiba gagal dijalankan.
Anda menjalankan:
sudo systemctl start nginx
Kemudian muncul kegagalan.
Langkah pertama:
sudo systemctl status nginx
Misalnya output menunjukkan:
Active: failed
Jangan langsung mengulang:
systemctl restart nginx
berkali-kali.
Cari penyebabnya.
Langkah 1 — Periksa Status
sudo systemctl status nginx
Perhatikan bagian:
Active:
Main PID:
Process:
dan pesan error yang ditampilkan.
Jika terdapat pesan seperti:
Failed to start A high performance web server
itu baru gejala, bukan selalu akar masalah.
Langkah 2 — Baca Journal Service
Gunakan:
sudo journalctl -u nginx -n 100 --no-pager
Opsi:
-n 100
menampilkan 100 baris terakhir.
Sedangkan:
--no-pager
mencegah output dibuka menggunakan pager seperti less.
Untuk mencari error:
sudo journalctl -u nginx -p err --no-pager
Langkah 3 — Validasi Konfigurasi
Untuk Nginx:
sudo nginx -t
Misalnya muncul:
nginx: [emerg] unexpected "}" in /etc/nginx/nginx.conf:42
Sekarang penyebab sudah jauh lebih jelas.
Periksa file:
sudo nano /etc/nginx/nginx.conf
Cari kesalahan pada baris yang disebutkan.
Setelah diperbaiki:
sudo nginx -t
Pastikan hasilnya:
syntax is ok
test is successful
Kemudian:
sudo systemctl restart nginx
Dan verifikasi:
systemctl status nginx
Langkah 4 — Periksa Port
Service juga dapat gagal start karena port yang diperlukan sudah digunakan proses lain.
Misalnya Nginx membutuhkan port 80.
Gunakan:
sudo ss -ltnp
Atau:
sudo ss -ltnp | grep ':80'
Jika port 80 sudah digunakan aplikasi lain, Nginx dapat gagal bind ke port tersebut.
Anda kemudian perlu mengidentifikasi proses yang menggunakan port:
sudo ss -ltnp | grep ':80'
Setelah mengetahui prosesnya, tentukan apakah:
- service tersebut memang harus berjalan;
- konfigurasi port perlu diubah;
- atau service yang tidak diperlukan harus dihentikan.
Langkah 5 — Periksa Dependency
Service dapat bergantung pada unit lain.
Gunakan:
systemctl list-dependencies nginx
Untuk melihat dependency yang lebih relevan saat troubleshooting:
systemctl list-dependencies --failed
Jika ada dependency yang gagal, jangan hanya fokus pada service utama.
Contohnya:
Application
↓
Database
↓
Storage
Jika database gagal, aplikasi mungkin ikut gagal.
Langkah 6 — Periksa Resource Server
Kadang-kadang masalah bukan pada konfigurasi service.
Periksa disk:
df -h
Periksa inode:
df -i
Periksa memory:
free -h
Periksa proses:
top
atau:
ps aux --sort=-%mem | head
Disk penuh merupakan salah satu penyebab yang sering terlupakan.
Contohnya:
/dev/sda2 100%
Jika filesystem penuh, service tertentu dapat gagal menulis PID, socket, database, cache, atau log.
Untuk mencari penggunaan disk terbesar:
sudo du -xh /var | sort -h | tail -20
Workflow Troubleshooting Profesional
Untuk service yang gagal start, gunakan workflow berikut:
SERVICE GAGAL
│
▼
systemctl status
│
▼
journalctl -u SERVICE
│
▼
Filter error / waktu / boot
│
▼
Validasi konfigurasi
│
▼
Periksa port
│
▼
Periksa dependency
│
▼
Periksa permission
│
▼
Periksa disk / memory / CPU
│
▼
Perbaiki akar masalah
│
▼
Restart / start service
│
▼
Verifikasi status + log
Inilah pendekatan yang lebih baik daripada sekadar:
systemctl restart service
dan berharap masalah hilang secara ajaib.
Linux bukan mesin vending machine. Menekan tombol restart berkali-kali bukan metodologi troubleshooting.
Contoh Troubleshooting PostgreSQL
Misalnya PostgreSQL gagal start.
Pertama:
sudo systemctl status postgresql
Kemudian:
sudo journalctl -u postgresql -n 100
Cari error:
sudo journalctl -u postgresql -p err
Periksa resource:
df -h
free -h
Jika masalah terjadi setelah reboot:
sudo journalctl -b -u postgresql
Jika ingin mengetahui kegagalan pada boot sebelumnya:
sudo journalctl -b -1 -u postgresql
Dengan kombinasi tersebut, investigasi menjadi lebih terarah.
Contoh Troubleshooting SSH
Jika SSH bermasalah:
sudo systemctl status ssh
Kemudian:
sudo journalctl -u ssh -n 100
Untuk melihat error:
sudo journalctl -u ssh -p err
Validasi konfigurasi SSH:
sudo sshd -t
Jika konfigurasi valid, periksa port:
sudo ss -ltnp | grep ssh
Pendekatan ini lebih aman daripada mengubah banyak konfigurasi secara acak.
Kesalahan yang Sering Terjadi
1. Hanya menggunakan systemctl status
systemctl status memang penting, tetapi outputnya terbatas.
Jika belum menemukan akar masalah, lanjutkan:
journalctl -u SERVICE
2. Restart berulang tanpa membaca log
Contoh:
systemctl restart nginx
systemctl restart nginx
systemctl restart nginx
Jika konfigurasi salah, tiga kali restart tidak membuat konfigurasi menjadi benar.
Gunakan:
journalctl -u nginx
untuk mengetahui penyebabnya.
3. Salah memahami enable
Banyak administrator pemula mengira:
systemctl enable nginx
berarti Nginx langsung berjalan.
Padahal enable berkaitan dengan konfigurasi autostart.
Jika ingin langsung menjalankan sekaligus mengaktifkan autostart:
sudo systemctl enable --now nginx
4. Tidak melakukan validasi konfigurasi
Sebelum restart service yang konfigurasinya baru diubah, lakukan validasi jika tool tersedia.
Contoh:
nginx -t
atau:
apache2ctl configtest
5. Mengabaikan disk penuh
Periksa:
df -h
dan:
df -i
Filesystem penuh dapat menyebabkan berbagai gejala yang terlihat seperti masalah service.
6. Tidak membatasi pencarian log
Perintah:
journalctl
dapat menghasilkan output sangat besar.
Lebih efektif menggunakan:
journalctl -u nginx --since today
atau:
journalctl -u nginx -p err
Tips dan Best Practice Sysadmin
Pertama, biasakan membaca log sebelum melakukan perubahan konfigurasi besar.
Kedua, gunakan kombinasi systemctl dan journalctl, bukan salah satunya saja.
Ketiga, gunakan filter waktu ketika masalah memiliki timestamp yang jelas.
Keempat, gunakan -b ketika masalah berkaitan dengan proses boot.
Kelima, gunakan priority filtering ketika ingin mencari error dengan cepat.
Keenam, validasi konfigurasi sebelum restart.
Ketujuh, dokumentasikan perubahan konfigurasi.
Kedelapan, hindari mengubah banyak parameter sekaligus. Jika Anda mengubah sepuluh hal sekaligus kemudian masalah hilang, Anda belum tentu tahu mana yang sebenarnya memperbaikinya.
Kesembilan, pada server produksi, pertimbangkan dampak restart terhadap aplikasi dan pengguna.
Kesepuluh, biasakan membuat workflow troubleshooting yang konsisten.
Cheat Sheet systemctl
# Status
systemctl status nginx
# Start
sudo systemctl start nginx
# Stop
sudo systemctl stop nginx
# Restart
sudo systemctl restart nginx
# Reload
sudo systemctl reload nginx
# Enable saat boot
sudo systemctl enable nginx
# Disable saat boot
sudo systemctl disable nginx
# Enable + start
sudo systemctl enable --now nginx
# Disable + stop
sudo systemctl disable --now nginx
# Service gagal
systemctl --failed
# Dependency
systemctl list-dependencies nginx
Cheat Sheet journalctl
# Semua log
sudo journalctl
# Log service
sudo journalctl -u nginx
# 50 log terakhir
sudo journalctl -u nginx -n 50
# Real-time
sudo journalctl -u nginx -f
# Log hari ini
sudo journalctl --since today
# Berdasarkan waktu
sudo journalctl --since "2026-10-03 08:00:00"
# Boot saat ini
sudo journalctl -b
# Boot sebelumnya
sudo journalctl -b -1
# Daftar boot
sudo journalctl --list-boots
# Error
sudo journalctl -p err
# Error service
sudo journalctl -u nginx -p err
# Log service sejak boot
sudo journalctl -b -u nginx
# Tanpa pager
sudo journalctl -u nginx --no-pager

Kesimpulan
systemctl dan journalctl merupakan dua tool fundamental yang perlu dikuasai oleh sysadmin Linux.
systemctl digunakan untuk mengelola service:
start
stop
restart
reload
enable
disable
status
Sementara journalctl digunakan untuk melakukan investigasi melalui log.
Kemampuan filtering berdasarkan:
- service;
- waktu;
- boot;
- priority;
- jumlah baris;
- real-time monitoring;
membuat troubleshooting menjadi jauh lebih terarah.
Ketika sebuah service gagal start, jangan langsung mengandalkan restart.
Gunakan pendekatan:
status
→ journal
→ filter
→ validasi konfigurasi
→ port
→ dependency
→ resource
→ perbaikan
→ verifikasi
Dengan workflow tersebut, troubleshooting Linux berubah dari aktivitas “coba-coba perintah” menjadi proses diagnosis yang sistematis.
Bagi sysadmin, kemampuan membaca log sama pentingnya dengan kemampuan menjalankan perintah. Karena service yang gagal biasanya sudah meninggalkan jejak—kita hanya perlu tahu di mana mencarinya.
FAQ
Pertanyaan: Apa fungsi systemctl di Linux?
Jawaban: systemctl digunakan untuk mengelola service dan unit systemd, termasuk start, stop, restart, status, enable, dan disable.
Pertanyaan: Apa fungsi journalctl?
Jawaban: journalctl digunakan untuk membaca dan menganalisis log yang dikumpulkan oleh systemd journal.
Pertanyaan: Bagaimana melihat log service tertentu?
Jawaban: Gunakan sudo journalctl -u nama-service, misalnya sudo journalctl -u nginx.
Pertanyaan: Bagaimana melihat log service secara real-time?
Jawaban: Gunakan sudo journalctl -u nama-service -f.
Pertanyaan: Bagaimana melihat error service?
Jawaban: Gunakan sudo journalctl -u nama-service -p err.
Pertanyaan: Bagaimana melihat log dari boot sebelumnya?
Jawaban: Gunakan sudo journalctl -b -1.
Pertanyaan: Apa perbedaan enable dan start?
Jawaban: start menjalankan service sekarang, sedangkan enable mengatur agar service otomatis dijalankan saat boot.
Pertanyaan: Apa perbedaan restart dan reload?
Jawaban: restart menghentikan lalu menjalankan kembali service, sedangkan reload memuat ulang konfigurasi tanpa restart penuh jika service mendukungnya.
Pertanyaan: Apa yang harus dilakukan ketika service gagal start?
Jawaban: Periksa systemctl status, lanjutkan dengan journalctl, kemudian validasi konfigurasi, periksa port, dependency, permission, dan resource server.
Jika Anda bekerja sebagai sysadmin, administrator server, DevOps, network administrator, atau sedang belajar Linux, systemctl dan journalctl adalah dua perintah yang wajib dikuasai.
Jangan hanya menghafal sintaksnya. Pahami juga kapan menggunakan systemctl, kapan membaca journalctl, bagaimana melakukan filtering log, dan bagaimana menemukan akar masalah service yang gagal.
Punya pengalaman troubleshooting service Linux yang menarik? Bagikan pengalaman, error, atau solusi Anda di kolom komentar.
Jika artikel ini bermanfaat, bagikan kepada teman, siswa, rekan sysadmin, atau komunitas Linux agar semakin banyak orang memahami troubleshooting server secara sistematis.
Lanjutkan belajar dengan artikel lainnya tentang Linux Server, Ubuntu Server, Debian Server, CLI Linux, Networking, MikroTik, Docker, DevOps, Monitoring, dan Cybersecurity.
Dukung kami dengan Subscribe & Join Membership channel YouTube | Walid Umar
Akses video pembelajaran eksklusif, materi persiapan UKK (Uji Kompetensi Siswa) dan Penyelesaian Soal LKS ITNSA