シェルスクリプトを使用してワンタイムスケジュールタスクを追加しますか?

シェルスクリプトを使用してワンタイムスケジュールタスクを追加しますか?

与えられた時間に一度タスクを実行したいと思います。

私は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 -

パイプとリダイレクトを使用して一時ファイルを避けます。

関連情報