
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:
| |
Bagian Unit (bukan [Unit]) ini berisikan nama service unit yang akan dieksekusi oleh systemd ketika terdeteksi sesuatu pada file yang dimonitor. Sebenarnya secara default tidak perlu ditulis jika nama service unit itu sama dengan nama path unitnya.
Sesuai dengan contoh skenario, isi dari file /etc/systemd/system/monitor-index.service bisa berupa:
| |
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