<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://noctkj.net/index.php?action=history&amp;feed=atom&amp;title=Linux_%3A_Membuat_Service_Sendiri_dengan_systemd</id>
	<title>Linux : Membuat Service Sendiri dengan systemd - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://noctkj.net/index.php?action=history&amp;feed=atom&amp;title=Linux_%3A_Membuat_Service_Sendiri_dengan_systemd"/>
	<link rel="alternate" type="text/html" href="https://noctkj.net/index.php?title=Linux_:_Membuat_Service_Sendiri_dengan_systemd&amp;action=history"/>
	<updated>2026-11-03T13:13:16Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://noctkj.net/index.php?title=Linux_:_Membuat_Service_Sendiri_dengan_systemd&amp;diff=1682&amp;oldid=prev</id>
		<title>Maintenance script: Protected &quot;Linux : Membuat Service Sendiri dengan systemd&quot;: Proteksi editorial: edit/move sysop ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))</title>
		<link rel="alternate" type="text/html" href="https://noctkj.net/index.php?title=Linux_:_Membuat_Service_Sendiri_dengan_systemd&amp;diff=1682&amp;oldid=prev"/>
		<updated>2026-11-03T00:01:49Z</updated>

		<summary type="html">&lt;p&gt;Protected &amp;quot;&lt;a href=&quot;/index.php/Linux_:_Membuat_Service_Sendiri_dengan_systemd&quot; title=&quot;Linux : Membuat Service Sendiri dengan systemd&quot;&gt;Linux : Membuat Service Sendiri dengan systemd&lt;/a&gt;&amp;quot;: Proteksi editorial: edit/move sysop ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 07:01, 3 November 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://noctkj.net/index.php?title=Linux_:_Membuat_Service_Sendiri_dengan_systemd&amp;diff=1681&amp;oldid=prev</id>
		<title>Maintenance script: Artikel baru: konsep inti membuat service systemd</title>
		<link rel="alternate" type="text/html" href="https://noctkj.net/index.php?title=Linux_:_Membuat_Service_Sendiri_dengan_systemd&amp;diff=1681&amp;oldid=prev"/>
		<updated>2026-11-03T00:01:39Z</updated>

		<summary type="html">&lt;p&gt;Artikel baru: konsep inti membuat service systemd&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Menjalankan program di server itu gampang: ketik perintahnya, tekan Enter, selesai. Masalahnya muncul beberapa jam kemudian. Terminal ditutup, program ikut mati. Server reboot, program tidak pernah bangun lagi. Dan tidak ada yang tahu kalau program itu sudah berhenti sejak jam tiga pagi.&lt;br /&gt;
&lt;br /&gt;
Di sinilah &amp;#039;&amp;#039;&amp;#039;service&amp;#039;&amp;#039;&amp;#039; berperan. Service bukan program yang lebih hebat, tapi &amp;#039;&amp;#039;&amp;#039;kontrak tertulis&amp;#039;&amp;#039;&amp;#039; yang memberitahu systemd: program apa yang dijalankan, sebagai user siapa, dari folder mana, dan apa yang harus dilakukan kalau program itu mati. Artikel ini membahas cara membuat kontrak itu sendiri, bukan sekadar memakai service bawaan paket.&lt;br /&gt;
&lt;br /&gt;
== 🎯 Tujuan ==&lt;br /&gt;
&lt;br /&gt;
Setelah membaca dan mempraktikkan artikel ini, kamu diharapkan bisa:&lt;br /&gt;
&lt;br /&gt;
* Menjelaskan beda &amp;quot;program yang dijalankan&amp;quot; dan &amp;quot;program yang dijadikan service&amp;quot;.&lt;br /&gt;
* Menulis file unit &amp;lt;code&amp;gt;.service&amp;lt;/code&amp;gt; sendiri dengan tiga bagian yang benar.&lt;br /&gt;
* Memilih &amp;lt;code&amp;gt;Type=&amp;lt;/code&amp;gt; yang cocok: &amp;lt;code&amp;gt;simple&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;oneshot&amp;lt;/code&amp;gt;, atau &amp;lt;code&amp;gt;forking&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Memakai &amp;lt;code&amp;gt;User=&amp;lt;/code&amp;gt; dan &amp;lt;code&amp;gt;WorkingDirectory=&amp;lt;/code&amp;gt; supaya service tidak jalan sebagai root dan tidak salah folder.&lt;br /&gt;
* Membedakan &amp;lt;code&amp;gt;start&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;enable&amp;lt;/code&amp;gt;, dan &amp;lt;code&amp;gt;enable --now&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Membaca kegagalan service dari &amp;lt;code&amp;gt;systemctl status&amp;lt;/code&amp;gt; dan &amp;lt;code&amp;gt;journalctl&amp;lt;/code&amp;gt; tanpa menebak-nebak.&lt;br /&gt;
&lt;br /&gt;
== 📍 Konteks nyata ==&lt;br /&gt;
&lt;br /&gt;
Bayangkan kamu punya tukang panggilan. Selama kamu telepon, dia datang dan bekerja. Tapi begitu kamu berhenti mengawasi, dia pulang tanpa kabar. Kalau kamu sakit dan tidak bisa menelepon, tidak ada yang datang.&lt;br /&gt;
&lt;br /&gt;
Program yang kamu jalankan manual persis seperti itu. Service adalah &amp;#039;&amp;#039;&amp;#039;kontrak kerja&amp;#039;&amp;#039;&amp;#039; dengan manajer gedung: jam masuk, nama petugas, ruang kerja, dan aturan &amp;quot;kalau tidak masuk tanpa kabar, hubungi saya&amp;quot;. Manajer gedungnya adalah systemd.&lt;br /&gt;
&lt;br /&gt;
💡 &amp;#039;&amp;#039;&amp;#039;Tips:&amp;#039;&amp;#039;&amp;#039; Kalau kamu masih menjalankan skrip penting dengan &amp;lt;code&amp;gt;nohup&amp;lt;/code&amp;gt; atau &amp;lt;code&amp;gt;&amp;amp;amp;&amp;lt;/code&amp;gt; di terminal SSH, itu tanda paling jelas bahwa skrip tersebut butuh service. &amp;lt;code&amp;gt;nohup&amp;lt;/code&amp;gt; hanya menunda masalah, tidak menyelesaikannya.&lt;br /&gt;
&lt;br /&gt;
🔥 &amp;#039;&amp;#039;&amp;#039;Kasus nyata:&amp;#039;&amp;#039;&amp;#039; Sebuah SMK punya skrip penyalin nilai dari aplikasi ujian ke server rapor. Skrip itu dijalankan manual oleh guru piket dengan &amp;lt;code&amp;gt;nohup&amp;lt;/code&amp;gt; setiap sore. Suatu hari listrik padam malam hari, server hidup lagi pagi, tapi skrip tidak. Selama dua hari nilai tiga kelas tidak tersalin, dan panitia mengira server rapornya rusak. Setelah dijadikan service dengan &amp;lt;code&amp;gt;Restart=on-failure&amp;lt;/code&amp;gt;, masalah yang sama tidak terulang saat listrik padam berikutnya.&lt;br /&gt;
&lt;br /&gt;
== 🧠 Konsep singkat ==&lt;br /&gt;
&lt;br /&gt;
File unit adalah file teks biasa berformat INI. Tidak ada bahasa pemrograman di dalamnya, hanya baris &amp;lt;code&amp;gt;Kunci=nilai&amp;lt;/code&amp;gt; yang dikelompokkan dalam tiga bagian.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Tiga bagian yang wajib kamu kenal ===&lt;br /&gt;
&lt;br /&gt;
Tabel berikut adalah kerangka minimal yang berlaku untuk hampir semua service.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Bagian !! Isi !! Menjawab pertanyaan&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[Unit]&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;Description&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;After&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Wants&amp;lt;/code&amp;gt; || Ini service apa, dan kapan boleh dijalankan?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[Service]&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;Type&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ExecStart&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;User&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Restart&amp;lt;/code&amp;gt; || Dijalankan bagaimana, oleh siapa, dari mana?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;[Install]&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;WantedBy=multi-user.target&amp;lt;/code&amp;gt; || Hidup otomatis saat boot atau tidak?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Bagian &amp;lt;code&amp;gt;[Install]&amp;lt;/code&amp;gt; punya sifat khusus yang sering disalahpahami: isinya &amp;#039;&amp;#039;&amp;#039;tidak dibaca saat service berjalan&amp;#039;&amp;#039;&amp;#039;. Bagian itu hanya dipakai ketika kamu menjalankan &amp;lt;code&amp;gt;systemctl enable&amp;lt;/code&amp;gt;, untuk membuat symlink di &amp;lt;code&amp;gt;multi-user.target.wants/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Type: kapan systemd menganggap service &amp;quot;sudah jalan&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Ini keputusan paling penting, dan yang paling sering salah pilih.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Type !! Dianggap jalan saat !! Cocok untuk&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;simple&amp;lt;/code&amp;gt; || proses sudah di-&amp;lt;em&amp;gt;fork&amp;lt;/em&amp;gt; (default) || program yang jalan terus, mis. daemon buatan sendiri&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;exec&amp;lt;/code&amp;gt; || binary berhasil dieksekusi || sama seperti simple, tapi gagal exec ikut dilaporkan&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;oneshot&amp;lt;/code&amp;gt; || proses selesai || skrip sekali jalan, migrasi, backup&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;forking&amp;lt;/code&amp;gt; || proses induk keluar || daemon lama yang mem-&amp;lt;em&amp;gt;fork&amp;lt;/em&amp;gt; ke background&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;notify&amp;lt;/code&amp;gt; || program mengirim sd_notify || aplikasi modern yang siap melapor&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
⚠️ &amp;#039;&amp;#039;&amp;#039;Hati-hati:&amp;#039;&amp;#039;&amp;#039; Pada &amp;lt;code&amp;gt;Type=simple&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;systemctl start&amp;lt;/code&amp;gt; bisa melapor sukses walaupun binary-nya tidak ada atau &amp;lt;code&amp;gt;User=&amp;lt;/code&amp;gt;-nya tidak dikenal. Sebab systemd menganggap service jalan tepat setelah proses di-&amp;lt;em&amp;gt;fork&amp;lt;/em&amp;gt;, sebelum eksekusi binary benar-benar terjadi. Kalau kamu ingin kegagalan itu langsung terlihat, pakai &amp;lt;code&amp;gt;Type=exec&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
📊 &amp;#039;&amp;#039;&amp;#039;Angka penting:&amp;#039;&amp;#039;&amp;#039; Default &amp;lt;code&amp;gt;RestartSec=&amp;lt;/code&amp;gt; hanya 100 milidetik. Kalau programmu butuh waktu untuk melepas port atau menunggu database siap, restart serapat itu justru membuatnya gagal berulang. Isi sendiri, misalnya &amp;lt;code&amp;gt;5s&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Restart: siapa yang menghidupkan ulang ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Restart=&amp;lt;/code&amp;gt; menentukan apakah systemd mencoba menyalakan ulang service yang berhenti. Nilai yang umum dipakai:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;no&amp;lt;/code&amp;gt; — tidak pernah dihidupkan ulang. Cocok untuk &amp;lt;code&amp;gt;oneshot&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;on-failure&amp;lt;/code&amp;gt; — hanya kalau keluar dengan kode error atau dibunuh sinyal. Ini pilihan paling aman untuk pemula.&lt;br /&gt;
* &amp;lt;code&amp;gt;on-success&amp;lt;/code&amp;gt; — hanya kalau keluar bersih. Jarang dipakai.&lt;br /&gt;
* &amp;lt;code&amp;gt;always&amp;lt;/code&amp;gt; — selalu, termasuk setelah keluar normal. Cocok untuk program yang memang harus hidup terus.&lt;br /&gt;
&lt;br /&gt;
Percobaan restart tidak tak terbatas. systemd punya pengaman bernama start limit yang diatur &amp;lt;code&amp;gt;StartLimitIntervalSec=&amp;lt;/code&amp;gt; dan &amp;lt;code&amp;gt;StartLimitBurst=&amp;lt;/code&amp;gt; di bagian &amp;lt;code&amp;gt;[Unit]&amp;lt;/code&amp;gt;. Kalau batas terlampaui, service masuk status &amp;lt;code&amp;gt;failed&amp;lt;/code&amp;gt; dengan pesan &amp;quot;start request repeated too quickly&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
🔥 &amp;#039;&amp;#039;&amp;#039;Kasus nyata:&amp;#039;&amp;#039;&amp;#039; Sebuah kantor distributor memasang skrip sinkronisasi stok sebagai service dengan &amp;lt;code&amp;gt;Restart=always&amp;lt;/code&amp;gt; dan &amp;lt;code&amp;gt;RestartSec=1&amp;lt;/code&amp;gt;. Karena database belum siap saat boot, skrip gagal, restart, gagal lagi. Dalam satu menit service terkunci status &amp;lt;code&amp;gt;failed&amp;lt;/code&amp;gt; dan tidak pernah mencoba lagi sampai admin sadar. Perbaikannya dua baris: &amp;lt;code&amp;gt;RestartSec=10s&amp;lt;/code&amp;gt; dan &amp;lt;code&amp;gt;After=network-online.target mariadb.service&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Di mana file unit disimpan ===&lt;br /&gt;
&lt;br /&gt;
systemd mencari file unit di beberapa folder dengan urutan prioritas. Untuk service buatanmu sendiri, tempat yang benar adalah &amp;lt;code&amp;gt;/etc/systemd/system/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Lokasi !! Isi !! Siapa yang menulis&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;/etc/systemd/system/&amp;lt;/code&amp;gt; || unit buatan admin || kamu&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;/usr/lib/systemd/system/&amp;lt;/code&amp;gt; || unit dari paket || pembuat paket&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;/run/systemd/system/&amp;lt;/code&amp;gt; || unit sementara || sistem saat runtime&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jangan pernah mengedit file di &amp;lt;code&amp;gt;/usr/lib/systemd/system/&amp;lt;/code&amp;gt;. File itu milik paket dan akan tertimpa saat &amp;lt;code&amp;gt;apt upgrade&amp;lt;/code&amp;gt;. Untuk mengubah perilaku service bawaan, pakai &amp;lt;em&amp;gt;drop-in&amp;lt;/em&amp;gt; lewat &amp;lt;code&amp;gt;systemctl edit nama.service&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Tiga perintah yang sering tertukar ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;systemctl start&amp;lt;/code&amp;gt; — jalankan sekarang, tidak otomatis saat boot.&lt;br /&gt;
* &amp;lt;code&amp;gt;systemctl enable&amp;lt;/code&amp;gt; — daftarkan agar jalan saat boot, tapi belum dijalankan sekarang.&lt;br /&gt;
* &amp;lt;code&amp;gt;systemctl enable --now&amp;lt;/code&amp;gt; — keduanya sekaligus. Ini yang paling sering kamu butuhkan.&lt;br /&gt;
&lt;br /&gt;
Setiap kali file unit diubah, systemd perlu membaca ulang: &amp;lt;code&amp;gt;systemctl daemon-reload&amp;lt;/code&amp;gt;. Tanpa itu, perubahan tidak berlaku dan kamu akan bingung kenapa perbaikannya &amp;quot;tidak ngaruh&amp;quot;. Khusus &amp;lt;code&amp;gt;systemctl edit&amp;lt;/code&amp;gt;, reload dilakukan otomatis.&lt;br /&gt;
&lt;br /&gt;
== 🧩 Istilah penting ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Istilah !! Arti singkat&lt;br /&gt;
|-&lt;br /&gt;
| Unit || Satu objek yang dikelola systemd, ditandai akhiran seperti &amp;lt;code&amp;gt;.service&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Unit file || File teks berisi definisi unit, biasanya di &amp;lt;code&amp;gt;/etc/systemd/system&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Drop-in || File tambahan di &amp;lt;code&amp;gt;nama.service.d/*.conf&amp;lt;/code&amp;gt; untuk menimpa sebagian isi unit&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ExecStart&amp;lt;/code&amp;gt; || Perintah utama yang dijalankan saat service start&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;WantedBy&amp;lt;/code&amp;gt; || Target yang &amp;quot;menginginkan&amp;quot; unit ini, dasar pembuatan symlink saat enable&lt;br /&gt;
|-&lt;br /&gt;
| Journal || Kumpulan log yang dikelola systemd-journald, dibaca dengan &amp;lt;code&amp;gt;journalctl&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Masked || Unit yang dinonaktifkan total lewat symlink ke &amp;lt;code&amp;gt;/dev/null&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Start limit || Batas jumlah percobaan start sebelum systemd menyerah&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Satu istilah lagi yang perlu kamu hafal: &amp;lt;code&amp;gt;multi-user.target&amp;lt;/code&amp;gt;. Itu nama sistem &amp;quot;siap dipakai banyak user tanpa GUI&amp;quot;, pengganti istilah runlevel 3 di zaman SysV.&lt;br /&gt;
&lt;br /&gt;
== 🔧 Praktik: membuat service pertama ==&lt;br /&gt;
&lt;br /&gt;
Kita akan membuat service pemantau sederhana: mencatat suhu dan pemakaian disk ke file log setiap 60 detik. Tujuannya bukan alat monitoring serius, tapi supaya kamu melihat sendiri semua lapisan bekerja.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Langkah 1: siapkan skrip dan user khusus ===&lt;br /&gt;
&lt;br /&gt;
Buat user sistem tanpa shell login, supaya service tidak jalan sebagai root.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo useradd --system --no-create-home --shell /usr/sbin/nologin lapor&lt;br /&gt;
sudo mkdir -p /var/lib/lapor&lt;br /&gt;
sudo chown lapor:lapor /var/lib/lapor&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lalu buat skripnya di &amp;lt;code&amp;gt;/usr/local/bin/lapor-suhu.sh&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env bash&lt;br /&gt;
LOG=/var/log/lapor-suhu.log&lt;br /&gt;
&lt;br /&gt;
while true; do&lt;br /&gt;
  SUHU=$(cat /sys/class/thermal/thermal_zone0/temp 2&amp;gt;/dev/null || echo n/a)&lt;br /&gt;
  DISK=$(df -h / | awk &amp;#039;NR==2 {print $5}&amp;#039;)&lt;br /&gt;
  echo &amp;quot;$(date &amp;#039;+%F %T&amp;#039;) suhu=$SUHU disk=$DISK&amp;quot; &amp;gt;&amp;gt; &amp;quot;$LOG&amp;quot;&lt;br /&gt;
  sleep 60&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo install -m 755 -o root -g root /dev/null /usr/local/bin/lapor-suhu.sh&lt;br /&gt;
sudo nano /usr/local/bin/lapor-suhu.sh   # tempel isi di atas&lt;br /&gt;
sudo touch /var/log/lapor-suhu.log&lt;br /&gt;
sudo chown lapor:lapor /var/log/lapor-suhu.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
💡 &amp;#039;&amp;#039;&amp;#039;Tips:&amp;#039;&amp;#039;&amp;#039; Skrip boleh milik &amp;lt;code&amp;gt;root&amp;lt;/code&amp;gt; dan mode &amp;lt;code&amp;gt;755&amp;lt;/code&amp;gt;. Yang dijalankan sebagai user &amp;lt;code&amp;gt;lapor&amp;lt;/code&amp;gt; adalah prosesnya, bukan pemilik file. Ini praktik yang aman: user biasa tidak bisa mengubah skrip yang dijalankan service.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Langkah 2: tulis file unit ===&lt;br /&gt;
&lt;br /&gt;
Simpan sebagai &amp;lt;code&amp;gt;/etc/systemd/system/lapor-suhu.service&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Lapor suhu dan pemakaian disk tiap menit&lt;br /&gt;
Documentation=man:systemd.service(5)&lt;br /&gt;
After=network-online.target&lt;br /&gt;
StartLimitIntervalSec=60&lt;br /&gt;
StartLimitBurst=3&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
User=lapor&lt;br /&gt;
Group=lapor&lt;br /&gt;
WorkingDirectory=/var/lib/lapor&lt;br /&gt;
ExecStart=/usr/local/bin/lapor-suhu.sh&lt;br /&gt;
Restart=on-failure&lt;br /&gt;
RestartSec=5s&lt;br /&gt;
StandardOutput=journal&lt;br /&gt;
StandardError=journal&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Perhatikan tiga hal yang sering dilupakan:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;ExecStart=&amp;lt;/code&amp;gt; harus &amp;#039;&amp;#039;&amp;#039;path absolut&amp;#039;&amp;#039;&amp;#039;. &amp;lt;code&amp;gt;ExecStart=./lapor-suhu.sh&amp;lt;/code&amp;gt; ditolak dengan pesan &amp;quot;Executable path is not absolute&amp;quot;.&lt;br /&gt;
* &amp;lt;code&amp;gt;WorkingDirectory=&amp;lt;/code&amp;gt; menentukan folder kerja. Tanpa ini, path relatif di dalam skrip mengarah ke &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;User=&amp;lt;/code&amp;gt; membuat proses tidak berjalan sebagai root. Kalau user tidak ada, service gagal dengan status &amp;lt;code&amp;gt;217/USER&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Langkah 3: periksa sebelum menyalakan ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
systemd-analyze verify /etc/systemd/system/lapor-suhu.service&lt;br /&gt;
sudo systemctl daemon-reload&lt;br /&gt;
sudo systemctl start lapor-suhu.service&lt;br /&gt;
systemctl status lapor-suhu.service --no-pager&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Status yang sehat kira-kira berbunyi &amp;lt;code&amp;gt;Active: active (running)&amp;lt;/code&amp;gt; dengan &amp;lt;code&amp;gt;Main PID&amp;lt;/code&amp;gt; terisi. Kalau tertulis &amp;lt;code&amp;gt;failed&amp;lt;/code&amp;gt;, jangan langsung mengubah-ubah file; baca dulu baris &amp;lt;code&amp;gt;Process: ... status=...&amp;lt;/code&amp;gt; di bawahnya.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Langkah 4: buktikan lewat log dan file ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
journalctl -u lapor-suhu.service -n 20 --no-pager&lt;br /&gt;
tail -n 5 /var/log/lapor-suhu.log&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kalau log jurnal kosong tapi file log terisi, itu wajar: skrip menulis sendiri ke file, bukan ke stdout. Justru ini bukti service berjalan.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Langkah 5: jadikan otomatis saat boot ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo systemctl enable --now lapor-suhu.service&lt;br /&gt;
systemctl is-enabled lapor-suhu.service&lt;br /&gt;
systemctl is-active lapor-suhu.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keluaran &amp;lt;code&amp;gt;enabled&amp;lt;/code&amp;gt; dan &amp;lt;code&amp;gt;active&amp;lt;/code&amp;gt; adalah dua hal berbeda. &amp;lt;code&amp;gt;enabled&amp;lt;/code&amp;gt; menjawab &amp;quot;apakah dia ikut boot&amp;quot;, &amp;lt;code&amp;gt;active&amp;lt;/code&amp;gt; menjawab &amp;quot;apakah dia hidup sekarang&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Langkah 6: ubah tanpa menyentuh file asli ===&lt;br /&gt;
&lt;br /&gt;
Misalnya kamu ingin restart policy lebih longgar. Jangan edit file utama, pakai drop-in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo systemctl edit lapor-suhu.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Isi yang muncul adalah file kosong di &amp;lt;code&amp;gt;/etc/systemd/system/lapor-suhu.service.d/override.conf&amp;lt;/code&amp;gt;. Tulis hanya bagian yang berubah:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[Service]&lt;br /&gt;
RestartSec=30s&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lalu &amp;lt;code&amp;gt;systemctl cat lapor-suhu.service&amp;lt;/code&amp;gt; untuk melihat hasil gabungan file asli dan drop-in. Inilah cara yang benar untuk menyesuaikan service milik paket, misalnya Nginx atau SSH.&lt;br /&gt;
&lt;br /&gt;
=== 🔹 Langkah 7: uji kegagalan dengan sengaja ===&lt;br /&gt;
&lt;br /&gt;
Service yang tidak pernah diuji gagal biasanya gagal di waktu yang paling tidak tepat.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo systemctl stop lapor-suhu.service&lt;br /&gt;
sudo mv /usr/local/bin/lapor-suhu.sh /root/&lt;br /&gt;
sudo systemctl start lapor-suhu.service&lt;br /&gt;
systemctl status lapor-suhu.service --no-pager&lt;br /&gt;
sudo mv /root/lapor-suhu.sh /usr/local/bin/&lt;br /&gt;
sudo systemctl reset-failed lapor-suhu.service&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
🧪 &amp;#039;&amp;#039;&amp;#039;Uji cepat:&amp;#039;&amp;#039;&amp;#039; Setelah skrip dikembalikan, jalankan &amp;lt;code&amp;gt;systemctl reset-failed&amp;lt;/code&amp;gt; lalu &amp;lt;code&amp;gt;systemctl start&amp;lt;/code&amp;gt;. Kalau kamu lupa &amp;lt;code&amp;gt;reset-failed&amp;lt;/code&amp;gt;, service bisa menolak start karena masih terhitung dalam start limit.&lt;br /&gt;
&lt;br /&gt;
== 🏭 Dipakai di dunia kerja ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Sekolah dan lab komputer:&amp;#039;&amp;#039;&amp;#039; skrip sinkronisasi nilai, penarik absensi, atau pembersih folder ujian dijalankan sebagai service &amp;lt;code&amp;gt;oneshot&amp;lt;/code&amp;gt; agar tidak bergantung pada guru yang ingat menekan Enter.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Kantor dan distributor:&amp;#039;&amp;#039;&amp;#039; aplikasi internal buatan sendiri (antrian cetak, ekspor data harian) dijalankan sebagai service dengan &amp;lt;code&amp;gt;User=&amp;lt;/code&amp;gt; khusus, sehingga mati saat listrik padam bukan berarti mati permanen.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Rumah sakit dan klinik:&amp;#039;&amp;#039;&amp;#039; agen pengirim data ke sistem BPJS atau server pusat harus hidup terus; &amp;lt;code&amp;gt;Restart=on-failure&amp;lt;/code&amp;gt; plus log jurnal adalah syarat minimal sebelum tim IT mau menyerahkannya ke user.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;ISP dan penyedia layanan:&amp;#039;&amp;#039;&amp;#039; skrip kecil pemantau link, pengirim metrik, atau pembaru sertifikat dijalankan terjadwal sebagai service atau timer, bukan dari terminal admin yang kebetulan masih terbuka.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Industri dan pabrik:&amp;#039;&amp;#039;&amp;#039; agen penghubung antara mesin PLC dan dashboard produksi berjalan sebagai service; berhentinya agen berarti dashboard kosong padahal mesin tetap jalan.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Cloud dan VPS:&amp;#039;&amp;#039;&amp;#039; hampir semua panduan deployment modern berakhir dengan &amp;quot;buat service systemd&amp;quot;, karena itu cara paling standar menjaga proses tetap hidup setelah sesi SSH ditutup.&lt;br /&gt;
&lt;br /&gt;
== ✅ Verifikasi ==&lt;br /&gt;
&lt;br /&gt;
Jangan puas dengan &amp;quot;sepertinya jalan&amp;quot;. Periksa satu per satu.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Perintah !! Yang dilihat !! Harapan&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;systemctl status lapor-suhu&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;Active&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Main PID&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;active (running)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;systemctl is-enabled lapor-suhu&amp;lt;/code&amp;gt; || status boot || &amp;lt;code&amp;gt;enabled&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;journalctl -u lapor-suhu -b&amp;lt;/code&amp;gt; || log sejak boot || ada catatan start tanpa error&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;systemctl show -p User -p Restart lapor-suhu&amp;lt;/code&amp;gt; || nilai efektif || sesuai file unit&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;systemd-analyze verify lapor-suhu.service&amp;lt;/code&amp;gt; || validitas unit || tidak ada peringatan&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ps -o user,pid,cmd -C lapor-suhu.sh&amp;lt;/code&amp;gt; || user proses || &amp;lt;code&amp;gt;lapor&amp;lt;/code&amp;gt;, bukan &amp;lt;code&amp;gt;root&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Uji terakhir yang paling jujur: reboot server, lalu cek &amp;lt;code&amp;gt;systemctl status&amp;lt;/code&amp;gt; sebelum menyentuh apa pun. Kalau service hanya hidup setelah kamu start manual, berarti &amp;lt;code&amp;gt;enable&amp;lt;/code&amp;gt;-nya belum benar.&lt;br /&gt;
&lt;br /&gt;
== ⚠️ Kesalahan umum &amp;amp; troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Gejala !! Penyebab umum !! Perbaikan&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;status=203/EXEC&amp;lt;/code&amp;gt; || skrip tidak executable atau shebang salah || &amp;lt;code&amp;gt;chmod 755&amp;lt;/code&amp;gt;, cek baris &amp;lt;code&amp;gt;#!/usr/bin/env bash&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;status=217/USER&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;User=&amp;lt;/code&amp;gt; menunjuk user yang tidak ada || buat user atau perbaiki nama&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;status=200/CHDIR&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;WorkingDirectory=&amp;lt;/code&amp;gt; tidak ada || buat foldernya atau hapus direktif&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;Executable path is not absolute&amp;quot; || &amp;lt;code&amp;gt;ExecStart=&amp;lt;/code&amp;gt; pakai path relatif || tulis &amp;lt;code&amp;gt;/usr/local/bin/...&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Jalan manual bisa, service gagal || beda user, PATH, atau folder kerja || samakan &amp;lt;code&amp;gt;User=&amp;lt;/code&amp;gt; dan &amp;lt;code&amp;gt;WorkingDirectory=&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Perubahan tidak berefek || lupa &amp;lt;code&amp;gt;daemon-reload&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;systemctl daemon-reload&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;start request repeated too quickly&amp;quot; || restart beruntun melewati start limit || perbaiki penyebab, lalu &amp;lt;code&amp;gt;reset-failed&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Service mati saat SSH ditutup || masih dijalankan manual di shell || jadikan unit, jangan &amp;lt;code&amp;gt;nohup&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Log kosong di jurnal || program menulis ke file sendiri || periksa file log aplikasi&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
⚠️ &amp;#039;&amp;#039;&amp;#039;Hati-hati:&amp;#039;&amp;#039;&amp;#039; Kalau service &amp;lt;code&amp;gt;oneshot&amp;lt;/code&amp;gt; selesai, statusnya kembali &amp;lt;code&amp;gt;dead&amp;lt;/code&amp;gt; dan itu normal. Jangan panik dan menambahkan &amp;lt;code&amp;gt;Restart=always&amp;lt;/code&amp;gt; pada skrip migrasi; itu akan menjalankan migrasi berulang-ulang. Untuk &amp;lt;code&amp;gt;oneshot&amp;lt;/code&amp;gt; yang ingin tetap tampak aktif, gunakan &amp;lt;code&amp;gt;RemainAfterExit=yes&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
⚠️ &amp;#039;&amp;#039;&amp;#039;Hati-hati:&amp;#039;&amp;#039;&amp;#039; Pesan &amp;quot;jalan manual bisa, tapi service gagal&amp;quot; hampir selalu bukan bug systemd. Penyebabnya perbedaan lingkungan: user berbeda, &amp;lt;code&amp;gt;PATH&amp;lt;/code&amp;gt; berbeda, folder kerja berbeda, atau variabel dari &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt; tidak ikut terbaca. Service tidak membaca &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt; milik siapa pun.&lt;br /&gt;
&lt;br /&gt;
== 🔐 Catatan keamanan &amp;amp; etika ==&lt;br /&gt;
&lt;br /&gt;
File unit di &amp;lt;code&amp;gt;/etc/systemd/system/&amp;lt;/code&amp;gt; dieksekusi dengan hak root. Siapa pun yang bisa menulis ke folder itu setara bisa menjalankan perintah sebagai root, jadi jaga permission folder dan jangan longgarkan tanpa alasan.&lt;br /&gt;
&lt;br /&gt;
* Selalu isi &amp;lt;code&amp;gt;User=&amp;lt;/code&amp;gt; dan &amp;lt;code&amp;gt;Group=&amp;lt;/code&amp;gt;. Service buatan sendiri hampir tidak pernah perlu root.&lt;br /&gt;
* Jangan menaruh password di file unit. File unit terbaca semua user. Kalau perlu rahasia, pakai &amp;lt;code&amp;gt;EnvironmentFile=&amp;lt;/code&amp;gt; dengan permission &amp;lt;code&amp;gt;600&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Tambahkan pengerasan ringan: &amp;lt;code&amp;gt;NoNewPrivileges=yes&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;PrivateTmp=yes&amp;lt;/code&amp;gt;, dan &amp;lt;code&amp;gt;ProtectSystem=strict&amp;lt;/code&amp;gt; bila service tidak perlu menulis ke sistem.&lt;br /&gt;
* Untuk service yang hanya butuh satu proses sederhana, &amp;lt;code&amp;gt;DynamicUser=yes&amp;lt;/code&amp;gt; bisa membuat user otomatis tanpa kamu mengelola akun.&lt;br /&gt;
* Etika: membuat service di komputer lab sekolah untuk menjalankan program yang bukan tugasmu, termasuk pelanggaran. Kamu diberi akses root untuk belajar, bukan untuk menguasai mesin.&lt;br /&gt;
&lt;br /&gt;
📊 &amp;#039;&amp;#039;&amp;#039;Angka penting:&amp;#039;&amp;#039;&amp;#039; Nama unit maksimal 255 karakter, dan hanya boleh berisi huruf, angka, titik, garis bawah, tanda hubung, titik dua, dan backslash. Spasi diganti dengan aturan &amp;lt;em&amp;gt;escaping&amp;lt;/em&amp;gt; tersendiri; pakai &amp;lt;code&amp;gt;systemd-escape&amp;lt;/code&amp;gt; kalau ragu.&lt;br /&gt;
&lt;br /&gt;
== 📌 Kesimpulan ==&lt;br /&gt;
&lt;br /&gt;
Service bukan sihir dan bukan program yang lebih pintar. Service adalah kontrak: kamu menyebut program, user, folder, dan aturan restart; systemd yang mengawasi sisanya.&lt;br /&gt;
&lt;br /&gt;
Tiga hal yang paling menentukan berhasil atau tidaknya service buatanmu: &amp;lt;code&amp;gt;ExecStart&amp;lt;/code&amp;gt; absolut, &amp;lt;code&amp;gt;User=&amp;lt;/code&amp;gt; dan &amp;lt;code&amp;gt;WorkingDirectory=&amp;lt;/code&amp;gt; yang benar, serta &amp;lt;code&amp;gt;daemon-reload&amp;lt;/code&amp;gt; setelah setiap perubahan. Sisanya hanya latihan membaca status dan log.&lt;br /&gt;
&lt;br /&gt;
Langkah berikutnya: ambil satu skrip yang biasa kamu jalankan manual di lab, lalu ubah menjadi service dengan &amp;lt;code&amp;gt;Type=oneshot&amp;lt;/code&amp;gt;. Rasakan bedanya setelah kamu reboot server dan skrip itu berjalan sendiri.&lt;br /&gt;
&lt;br /&gt;
== 🔗 Materi terkait ==&lt;br /&gt;
&lt;br /&gt;
* [[Linux : Cara Membaca Penyebab Service Gagal Start dengan systemctl status dan journalctl]] — lanjutan wajib setelah artikel ini, untuk membaca kegagalan service.&lt;br /&gt;
* [[Linux : Cek Service yang Sedang Berjalan]] — memeriksa service lain yang sudah aktif di server.&lt;br /&gt;
* [[Linux : Manajemen Paket dan Repositori Debian]] — tempat paket resmi memasang unit &amp;lt;code&amp;gt;.service&amp;lt;/code&amp;gt; miliknya.&lt;br /&gt;
* [[Linux : Manajemen User Dasar]] — dasar membuat user sistem untuk &amp;lt;code&amp;gt;User=&amp;lt;/code&amp;gt;.&lt;br /&gt;
* [[Linux : Permission File dan Folder]] — kenapa skrip &amp;lt;code&amp;gt;755&amp;lt;/code&amp;gt; dan log &amp;lt;code&amp;gt;600&amp;lt;/code&amp;gt; penting.&lt;br /&gt;
* [[Linux: Cron Job]] — alternatif untuk tugas terjadwal yang tidak perlu hidup terus.&lt;br /&gt;
* [[Linux : Praktikum Audit Repositori dan Diagnosa Instalasi Paket Gagal]] — pola diagnosis lapis demi lapis yang bisa kamu pakai untuk service.&lt;br /&gt;
&lt;br /&gt;
== 📚 Referensi ==&lt;br /&gt;
&lt;br /&gt;
* [https://manpages.debian.org/bookworm/systemd/systemd.service.5.en.html systemd.service(5) — Debian bookworm] — tipe service, &amp;lt;code&amp;gt;ExecStart&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Restart&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RestartSec&amp;lt;/code&amp;gt;, perilaku &amp;lt;code&amp;gt;Type=simple&amp;lt;/code&amp;gt;.&lt;br /&gt;
* [https://manpages.debian.org/bookworm/systemd/systemd.unit.5.en.html systemd.unit(5) — Debian bookworm] — urutan pencarian folder unit, drop-in, symlink &amp;lt;code&amp;gt;.wants/&amp;lt;/code&amp;gt;, aturan nama unit.&lt;br /&gt;
* [https://manpages.debian.org/bookworm/systemd/systemd.exec.5.en.html systemd.exec(5) — Debian bookworm] — &amp;lt;code&amp;gt;User=&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Group=&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WorkingDirectory=&amp;lt;/code&amp;gt;, dan pengerasan proses.&lt;br /&gt;
* [https://manpages.debian.org/bookworm/systemd/systemctl.1.en.html systemctl(1) — Debian bookworm] — &amp;lt;code&amp;gt;start&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;enable&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;daemon-reload&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;reset-failed&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;edit&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;cat&amp;lt;/code&amp;gt;.&lt;br /&gt;
* [https://manpages.debian.org/bookworm/systemd/journalctl.1.en.html journalctl(1) — Debian bookworm] — membaca log per unit dan per boot.&lt;br /&gt;
* [https://manpages.debian.org/bookworm/systemd/systemd-analyze.1.en.html systemd-analyze(1) — Debian bookworm] — &amp;lt;code&amp;gt;verify&amp;lt;/code&amp;gt; untuk memeriksa unit sebelum dijalankan.&lt;br /&gt;
&lt;br /&gt;
[[Category:TKJ]]&lt;br /&gt;
[[Category:Linux]]&lt;br /&gt;
[[Category:Server]]&lt;br /&gt;
[[Category:systemd]]&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
</feed>