ubuntu crontab 踩坑實錄

Linux crontab是用來定期執行程序的命令。
通過crontab -e 可以編輯需要定時執行的命令。

這裏記錄一下在ubuntu上實際使用crontab的幾個坑。

log顯示問題

cron 日誌中記錄了crontab中命令執行信息。
Ubuntu系統默認是不打開cron日誌的。需要進行幾步操作。

先打開以下文件

vi /etc/rsyslog.d/50-default.conf

在文件中找到cron.*一行,把前面的#去掉,保存退出。
執行以下命令,重啓系統日誌:

sudo service rsyslog restart

稍微等下就能在/var/log目錄下看到cron.log 文件了。

相對路徑問題

如果程序直接運行沒問題,但在crontab中執行效果不符合預期(要先通過查看log確定目標程序被執行了),很可能是由於路徑問題,crontab中命令的默認執行路徑是當前用戶的根路徑,建議在待執行程序中先添加cd命令,或直接使用絕對路徑。

時間設置問題

crontab 的基本設置方式在網上很好找到,
這裏引用菜鳥教程的說明:
在這裏插入圖片描述
網上很多教程給了一個錯誤的例子(包括菜鳥教程),假定待執行命令爲: /dir/test.sh

* */1 * * * /dir/test.sh

很多教程說上面命令代表每小時執行一次,親測之後發現上面的命令時每分鐘執行一次。查閱了這篇博客中也給出了同樣的結果。

猜測原因是由於上面的命令中第一位分鐘是*號,代表所有取值範圍,也就是每一分鐘。
如果想每小時執行一次,可以採用如下寫法:

*/60 * * * * /dir/test.sh

此方法親測可用。
或者採用下面的寫法(未親測):

1 */1 * * * /dir/test.sh

代表每小時的第一分鐘執行。

參考資料:
1.https://blog.csdn.net/k_young1997/article/details/81606667
2.https://blog.csdn.net/liu0808/article/details/80668705
3.https://www.runoob.com/w3cnote/linux-crontab-tasks.html

發佈了52 篇原創文章 · 獲贊 58 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章