linux crontab定時任務的使用 避免踩坑
一、crontab中呼叫shell指令碼
1.確保yourscriptsname.sh的許可權是755。
如果不確定,可以在sh指令碼所在資料夾下用ll命令檢視,若顯示如下圖-rw-r--r--表示沒有執行許可權,用sudo chmod 755 yourscriptsname.sh(自己的.sh指令碼檔案的名字)修改未755許可權,再次ll檢視yourscriptsname.sh變為綠色,許可權為-rwxr-xr-x。
原因:沒有755許可權,其他資料夾下使用sh yourscriptsname.sh會提示permisson deny,那麼在crontab下就不能正確執行
2.要確保yourscriptsname.sh中涉及的命令以及檔案都要寫上完整的絕對路徑。減少出現失敗的可能。
3.最好在yourscriptsname.sh的頭部加上你的bash的路徑
which bash可以檢視,以我的為例子:可以寫為#!/bin/bash (每個人的不一樣,以自己的路徑為準)
二、crontab -e的使用
1.必須使用sudo crontab -e這樣才能最大許可權的呼叫指令碼。直接crontab -e你有的情況下會驚奇的發現寫好的命令並沒有執行。
2.crontab中呼叫的shell指令碼或者python指令碼都要加上絕對路徑
三、在crontab中使用python指令碼
1.檢視python指令碼的編碼格式
利用如下命令檢視檔案格式
:set ff 或 :set fileformat
可以看到如下資訊
fileformat=dos 或 fileformat=unix
利用如下命令修改檔案格式
:set ff=unix 或 :set fileformat=unix
:wq (存檔退出)
參考這位作者的:https://blog.csdn.net/silscorige/article/details/6722244,感謝!
step1:sudo vim test1.py
step2:輸入:號,然後輸入set ff回車,即可看到編碼格式,若linux中顯示為dos要使用set ff=unix更改,然後wq!
四、總之涉及到shell指令碼或者crontab的命令,最好都加上整的絕對路徑,以免出現不必要的麻煩。尤其是新手一個忽視,可能要花很久找bug。比如我這個菜鳥踩坑專家哈哈哈哈!
由於時間和水平有限,有紕漏之處敬請指正,屬於非科班,專業術語不太會,可能顯得很業餘。