Pada artikel kali ini, saya akan membahas mengenai salah satu fitur Systemd yang memungkinkan user untuk menjalankan suatu command/script atau bahkan mengeksekusi Systemd Service berdasarkan aktifitas suatu file/folder yang dimonitor. Baik ketika file terkait telah dimodifikasi, folder terkait terdapat file baru yang dibuat, dan sebagainya.
Komponen systemd yang dimaksud adalah Systemd Path unit.
Ringkasan Systemd unit Path
Unit Path
pada systemd ini memiliki file dengan akhiran .path
yang didalamnya berisikan instruksi terkait file/folder apa yang dipantau dan apa yang akan dieksekusi ketika kondisi pemantauan terpenuhi.
Mengenai apa yang dieksekusi, hal tersebut harus diatur menggunakan Systemd unit Service
sehingga paling tidak harus membuat 2 file untuk keperluan ini, yaitu:
- File konfigurasi
.path
- File konfigurasi
.service
Kedua file konfigurasi tersebut, bisa diletakkan di /etc/systemd/system/
untuk lingkup global, atau /home/$USER/.config/systemd/user/
untuk lingkup user tertentu.
Membuat unit Path
Misal, kita ingin memonitor apakah suatu file (anggap saja /var/www/index.php
) mengalami perubahan isi, dan ketika hal itu terjadi akan mengirimkan alert berupa email.
Maka, kita buat file /etc/systemd/system/monitor-index.path
dengan isi:
|
|
kemudian, isi dari file /etc/systemd/system/monitor-index.service
:
|
|
Setelah itu, tinggal jalankan perintah dibawah ini agar systemd
mengenali kedua file unit diatas:
|
|
Setiap kali ada pengubahan unit apapun pada systemd
maka perlu melakukan systemctl daemon-reload
Mengaktifkan unit Path
Kemudian meng-enable unit path monitor-index.path
tersebut dengan:
|
|
Ketika dicek statusnya dengan systemctl status monitor-index.path
, maka akan muncul seperti ini:
|
|
Bisa diperhatikan dari output diatas, bahwa unit Path
tersebut akan men-trigger unit monitor-index.service
jika kondisi pada unit Path
ini terpenuhi.
Menonaktifkan unit Path
Untuk menonaktifkan unit Path
, jalankan perintah berikut ini:
|
|
Penutup
Selain opsi PathModified
, terdapat opsi-opsi lain yang bisa digunakan pada bagian [Path]
, diantaranya adalah:
|
|
yang seluruhnya bisa dibaca secara detail pada manpages yang bisa diakses melalui man systemd.path
.
Perlu diketahui pula, sebenarnya unit Path
ini memanfaatkan API dari inotify
sehingga unit ini mewarisi semua limitasi yang ada pada inotify
.
Kemudian, untuk keperluan file monitoring yang lebih kompleks, unit ini kurang cocok untuk dimanfaatkan karena tidak terlalu fleksibel.
Semoga bermanfaat. Barakallahufiikum