Sie möchten unbedingt at
verwenden . Es ist genau dafür gemacht.
echo /usr/bin/the_command options | at now + 1 day
Wenn Sie jedoch at
nicht haben , oder Ihr Hosting-Unternehmen bietet keinen Zugriff darauf, können Sie einen sich selbst löschenden Cron-Eintrag vornehmen.
Leider werden dadurch alle Ihre Cron-Einträge entfernt. Wenn Sie jedoch nur einen haben, ist dies in Ordnung.
0 0 2 12 * crontab -r ; /home/adm/bin/the_command options
Der Befehl crontab -r
entfernt Ihren Crontab-Eintrag. Glücklicherweise wird der Rest der Befehlszeile trotzdem ausgeführt.
WARNUNG:Das ist gefährlich! Es entfernt ALLE Cron-Einträge. Wenn Sie viele haben, werden sie alle entfernt, nicht nur die mit der Zeile "crontab -r"!
Sie möchten unbedingt at
verwenden . Es ist genau dafür gemacht.
echo /usr/bin/the_command options | at now + 1 day
Wenn Sie jedoch at
nicht haben , oder Ihr Hosting-Unternehmen keinen Zugriff darauf gewährt, können Sie einen Cron-Job mit Code einfügen, der sicherstellt, dass er nur einmal ausgeführt wird.
Richten Sie einen Cron-Eintrag mit einer ganz bestimmten Uhrzeit ein:
0 0 2 12 * /home/adm/bin/the_command options
Als nächstes muss /home/adm/bin/the_command sicherstellen, dass es nur einmal ausgeführt wird.
#! /bin/bash
COMMAND=/home/adm/bin/the_command
DONEYET="${COMMAND}.alreadyrun"
export PATH=/usr/bin:$PATH
if [[ -f $DONEYET ]]; then
exit 1
fi
touch "$DONEYET"
# Put the command you want to run exactly once here:
echo 'You will only get this once!' | mail -s 'Greetings!' [email protected]
Probieren Sie dies aus, um am 30. März 2011 um Mitternacht einen Befehl auszuführen:
0 0 30 3 ? 2011 /command
WARNUNG :Wie in den Kommentaren erwähnt, das Jahr Spalte wird in Standard-/Standardimplementierungen von cron nicht unterstützt. Bitte lesen Sie die TomOnTime-Antwort unten, um zu erfahren, wie Sie ein Skript zu einem bestimmten Zeitpunkt in der Zukunft in Standardimplementierungen von cron ausführen können.