① linux 通過 crontab 來定時執行腳本——固定時間/固定頻率
使用 cron 守護進程管理任務調度,crontab 作為配置文件,記錄命令與執行時間。需先檢查當前是否有運行任務,若無則通過以下步驟創建與添加任務:
新任務示例:
*/5 * * * * bash路徑/file_name.sh >> 路徑/tmp_log.txt
執行步驟:
1. 創建 crontab 配置文件,內容為:
*/5 * * * * bash路徑/file_name.sh
表示每5分鍾執行一次 file_name.sh。
2. 添加 cron 任務:
crontab 路徑/cron_test.cron >> 路徑/cron_log.txt
注意:Win 上路徑不可用,否則會導致 LF char x'0d' 錯誤。
3. 驗證添加:
$ crontab -l
4. 配置文件編寫規范:
* * * * *command_statement
星號對應時間元素,合法值為分鍾1-59、小時0-23、日期1-31、月份1-12、周0-6。
第1列表示分鍾,每1分鍾用*或*/1表示。
第2列表示小時。
第3列表示日期。
第4列表示月份。
第5列表示星期。
第6列表示要運行的命令。
5. 命令說明:
crontab -e:修改 crontab 文件,文件不存在時自動創建。
crontab -l:顯示 crontab 文件內容。
crontab -r:刪除 crontab 文件。
crontab -ir:刪除 crontab 文件前提醒用戶。
查看 cron 狀態:sudo service cron status
開啟 cron:sudo /etc/init.d/cron start
關閉 cron:sudo /etc/init.d/cron stop
重啟 cron:sudo /etc/init.d/cron restart
② linux定時任務shell腳本開頭如下 cd ~ . .bash_profile 定時任務執行後提示找不到.bash_profile什麼情況
.bash_profile 文件確實是一個隱藏文件,它通常位於用戶的主目錄下。如果你在執行定時任務時遇到找不到 .bash_profile 的問題,可以先嘗試直接運行 1.sh 腳本,即去掉 ./ 前綴,看看是否能執行成功。如果這樣可以執行,說明問題出在 1.sh 腳本執行過程中改變了當前工作目錄。
檢查 1.sh 腳本中的路徑設置,確保腳本中沒有改變當前目錄的命令,如 cd 命令。如果腳本中有這樣的命令,可以考慮將這些路徑修改為絕對路徑,或者在腳本開頭記錄當前工作目錄並重新切換回該目錄。
此外,可以嘗試在 1.sh 腳本中添加一些調試信息,比如使用 echo 命令輸出當前工作目錄,以便檢查腳本執行時的具體路徑。這樣可以更直觀地了解腳本執行過程中當前路徑的變化情況。
如果你確定腳本中沒有改變路徑的命令,但依然遇到問題,可以考慮檢查定時任務的配置文件,確認定時任務是否正確指向了 1.sh 腳本。通常,定時任務的配置文件會指定腳本的絕對路徑或相對路徑,確保這里沒有誤操作。
最後,確保你的定時任務配置文件中有適當的環境變數設置,以確保腳本能夠正確運行。你可以在定時任務配置文件中添加一些環境變數設置命令,如 export 命令,以確保腳本運行時能夠訪問到必要的環境變數。
總結來說,遇到找不到 .bash_profile 的問題時,首先要確保腳本本身沒有改變路徑,其次檢查定時任務配置文件和環境變數設置是否正確。通過調試信息和環境變數的設置,可以更好地定位問題所在。
③ Linux定時任務之Crontab實現腳本自動化運行linux定時任務crontab
Linux定時任務實現腳本自動化運行可以利用Crontab來實現。Crontab是Linux系統下的定時觸發功能,其核心是使用一個名為crontab的服務來實現定時執行任務。
Crontab和很多其他Linux服務一樣,有一個專門的配置文件/etc/crontab,它用來定義定時任務的觸發時間及腳本執行地址等參數。 以下是腳本的格式:
{minute} {hour} {day of month} {month} {day of week} {command}
其中,minute表示分鍾,hour表示小時,day of month表示日,month表示月,day of week表示星期天到星期六(從0到7),command表示將要運行的命令。
例如,要將定時任務設置為每天早上6點運行腳本/home/script.sh,可以將crontab的設置寫為:
0 6 * * * /home/script.sh
記住,每一行表示一條定時任務,一行命令後面可以放置多個參數,以空格分隔,比如:
0 6 * * * /home/script.sh param1 param2
如果需要在指定時間運行多條指令,可以在其中一條指令中把其他指令嵌入,比如:
0 6 * * * /bin/bash /home/script1.sh;/home/script2.sh
記住,Crontab無法執行動態通配符,請確保定時任務的指令僅按照以上格式書寫。
最後,使用以下命令啟用定時任務:
$ crontab /etc/crontab
這樣就可以使用crontab實現腳本的自動化定時運行了,非常方便。