ある時間に一度だけタスクを実行したいのですが。
Crontab -eを使用してそこに追加できることはわかっていますが、シェルスクリプトを使用して追加したいと思います。 crontab -e
は、予測できない編集用の一時ファイルを提供してくれます。
また、タスクが実行されたら、それをcrontabから再度削除して、混乱を残さないようにします。
では、スクリプトを使用して個人のcrontabからエントリを追加/削除する標準化された方法はありますか?
自分のシステムをロールできることはわかっています。フォルダーから.shファイルを実行および削除するスクリプトを毎分実行し、「addtask」スクリプトでそのフォルダーに.shファイルを作成しますが、自分のシステムをロールする前に、そこにあるかどうか疑問に思います。すでに何かです。
重要な場合は、Mac OS Xとzshを使用しますが、他の* nixでも機能するものを使用したいと思いました。
at
コマンドがあなたが求めているものだと思います。
例えば。:
echo "mail -s Test mstumm < /etc/group" | at 16:30
これにより、午後4時30分に/etc/group
のコピーが電子メールで送信されます。
at
の詳細については、こちらをご覧ください: http://www.softpanorama.org/Utilities/at.shtml
新しいcronジョブの追加:
newJob="/path/to/new/script.sh"
newJobSchedule="0 0 * * 0 $newJob"
cat <(crontab -l) <(echo "$newJobSchedule") | crontab -
古いcronジョブの削除:
oldJob="/path/to/old/script.sh"
cat <(fgrep -i -v "$oldJob" <(crontab -l)) | crontab -
古いcronジョブの置き換え:
oldJob="/path/to/old/script.sh"
newJob="/path/to/new/script.sh"
newJobSchedule="0 0 * * 0 $newJob"
cat <(fgrep -i -v "$oldJob" <(crontab -l)) <(echo "$newJobSchedule") | crontab -
一時ファイルは、パイプとリダイレクトを使用することで回避されます。