Um ein Skript sofort abzubrechen und zu beenden, wenn die letzte Ausführung noch nicht mindestens eine bestimmte Zeit zurückliegt, können Sie diese Methode verwenden, für die eine externe Datei erforderlich ist, in der das Datum und die Uhrzeit der letzten Ausführung gespeichert sind.
Fügen Sie diese Zeilen oben in Ihr Bash-Skript ein:
#!/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:
Vergessen Sie nicht, einen aussagekräftigen Wert als datefile=
festzulegen und den Wert seconds=
an Ihre Bedürfnisse anzupassen ( $((60*60*24*3))
ausgewertet auf 3 Tage).
Wenn Sie keine separate Datei möchten, können Sie die letzte Ausführungszeit auch im Änderungszeitstempel Ihres Skripts speichern. Das bedeutet jedoch, dass Änderungen an Ihrer Skriptdatei den 3-Zähler zurücksetzen und so behandelt werden, als ob das Skript erfolgreich ausgeführt wurde.
Um dies zu implementieren, fügen Sie das folgende Snippet oben in Ihre Skriptdatei ein:
#!/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:
Vergessen Sie auch hier nicht, den Wert von seconds=
an Ihre Bedürfnisse anzupassen (ergibt $((60*60*24*3))
3 Tage).
*/3
nicht "wenn 3 Tage nicht vergangen sind": drei Tage seit was? Bitte bearbeiten Sie Ihre Frage und klären Sie.