腳本要求:兩類機器一共300多臺,寫個腳本自動清理這兩類機器裏面的日誌文件。

要求:兩類機器一共300多臺,寫個腳本自動清理這兩類機器裏面的日誌文件。在堡壘機批量發佈,也要批量發佈到crontab裏面。node

A類機器日誌存放路徑很統一,B類機器日誌存放路徑須要用*匹配(由於這個目錄裏除了日誌外,還有其餘文件,不能刪除。匹配的時候可用*.log)shell

A類:/opt/cloud/log/   刪除7天前的
B類: /opt/cloud/instances/  刪除15天前的bash

要求寫在一個腳本里面。不用考慮堡壘機上的操做,只須要寫出shell腳本。ide



#!/bin/bash
dir1=/opt/cloud/instances/
dir2=/opt/cloud/log/
if [ -d $dir1 ]
then
find $dir1 -type f -name "*.log" -mtime +15 |xargs rm -f
elif [-d $dir2 ]
then 
find $dir2 -type f -mtime +7 |xargs rm -f
fi

解析:spa

-d filename 若是 filename爲目錄,則爲真 [ -d /opt/cloud/log/ ]日誌


find  【路徑】-name filename :表示直接查找該文件名的文件。crontab


find 【路徑】 -type filetype:表示經過文件類型查找文件。
文件類型包括:
          f:普通文件
          b:塊設備文件
          c:字符設備文件
          d:目錄
          l:連接文檔
          s:套接字文件文檔


find 【路徑】【參數】it

-atime  +n/-n   :表示訪問或執行的時間大於或小於n天的文件。
-ctime  +n/-n   :表示寫入,更改inode屬性(如更改全部者、權限或者連接)的時間大於或小於n天的文件。
-mtime  +n/-n   :表示寫入時間大於或小於n天的文件,該參數用的最多。
-mmin   +n/-n   :表示mtime在n分鐘內的文件。
-o   :或者的意思 orclass


xargs 是一個強有力的命令,它可以捕獲一個命令的輸出,而後傳遞給另一個命令

當你嘗試用rm 刪除太多的文件,你可能獲得一個錯誤信息:/bin/rm Argument list too long. 用xargs 去避免這個問題

find ~ -name ‘*.log’ -print0 | xargs  rm -f

相關文章
相關標籤/搜索