Shell-Script

通過 shell 腳本添加一次性計劃任務?

  • October 8, 2012

我想在給定的時間執行一次任務。

我知道我可以使用 crontab -e 將它添加到那裡,但我想通過 shellscript 來做到這一點。crontab -e給了我一些不可預測的臨時文件來編輯。

此外,一旦任務執行,我想再次將其從 crontab 中刪除,以確保它不會留下混亂。

那麼有沒有一種標準化的方法可以通過腳本從我的個人 crontab 中添加/刪除條目?

我知道我可以推出自己的系統:有一個每分鐘執行一次的腳本,從文件夾中執行和刪除 .sh 文件,並讓我的“addtask”腳本在該文件夾中創建 .sh 文件,但在推出自己的系統之前,我想知道是否有已經是東西了。

如果重要的話,我使用 Mac OS X 和 zsh,但我想使用在其他 *nixes 上也可以使用的東西。

我認為at命令就是你所追求的。

例如:

echo "mail -s Test mstumm < /etc/group" | at 16:30

/etc/group這將在下午 4:30通過電子郵件向您發送一份副本。

您可以在此處閱讀更多資訊:http at: //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 -

通過使用管道和重定向來避免臨時文件。

引用自:https://unix.stackexchange.com/questions/5582