linux 定時清理文件腳本 shell


語句寫法:
 
find 對應目錄 -mtime +天數 -name “文件名” -exec rm -rf {} \;
 
 
例1:
 
find /usr/local/backups -mtime +10 -name “*.*” -exec rm -rf {} \;
將/usr/local/backups目錄下所有10天前帶”.”的文件刪除
find:linux的查找命令,用戶查找指定條件的文件
/usr/local/backups:想要進行清理的任意目錄
 
-mtime:標准語句寫法
+10:查找10天前的文件,這里用數字代表天數,+30表示查找30天前的文件
“*.*”:希望查找的數據類型,”*.jpg”表示查找擴展名為jpg的所有文件,”*”表示查找所有文件,這個可以靈活運用,舉一反三
 
-exec:固定寫法
rm -rf:強制刪除文件,包括目錄
{} \; :固定寫法,一對大括號+空格+\+;
 
 
 
例2:
 
1.#touch /usr/local/bin/clear
#chmod 777 clear
新建一個可執行文件clear
 
2.vi clear
編輯clear文件如下:
#!/bin/sh
find /usr/local/backups -mtime +10 -name “*.*” -exec rm -rf {} \;
ok,保存退出
 
3.#crontab -e
將clear文件加入到系統計划任務,到點自動執行
輸入:
* 2 * * */usr/local/bin/clear
這里的設置是每天凌晨2點執行clear文件進行數據清理,可以研究一下cron,制定自己需要的計划任務
示例:
#!/bin/sh
find /usr/local/jboss-4.2.3.GA/server/default/log -mtime +6 -name “server.log.*” -exec rm -rf {} \;
exit
[[email protected]/* */ ~]# crontab -l
 
 
 
 
編輯用戶的Crontab文件
 
crontabl -e
 
 
用戶所建立的Crontab文件存於/var/spool/cron中,其文件名與用戶名一致。
它的格式共分為六段,前五段為時間設定段,第六段為所要執行的命令段,
 
格式如下:* * * * *
 
其時間段的含義如下:
 
段                    含義                  取值范圍
第一段          代表分鍾               0—59    
第二段          代表小時               0—23
第三段          代表日期               1—31
第四段          代表月份               1—12
第五段          代表星期幾             0—6(0代表星期日)
 
 
名稱 : crontab
 
使用權限 : 所有使用者
使用方式 :
crontab [ -u user ] file
crontab [ -u user ] { -l | -r | -e }
 
 
說明 :
 
crontab 是用來讓使用者在固定時間或固定間隔執行程序之用,換句話說,也就是類似使用者的時程表。-u user 是指設定指定 user 的時程表,這個前提是你必須要有其權限(比如說是 root)才能夠指定他人的時程表。如果不使用 -u user 的話,就是表示設定自己的時程表。
 
參數 :
 
-e : 執行文字編輯器來設定時程表,內定的文字編輯器是 VI,如果你想用別的文字編輯器,則請先設定 VISUAL 環境變數來指定使用那個文字編輯器(比如說 setenv VISUAL joe)
 
-r : 刪除目前的時程表
 
-l : 列出目前的時程表
 
時程表的格式如下 :
 
f1 f2 f3 f4 f5 program
 
其中 f1 是表示分鍾,f2 表示小時,f3 表示一個月份中的第幾日,f4 表示月份,f5 表示一個星期中的第幾天。program 表示要執行的程序。
 
當 f1 為 * 時表示每分鍾都要執行 program,f2 為 * 時表示每小時都要執行程序,其餘類推
 
當 f1 為 a-b 時表示從第 a 分鍾到第 b 分鍾這段時間內要執行,f2 為 a-b 時表示從第 a 到第 b 小時都要執行,其餘類推
 
當 f1 為 */n 時表示每 n 分鍾個時間間隔執行一次,f2 為 */n 表示每 n 小時個時間間隔執行一次,其餘類推
 
當 f1 為 a, b, c,… 時表示第 a, b, c,… 分鍾要執行,f2 為 a, b, c,… 時表示第 a, b, c…個小時要執行,其餘類推
 
使用者也可以將所有的設定先存放在檔案 file 中,用 crontab file 的方式來設定時程表。
 
 
例子 :
 
每月每天每小時的第 0 分鍾執行一次 /bin/ls :
0 7 * * * /bin/ls
 
在 12 月內, 每天的早上 6 點到 12 點中,每隔 20 分鍾執行一次 /usr/bin/backup :
0 6-12/3 * 12 * /usr/bin/backup
 
周一到周五每天下午 5:00 寄一封信給 [email protected]/* */ :
0 17 * * 1-5 mail -s “hi” [email protected]/* */ /dev/null 2>&1 即可
 
例:如果用戶的Crontab文件的內容是:29 19 * * * echo its dinner time,則系統每天的19:29顯示‘its dinner time’
 
示例(創建一個cron全過程,每分鍾都會在test.txt里輸入當前時間):
 
1. 以普通用戶登錄linux系統(我用的是CentOS4.1)
 
2. $crontab –e
 
說明:系統默認的編輯器是VIM,如果不是請加上以下shell:
$EDITOR=vi
$export EDITOR
 
3. 輸入”*/1 * * * * date >> $HOME/test.txt”,save and exit VIM
 
4. $su root
 
5. $cd /etc/init.d
 
6. ./crond restart
 
 
 
 
下面看看看幾個具體的例子:
● 0 */2 * * * /sbin/service httpd restart 意思是每兩個小時重啟一次apache
 
● 50 7 * * * /sbin/service sshd start 意思是每天7:50開啟ssh服務
 
● 50 22 * * * /sbin/service sshd stop 意思是每天22:50關閉ssh服務
 
● 0 0 1,15 * * fsck /home 每月1號和15號檢查/home 磁盤
 
● 1 * * * * /home/bruce/backup 每小時的第一分執行 /home/bruce/backup這個文件
 
● 00 03 * * 1-5 find /home “*.xxx” -mtime +4 -exec rm {} \; 每周一至周五3點鍾,在目錄/home中,查找文件名為*.xxx的文件,並刪除4天前的文件。
 
● 30 6 */10 * * ls 意思是每月的1、11、21、31日是的6:30執行一次ls命令
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM