Lewati ke isi

Introduction

Systemd adalah sebuah sistem init yang digunakan pada sistem operasi Linux modern, dan memungkinkan kita untuk membuat sebuah service yang dapat dijalankan secara otomatis pada saat startup sistem. Berikut ini adalah langkah-langkah umum untuk membuat systemd service:

Buat file konfigurasi service di direktori

/etc/systemd/system 
Nama file harus diakhiri dengan .service. Contohnya:
/etc/systemd/system/myservice.service
Isi file konfigurasi tersebut dengan informasi mengenai service yang akan dibuat. Berikut ini adalah contoh konfigurasi dasar untuk sebuah service:

[Unit]
Description=Nama service
After=network.target

[Service]
ExecStart=/path/to/my/service
Restart=always

[Install]
WantedBy=multi-user.target

Penjelasan dari setiap baris pada konfigurasi di atas adalah sebagai berikut:

[Unit] section berisi deskripsi dari service, serta konfigurasi untuk service tersebut setelah apa yang harus dijalankan (After).

[Service] section berisi perintah yang harus dijalankan untuk memulai service (ExecStart) dan konfigurasi untuk service tersebut agar selalu direstart ketika terhenti (Restart).

[Install] section berisi konfigurasi untuk instalasi service, yaitu dengan menetapkan target dari service (WantedBy).

Simpan file konfigurasi tersebut dan jalankan perintah systemctl daemon-reload untuk menginformasikan sistem mengenai perubahan konfigurasi service.

Jalankan perintah systemctl start myservice.service untuk menjalankan service yang telah dibuat.

Untuk mengecek apakah service berjalan dengan baik, bisa menggunakan perintah systemctl status myservice.service.

Jika ingin menjadikan service tersebut selalu aktif saat startup, jalankan perintah systemctl enable myservice.service.

Demikianlah langkah-langkah dasar untuk membuat systemd service. Namun, perlu diperhatikan bahwa konfigurasi systemd service bisa lebih kompleks tergantung pada kebutuhan dan kompleksitas dari service yang akan dibuat.

example 1

sudo nano /etc/systemd/system/minecraft.service

[Unit]
Description=minecraft
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
User=root
Group=root
ExecReload=/bin/kill -HUP $MAINPID
WorkingDirectory=/home/minecraft-gung/server_19/
ExecStart=/home/minecraft-gung/server_19/bedrock_server

Environment=LD_LIBRARY_PATH=.
Restart=on-failure

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable minecraft.server

sudo systemctl status minecraft
● minecraft.service - minecraft
     Loaded: loaded (/etc/systemd/system/minecraft.service; disabled; vendor preset: enabled)
     Active: inactive (dead)

Mar 29 08:35:43 hexadecimal bedrock_server[3387590]: [2023-03-29 08:35:43:584 INFO] Player Spawned: agungsurya>
Mar 29 08:37:55 hexadecimal bedrock_server[3387590]: [2023-03-29 08:37:55:862 INFO] Player disconnected: agung>
Mar 29 08:39:07 hexadecimal bedrock_server[3387590]: [2023-03-29 08:39:07:332 INFO] Player connected: agungsur>
Mar 29 08:39:13 hexadecimal bedrock_server[3387590]: [2023-03-29 08:39:13:727 INFO] Player Spawned: agungsurya>
Mar 29 08:39:45 hexadecimal bedrock_server[3387590]: [2023-03-29 08:39:45:433 INFO] Player disconnected: agung>
Mar 29 08:42:09 hexadecimal bedrock_server[3387590]: [2023-03-29 08:42:09:139 INFO] Running AutoCompaction...
Mar 29 08:48:09 hexadecimal bedrock_server[3387590]: [2023-03-29 08:48:09:227 INFO] Running AutoCompaction...
Mar 29 08:51:27 hexadecimal systemd[1]: Stopping minecraft...
Mar 29 08:51:27 hexadecimal systemd[1]: minecraft.service: Succeeded.
Mar 29 08:51:27 hexadecimal systemd[1]: Stopped minecraft.

sudo systemctl start minecraft

example 2

[Unit]
Description=Run curl command on boot

[Service]
Type=simple
ExecStart=/usr/bin/curl -s -X POST "https://api.telegram.org/bot123/sendMessage" -d chat_id="123" -d text=server-reboot-alert >/dev/null 2>&1

[Install]
WantedBy=multi-user.target
systemctl daemon-reload