与えられた時間に一度タスクを実行したいと思います。
私はcrontab -eを使ってそこに追加できることを知っていますが、シェルスクリプトを介して追加したいと思います。crontab -e
予測不可能な編集する一時ファイルのいくつかをください。
また、ジョブが実行されると複雑にならないように、crontabから再度削除したいと思います。
それでは、スクリプトを介して私の個人的なcrontabにアイテムを追加/削除する標準化された方法はありますか?
私は自分のシステムをロールアウトできることを知っています。フォルダ内の.shファイルを実行して削除する毎分実行されるスクリプトがあり、私の "addtask"スクリプトがそのフォルダに.shファイルを生成するようにします。しかし、私のシステムをロールアウトする前に、すでに何かがあるかどうかを知りたかったです。
重要なのはMac OS Xとzshを使用していますが、他の* nixでも動作するものを使いたいです。
答え1
私の考えでは、そのat
コマンドがあなたが望むと思います。
たとえば、
echo "mail -s Test mstumm < /etc/group" | at 16:30
/etc/group
午後4時30分にコピーが電子メールで送信されます。
at
ここで詳細を読むことができます。http://www.softpanorama.org/Utilities/at.shtml
答え2
新しいクローンタスクを追加します。
newJob="/path/to/new/script.sh"
newJobSchedule="0 0 * * 0 $newJob"
cat <(crontab -l) <(echo "$newJobSchedule") | crontab -
古いクローンジョブを削除します。
oldJob="/path/to/old/script.sh"
cat <(fgrep -i -v "$oldJob" <(crontab -l)) | crontab -
未使用のクローンジョブを交換してください。
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 -
パイプとリダイレクトを使用して一時ファイルを避けます。