Untuk segera membatalkan dan keluar dari skrip jika eksekusi terakhir belum setidaknya pada waktu yang lalu, Anda dapat menggunakan metode ini yang memerlukan file eksternal yang menyimpan tanggal dan waktu eksekusi terakhir.
Tambahkan baris ini ke bagian atas skrip Bash Anda:
#!/bin/bash
# File that stores the last execution date in plain text:
datefile=/path/to/your/datefile
# Minimum delay between two script executions, in seconds.
seconds=$((60*60*24*3))
# Test if datefile exists and compare the difference between the stored date
# and now with the given minimum delay in seconds.
# Exit with error code 1 if the minimum delay is not exceeded yet.
if test -f "$datefile" ; then
if test "$(($(date "+%s")-$(date -f "$datefile" "+%s")))" -lt "$seconds" ; then
echo "This script may not yet be started again."
exit 1
fi
fi
# Store the current date and time in datefile
date -R > "$datefile"
# Insert your normal script here:
Jangan lupa untuk menetapkan nilai yang berarti datefile=
dan sesuaikan nilai seconds=
dengan kebutuhan Anda ( $((60*60*24*3))
dievaluasi hingga 3 hari).
Jika Anda tidak ingin file terpisah, Anda juga bisa menyimpan waktu eksekusi terakhir di cap waktu modifikasi skrip Anda. Namun itu berarti bahwa membuat perubahan apa pun pada file skrip Anda akan mengatur ulang penghitung 3 dan diperlakukan seperti jika skrip berhasil dijalankan.
Untuk menerapkannya, tambahkan snippet di bawah ini ke bagian atas file skrip Anda:
#!/bin/bash
# Minimum delay between two script executions, in seconds.
seconds=$((60*60*24*3))
# Compare the difference between this script's modification time stamp
# and the current date with the given minimum delay in seconds.
# Exit with error code 1 if the minimum delay is not exceeded yet.
if test "$(($(date "+%s")-$(date -r "$0" "+%s")))" -lt "$seconds" ; then
echo "This script may not yet be started again."
exit 1
fi
# Store the current date as modification time stamp of this script file
touch -m -- "$0"
# Insert your normal script here:
Sekali lagi, jangan lupa untuk menyesuaikan nilai seconds=
dengan kebutuhan Anda ( $((60*60*24*3))
dievaluasi hingga 3 hari).
*/3
tidak bekerja "jika 3 hari belum berlalu": tiga hari sejak apa? Harap edit pertanyaan Anda dan klarifikasi.