Realmente quieres usar at
. Está hecho exactamente para este propósito.
echo /usr/bin/the_command options | at now + 1 day
Sin embargo, si no tiene at
, o su empresa de alojamiento no proporciona acceso a él, puede hacer una entrada de cron de eliminación automática.
Lamentablemente, esto eliminará todas sus entradas cron. Sin embargo, si solo tienes uno, está bien.
0 0 2 12 * crontab -r ; /home/adm/bin/the_command options
El comando crontab -r
elimina su entrada crontab. Afortunadamente, el resto de la línea de comandos aún se ejecutará.
ADVERTENCIA:¡Esto es peligroso! Elimina TODAS las entradas cron. Si tiene muchos, esto los eliminará a todos, ¡no solo al que tiene la línea "crontab -r"!
Realmente quieres usar at
. Está hecho exactamente para este propósito.
echo /usr/bin/the_command options | at now + 1 day
Sin embargo, si no tiene at
, o su empresa de alojamiento no proporciona acceso a él, puede hacer que un trabajo cron incluya un código que asegure que solo se ejecute una vez.
Configure una entrada cron con un tiempo muy específico:
0 0 2 12 * /home/adm/bin/the_command options
A continuación, /home/adm/bin/the_command debe asegurarse de que solo se ejecute una vez.
#! /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]
Pruebe esto para ejecutar un comando el 30 de marzo de 2011 a la medianoche:
0 0 30 3 ? 2011 /command
ADVERTENCIA :Como se indica en los comentarios, el año columna no es compatible con las implementaciones estándar/predeterminadas de cron. Consulte la respuesta de TomOnTime a continuación para conocer la forma adecuada de ejecutar un script en un momento específico en el futuro en implementaciones estándar de cron.