Để hủy bỏ ngay lập tức và thoát khỏi tập lệnh nếu lần thực hiện cuối cùng chưa có ít nhất một thời gian cụ thể trước đây, bạn có thể sử dụng phương pháp này yêu cầu một tệp bên ngoài lưu trữ ngày và giờ thực hiện cuối cùng.
Thêm các dòng này vào đầu tập lệnh Bash của bạn:
#!/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:
Đừng quên đặt một giá trị có ý nghĩa datefile=
và điều chỉnh giá trị seconds=
theo nhu cầu của bạn ( $((60*60*24*3))
ước tính thành 3 ngày).
Nếu bạn không muốn một tệp riêng biệt, bạn cũng có thể lưu trữ thời gian thực hiện cuối cùng trong dấu thời gian sửa đổi của tập lệnh của mình. Tuy nhiên, điều đó có nghĩa là thực hiện bất kỳ thay đổi nào đối với tệp tập lệnh của bạn sẽ đặt lại bộ đếm 3 và được xử lý như nếu tập lệnh đang chạy thành công.
Để thực hiện điều đó, hãy thêm đoạn mã bên dưới vào đầu tệp tập lệnh của bạn:
#!/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:
Một lần nữa, đừng quên điều chỉnh giá trị của seconds=
nhu cầu của bạn ( $((60*60*24*3))
ước tính đến 3 ngày).
*/3
không hoạt động? "nếu 3 ngày không trôi qua": ba ngày kể từ ngày gì? Vui lòng chỉnh sửa câu hỏi của bạn và làm rõ.