首頁  >  文章  >  後端開發  >  linux 定時清理檔案腳本 shell

linux 定時清理檔案腳本 shell

伊谢尔伦
伊谢尔伦原創
2016-11-29 10:41:181134瀏覽

工作中常用到的,都是從網上蒐集的,記錄一下方便查找

語句寫法:

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

#

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

[root@web3 ~]# crontab -l

編輯使用者的Crontab檔案

crontabl -e

使用者所建立的Crontab檔案

crontabl -e


使用者所建立的Crontabs中,其檔案名稱與使用者名稱一致。
它的格式共分為六段,前五段為時間設定段,第六段為所要執行的命令段,
格式如下:* * * * *

其時間段的含義如表二:

意義

取值範圍

第一段

代表分鐘

0—59

第二段

代表小時

23次31

第四段

代表月份

1—12

第五段

代表星期幾,0代表星期日

0—6

名稱:25

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 寄一封信給 alex@domain.name :
0 17 * * 1-5 mail -s “hi” alex@domain.name  /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:
$
$export EDITOR

3.     輸入」*/1 * * * * date >> $HOME/test.txt”,save and exit VIM

4.     $su root🠎in5. d

6.     ./crond restart

下面看幾個特定的例子:

● 0 */2 * * * /sbin/service httpd restart  意思是每兩個小時重啟一次

7 * * * /sbin/service sshd start  意思是每天7:50開啟ssh服務

● 50 22 * * * /sbin/service ssss stop  意思是每天22:50關閉ssh服務

hd stop  意思是每天22:50關閉ssh服務

hd 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指令


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn