-
首先編寫一個.sh可執行文件
創建:vi test.sh
具體裏邊寫什麼內容就看各自的需求了 -
默認創建的這個.sh文件是沒有權限的
chmod +x test.sh
授權之後再執行如果提示nohup: failed to run command ‘./startup.sh’: No such file or directory
錯誤原因是startup.sh文件是我在Windows系統下創建並編輯的,其文件格式爲Dos格式,而Linux下不能執行Dos格式的腳本。
要解決這個問題,只需要使用vi打開這個腳本文件,在命令模式下執行如下指令:
:set ff=unix
後保存退出即可。
修改後可以執行:set ff命令確認下,若顯示 fileformat=unix,就說明修改成功了
-
設置crontab定時任務
打開定時任務配置文件:crontab -e
定時調用test.sh:
* * * * * /usr/local/test.sh
-
保存退出
備註:
定時任務需要crond服務的支持
1.啓動方法 service crond restart
2.該服務默認是開機啓動的
取消定時任務
1.全部取消 crontab -r
2.取消某個 crontab -e 配置文件,刪除要取消的哪一行配置
查看目前都有那些定時任務
crontab -l
第一個* 一小時當中的第幾分鐘 0-59
第二個* 一天當中的第幾小時 0-23
第三個* 一個月當中的第幾天 1-31
第四個* 一年當中的第幾月 1-12
第五個* 一週當中的星期幾 0-7(0和7都代表週日)
* 代表任何時間,比如第一個 * 就代表一小時中的每分鐘都執行
, 代表不連續的時間,比如 0 8,12,16 * * * 代表每天8,12,16點0分執行
- 代表連續的時間範圍,比如0 5 * * 1-6 代表在週一到週六凌晨5點0分執行
*/n 代表每個多久執行一次,比如*/10 * * * *代表每隔10分鐘執行一次
舉個例子比我我寫的:
30 2 * * 0
就代表每週日的凌晨兩點半會執行這個腳本
特殊例子:
0 0 1,15 * 1
每月1號和15號,每週1的0點0分都會執行
注意:星期幾和幾號最好不要同時出現,他們的意義都是天,容易混淆
本次也有需要根據時間刪除這個目錄下的文件的需求順便記錄一下,/usr/local/sdb,清理掉20天之前的無效數據。
可以使用下面一條命令去完成:
find /usr/local/sdb -mtime +20 -name “.” -exec rm -Rf {} ;
這個是根據時間刪除。
下面簡要解釋一下,這句shell命令:
find /usr/local/sdb -mtime +20 -name “.” -exec rm -Rf {} ;
/usr/local/sdb :準備要進行清理的任意目錄
-mtime:標準語句寫法
+10:查找10天前的文件,這裏用數字代表天數,+30表示查找30天前的文件
"*.*":希望查找的數據類型,"*.jpg"表示查找擴展名爲jpg的所有文件,"*"表示查找所有文件
-exec:固定寫法
rm -rf:強制刪除文件,包括目錄
{} \; :固定寫法,一對大括號+空格+/+;
當然也可以根據文件名、根據大小,根據其他不同條件過濾刪除,或者修改等,可以考慮sort等命令結合使用。
find 對應目錄 -mtime +天數 -name “文件名” -exec rm -rf {} ;
例1:
find /usr/local/sdb -mtime +10 -name “.” -exec rm -rf {} ;
將/usr/local/sdb目錄下所有10天前帶”.”的文件刪除
find:Linux的查找命令,用戶查找指定條件的文件
/usr/local/sdb:想要進行清理的任意目錄
-mtime:標準語句寫法
+10:查找10天前的文件,這裏用數字代表天數,+30表示查找30天前的文件
“.”:希望查找的數據類型,”.jpg”表示查找擴展名爲jpg的所有文件,””表示查找所有文件,這個可以靈活運用,舉一反三
-exec:固定寫法
rm -rf:強制刪除文件,包括目錄
{} ; :固定寫法,一對大括號+空格++;