Opravdu chcete použít at
. Je přesně pro tento účel vyroben.
echo /usr/bin/the_command options | at now + 1 day
Pokud však nemáte at
, nebo k němu vaše hostitelská společnost neposkytuje přístup, můžete provést samosmazání záznamu v cron.
Bohužel to odstraní všechny vaše cron záznamy. Pokud však máte pouze jeden, je to v pořádku.
0 0 2 12 * crontab -r ; /home/adm/bin/the_command options
Příkaz crontab -r
odstraní vaši položku crontab. Zbytek příkazového řádku se naštěstí stále spustí.
VAROVÁNÍ:Toto je nebezpečné! Odstraní VŠECHNY položky cronu. Pokud jich máte mnoho, odstraní je všechny, nejen tu, která má řádek "crontab -r"!
Opravdu chcete použít at
. Je přesně pro tento účel vyroben.
echo /usr/bin/the_command options | at now + 1 day
Pokud však nemáte at
, nebo k němu vaše hostitelská společnost neposkytuje přístup, můžete nechat úlohu cron zahrnout kód, který zajistí, že se spustí pouze jednou.
Nastavte záznam cronu s velmi specifickým časem:
0 0 2 12 * /home/adm/bin/the_command options
Další /home/adm/bin/the_command se musí ujistit, že se spustí pouze jednou.
#! /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]
Vyzkoušejte toto pro provedení příkazu 30. března 2011 o půlnoci:
0 0 30 3 ? 2011 /command
UPOZORNĚNÍ :Jak je uvedeno v komentářích, rok sloupec není podporován ve standardních/výchozích implementacích cronu. Správný způsob, jak v budoucnu spustit skript v konkrétní čas ve standardních implementacích cronu, naleznete v odpovědi TomOnTime níže.