Langsung ke konten utama

3 Cara Otomatis Replace index.php di Linux Ubuntu: Systemd, Cron, dan Shell Loop

Ada beberapa cara untuk membuat Linux Ubuntu otomatis mengganti atau memperbarui file:
/var/www/html/index.php

secara berkala dari script lokal. Tiga metode yang paling umum adalah:

  1. Systemd Service + Timer
  2. Cron
  3. 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 cron atau crond.
  • Pada beberapa Docker container, crontab tidak 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.

Postingan populer dari blog ini

Tutorial Dasar GSocket dan gs-netcat di Windows dan Ubuntu

GSocket atau Global Socket Toolkit adalah kumpulan tool yang memungkinkan dua komputer membuat koneksi TCP melalui Global Socket Relay Network (GSRN) . Salah satu tool di dalamnya adalah gs-netcat . Berbeda dengan koneksi TCP tradisional yang biasanya membutuhkan alamat IP dan port tujuan, GSocket memungkinkan dua endpoint saling menemukan berdasarkan sebuah shared secret . Koneksi antarendpoint kemudian dapat dilindungi dengan enkripsi end-to-end. Gambaran Cara Kerja Secara sederhana: Windows | | outbound connection v Global Socket Relay Network ^ | outbound connection | Ubuntu Artinya Ubuntu tidak harus membuka sebuah port publik khusus agar endpoint GSocket dapat berkomunikasi. Ini berbeda dengan SSH langsung: Windows | | SSH v IP Ubuntu:22 Pada SSH biasa, Windows harus mengetahui IP atau domain server serta port SSH yang dapat dijangkau. Apakah gs-netcat Tersedia di Windows? Ya. GSocket menyediakan gs-netcat yang dapat digunaka...