Vuoi davvero usare at
. È fatto esattamente per questo scopo.
echo /usr/bin/the_command options | at now + 1 day
Tuttavia, se non hai at
, o la tua società di hosting non fornisce l'accesso ad esso, potresti creare una voce cron che si autoelimina.
Purtroppo, questo rimuoverà tutte le tue voci cron. Tuttavia, se ne hai solo uno, va bene.
0 0 2 12 * crontab -r ; /home/adm/bin/the_command options
Il comando crontab -r
rimuove la tua voce crontab. Fortunatamente il resto della riga di comando verrà comunque eseguito.
ATTENZIONE:Questo è pericoloso! Rimuove TUTTE le voci cron. Se ne hai molti, questo li rimuoverà tutti, non solo quello che ha la riga "crontab -r"!
Vuoi davvero usare at
. È fatto esattamente per questo scopo.
echo /usr/bin/the_command options | at now + 1 day
Tuttavia, se non hai at
, o la tua società di hosting non fornisce l'accesso ad esso, puoi fare in modo che un cron job includa il codice che assicuri che venga eseguito solo una volta.
Imposta una voce cron con un tempo molto specifico:
0 0 2 12 * /home/adm/bin/the_command options
Successivamente /home/adm/bin/the_command deve assicurarsi che venga eseguito solo una volta.
#! /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]
Prova questo per eseguire un comando il 30 marzo 2011 a mezzanotte:
0 0 30 3 ? 2011 /command
ATTENZIONE :come indicato nei commenti, l'anno la colonna non è supportata nelle implementazioni standard/predefinite di cron. Fai riferimento alla risposta TomOnTime di seguito, per un modo corretto di eseguire uno script in un momento specifico in futuro nelle implementazioni standard di cron.