あなたは本当に at
を使いたいのです .まさにこの目的のために作られています。
echo /usr/bin/the_command options | at now + 1 day
ただし、at
がない場合 、またはホスティング会社がアクセスを提供していない場合は、自己削除型の cron エントリを作成できます。
残念ながら、これによりすべての cron エントリが削除されます。ただし、1 つしかない場合は、これで問題ありません。
0 0 2 12 * crontab -r ; /home/adm/bin/the_command options
コマンド crontab -r
crontab エントリを削除します。幸いなことに、残りのコマンド ラインは引き続き実行されます。
警告:これは危険です!すべての cron エントリを削除します。たくさんある場合、「crontab -r」行のあるものだけでなく、すべて削除されます!
あなたは本当に at
を使いたいのです .まさにこの目的のために作られています。
echo /usr/bin/the_command options | at now + 1 day
ただし、at
がない場合 、またはホスティング会社がアクセスを提供していない場合は、cron ジョブに 1 回だけ実行されるようにするコードを含めることができます。
非常に具体的な時間で cron エントリを設定します:
0 0 2 12 * /home/adm/bin/the_command options
次の /home/adm/bin/the_command は、一度しか実行されないようにする必要があります。
#! /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]
これを試して、2011 年 3 月 30 日の真夜中にコマンドを実行してください:
0 0 30 3 ? 2011 /command
警告 :コメントにあるように、年 列は、cron の標準/デフォルトの実装ではサポートされていません。 cron の標準実装で将来の特定の時間にスクリプトを実行する適切な方法については、以下の TomOnTime の回答を参照してください。