/var/www/html/index.php
secara berkala dari script lokal. Tiga metode yang paling umum adalah:
- Systemd Service + Timer
- Cron
- Shell Loop +
nohup
Di bawah ini adalah contoh implementasinya.
1. Menggunakan Systemd Service + Timer
Metode ini paling cocok untuk VPS atau server Ubuntu normal yang menggunakan systemd.
Buat script update
sudo nano /usr/local/bin/update-index.sh
Isi:
#!/bin/sh
cat > /var/www/html/index.php <<'EOF'
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Website</title>
</head>
<body>
<h1>INDEX OTOMATIS</h1>
</body>
</html>
EOF
Beri permission execute:
sudo chmod +x /usr/local/bin/update-index.sh
Buat service
sudo nano /etc/systemd/system/update-index.service
Isi:
[Unit]
Description=Update index.php
[Service]
Type=oneshot
ExecStart=/usr/local/bin/update-index.sh
Buat timer
sudo nano /etc/systemd/system/update-index.timer
Isi:
[Unit]
Description=Update index.php every minute
[Timer]
OnBootSec=30sec
OnUnitActiveSec=60sec
Persistent=true
[Install]
WantedBy=timers.target
Aktifkan
sudo systemctl daemon-reload
sudo systemctl enable --now update-index.timer
Cek status:
systemctl status update-index.timer
Tes langsung tanpa menunggu timer:
sudo systemctl start update-index.service
Kelebihan
- Otomatis aktif setelah reboot.
- Logging lebih rapi.
- Cocok untuk server Ubuntu normal.
- Lebih mudah dikelola menggunakan
systemctl.
Kekurangan
- Biasanya tidak cocok untuk Docker container minimal yang tidak menjalankan
systemd.
2. Menggunakan Cron
Cron adalah cara klasik untuk menjalankan perintah secara berkala di Linux.
Buat script
nano /tmp/update-index.sh
Isi:
#!/bin/sh
cat > /var/www/html/index.php <<'EOF'
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Website</title>
</head>
<body>
<h1>INDEX OTOMATIS</h1>
</body>
</html>
EOF
Beri permission:
chmod +x /tmp/update-index.sh
Tes manual:
/tmp/update-index.sh
Tambahkan ke crontab
crontab -e
Untuk menjalankan setiap 10 menit:
*/10 * * * * /tmp/update-index.sh >> /tmp/update-index.log 2>&1
Untuk menjalankan setiap 1 menit:
* * * * * /tmp/update-index.sh >> /tmp/update-index.log 2>&1
Cek cron:
crontab -l
Cek log:
cat /tmp/update-index.log
Kelebihan
- Sederhana.
- Sudah umum digunakan di Linux.
- Cocok untuk banyak jenis scheduled task.
Kekurangan
- Membutuhkan
cronataucrond. - Pada beberapa Docker container,
crontabtidak tersedia secara default.
3. Menggunakan Shell Loop + nohup
Metode ini paling sederhana jika server atau container tidak mempunyai cron maupun systemd.
Kita menggunakan loop:
while true
dan memberikan jeda dengan:
sleep
Buat script utama
nano /tmp/update-index.sh
Isi:
#!/bin/sh
cat > /var/www/html/index.php <<'EOF'
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Website</title>
</head>
<body>
<h1>INDEX OTOMATIS</h1>
</body>
</html>
EOF
Beri permission:
chmod +x /tmp/update-index.sh
Buat loop
nano /tmp/systd.sh
Isi:
#!/bin/sh
while true
do
/tmp/update-index.sh
sleep 60
done
60 berarti 60 detik atau 1 menit.
Contoh interval lain:
60 = 1 menit
300 = 5 menit
600 = 10 menit
1800 = 30 menit
Beri permission:
chmod +x /tmp/systd.sh
Jalankan di background
nohup /tmp/systd.sh > /tmp/systd.log 2>&1 &
Dengan nohup, proses tetap berjalan walaupun terminal ditutup.
Cek proses
ps aux | grep '[s]ystd.sh'
Cek log
cat /tmp/systd.log
Hentikan proses
pkill -f /tmp/systd.sh
Tes update secara langsung
/tmp/update-index.sh
Jika ingin mengganti isi index.php, cukup edit:
nano /tmp/update-index.sh
Tidak perlu restart systd.sh. Pada siklus berikutnya, systd.sh akan menjalankan versi terbaru dari update-index.sh.
Perbandingan Ketiga Metode
| Metode | Cocok untuk | Otomatis setelah reboot | Membutuhkan daemon |
|---|---|---|---|
| Systemd Timer | Ubuntu/VPS normal | Ya | systemd |
| Cron | Linux normal | Ya | cron |
| Shell Loop + nohup | Docker / Linux minimal | Tidak otomatis | Tidak |
Struktur Shell Loop
Jika menggunakan cara ketiga, alurnya seperti ini:
/tmp/systd.sh
|
| setiap 60 detik
v
/tmp/update-index.sh
|
v
/var/www/html/index.php
Untuk operasi sederhana seperti menulis ulang satu file lokal, interval 1 menit biasanya sangat ringan.
Namun perlu diperhatikan bahwa direktori /tmp dapat dibersihkan oleh sistem atau hilang ketika container dibuat ulang. Untuk penggunaan permanen, simpan script di direktori atau Docker volume yang persisten.