Langsung ke konten
Linux

systemctl dan journalctl: Panduan Lengkap Mengelola Service Linux untuk Sysadmin

Oktober 14, 2026 · 14 menit baca · Walid Umar

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:

UnitFungsi
.serviceMengelola service
.socketMengelola socket
.timerMenjalankan task berdasarkan jadwal
.mountMengelola mount point
.targetMengelompokkan unit
.pathMemantau 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

PerintahFungsi
systemctl start SERVICEMenjalankan service
systemctl stop SERVICEMenghentikan service
systemctl restart SERVICERestart service
systemctl reload SERVICEReload konfigurasi
systemctl status SERVICEMelihat status
systemctl enable SERVICEAktifkan autostart
systemctl disable SERVICENonaktifkan autostart
systemctl enable --now SERVICEEnable + start
systemctl disable --now SERVICEDisable + 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

Tinggalkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Dilindungi Oleh
Shield Security