## 自動刪除n天前日志
[TOC]
>[info] linux是一個很能自動產生文件的系統,日志、郵件、備份等。雖然現在硬盤廉價,我們可以有很多硬盤空間供這些文件浪費,讓系統定時清理一些不需要的文件很有一種爽快的事情。
### 刪除文件命令
`find 對應目錄 -mtime +天數 -name "文件名" -exec rm -rf {} \;`
### 實例命令
`find /opt/soft/log/ -mtime +30 -name "*.log" -exec rm -rf {} \;`
### 說明
~~~
將/opt/soft/log/目錄下所有30天前帶".log"的文件刪除。具體參數說明如下:
find:linux的查找命令,用戶查找指定條件的文件;
/opt/soft/log/:想要進行清理的任意目錄;
-mtime:標準語句寫法;
+30:查找30天前的文件,這里用數字代表天數;
"*.log":希望查找的數據類型,"*.jpg"表示查找擴展名為jpg的所有文件,"*"表示查找所有文件,這個可以靈活運用,舉一反三;
-exec:固定寫法;
rm -rf:強制刪除文件,包括目錄;
{} \; :固定寫法,一對大括號+空格+\+;
~~~
### 計劃任務
若嫌每次手動執行語句太麻煩,可以將這小語句寫到一個可執行shell腳本文件中,再設置cron調度執行,那就可以讓系統自動去清理相關文件。
## 操作步驟
### 創建shell
`touch /opt/soft/bin/auto-del-30-days-ago-log.sh`
`chmod +x auto-del-30-days-ago-log.sh`
新建一個可執行文件`auto-del-30-days-ago-log.sh`,并分配可運行權限
### 編輯shell腳本
`vi auto-del-30-days-ago-log.sh`
編輯`auto-del-30-days-ago-log.sh`文件如下:
~~~
#!/bin/sh
find /opt/soft/log/ -mtime +30 -name "*.log" -exec rm -rf {} \;
~~~
### 計劃任務
`crontab -e`
將`auto-del-30-days-ago-log.sh`執行腳本加入到系統計劃任務,到點自動執行
輸入:
`10 0 * * * /opt/soft/log/auto-del-7-days-ago-log.sh >/dev/null 2>&1`
這里的設置是每天凌晨0點10分執行auto-del-7-days-ago-log.sh文件進行數據清理任務了。
完成以上三步,
- Linux的安裝
- Linux的軟件安裝管理
- Linux零碎的命令
- 了解ssh
- 系統調優及安全設置
- Linux系統中的硬鏈接和軟連接
- Linux文件和目錄的屬性及權限
- 命令總結
- 文件目錄管理命令
- cat
- cd
- cp
- ls
- mkdir
- mv
- rm
- touch
- vi
- 硬件檢測內核shell命令
- echo
- alias
- dd
- diff
- date
- grep(重要)
- head
- rpm
- sed(重要)
- tree
- unalias
- yum
- seq
- su
- less
- more
- tail
- awk(重要)
- pwd
- history
- whoami
- find(重要)
- which
- vimdiff
- sudo
- wget
- ln
- chmod
- chown
- vim常用技巧
- scp
- 工作場景應用總結
- 自動刪除n天前日志
- 刪除一個目錄下的所有文件但保留一個文件
- Linux軟件安裝
- php安裝(apache版本)
- vsftpd安裝
- git安裝
- python安裝
- LNMP安裝
- LAMP安裝I
- LAMP安裝II
- svn安裝
- svn在Linux下的命令操作
- svn鉤子簡介
- svn代碼上傳流程
- Crond介紹
- sersync應用指南
- 其他
- 小結一
- 系統調優重新整理tmp
- linux禁止root用戶直接登錄sshd并修改默認端口