2013-06-27 81 views
1

我有這個腳本刪除7天或更早的文件,然後將它們記錄到一個文件夾。它會正確記錄和刪除所有內容,但是當我打開日誌文件進行查看時,它非常sl。。有組織的登錄BASH

log=$HOME/Deleted/$(date) 
find $HOME/OldLogFiles/ -type f -mtime +7 -delete -print > "$log" 

日誌文件是難以閱讀

實施例文件輸出:(在記事本中打開時)

/home/u0146121/OldLogFiles/file1.txt/home/u0146121/OldLogFiles /file2.txt/home/u0146121/OldLogFiles/file3.txt

反正是有日誌文件更好更明確?也許與文件名,日期刪除,以及它是多大年紀?

+0

如果您在記事本比其他的東西打開它,會發生什麼?例如。如果你只是做'head $ log',它是否顯示正確? –

回答

0

使用logger進行記錄,並將實際日誌處理保留爲sysloglogrotate

+0

所以它更容易嗎?你將如何開始? – mkrouse

+0

手冊頁將是一個好的開始。請參閱[這裏](http://www.linuxjournal.com/article/5476)瞭解syslog及其設施的一般介紹,以及[here](http://www.thegeekstuff.com/2010/07/logrotate-例子/)對於一些logrotate示例。 –

0

嘗試
數= $ HOME /刪除/ $(日期);
#更改爲呼應-e並插入新行,如果需要
查找$ HOME/OldLogFiles /型的F -mtime +7 -exec回聲{} \; >「$ log」

0

在您刪除腳本中,您可以在頂部添加2個變量,我們稱之爲「timeDate」和「logDestination」。他們是這樣的:

timeDate=$(date "+%d/%m/%Y %T")       
logDestination=/home/$USER/.deleteLog; touch $logDestination 

現在$(日期 「+%d /%M /%Y%T」)的部分只是獲取當前的日期和時間。它取消系統日期爲;日期(+%d)然後是月份和年份(%m)(%Y)b.t.w大寫Y返回YYYY的全年。然後將該日期和時間存儲在變量中供以後使用。

logDestination變量爲我們保存一個目錄或文件路徑,指向一個名爲.deleteLog的文件。現在觸摸部分並不是完全必要的,但如果它不存在或已被刪除或意外重命名,它將使文件存在。

在bash腳本和編程語言的主機一個使方法或功能,這是隻是簡單的代碼段,通常只做一項工作。該功能在下面被設計爲將消息寫入一個日誌文件:

## Logging function 
function _logger() { 
     echo -e "$timeDate $user - [email protected]\r" >> $log 
} 

甲簡單的功能的解釋是它能夠接收的信息的形式。如果你看一下上面的函數,注意「$ @」符號,如果你願意的話,這是一個佔位符,它會把你指向函數的任何和所有字符串(文本)。這裏是一個可以接收多個字符串或輸入功能的更多削減版本:

function _example() { 
    echo -e "[email protected]" 
} 

調用這個函數,並給它一個消息,我們可以從字面上(在腳本下的函數的任何位置)類型:

example "hello" 

該函數給出了這個字符串「hello」,函數中的回波線將「hello」輸出到您的終端或屏幕。回波線中的-e有助於回聲區分活動部分,最好使用「人回聲」讓您瞭解其行爲修改。

回到你的腳本。

比方說你有一個刪除一個目錄(我勸小心和謹慎,並阻止此類行,但MEH)的內容一致。

之後做了刪除,你可以打電話;

_logger "deletion of file (or $FILE) successful." 

和_logger功能將很好地把日期時間,消息並開始新的線,你(\ r)。函數中的$用戶被當前視圖放置。因爲它會說你的用戶名。

函數可以調用無數次,節省您的代碼重複,使腳本看起來更整潔。

+0

我不建議使用系統日期命名拉你的日誌文件。 UTC日期的可怕混亂將會改變_would_ create。 *不寒而慄 – deviantlamb

+0

這看起來很酷,但我不完全理解它..我是殼牌編程的初學者。本質上,我的腳本是一個簡單的清理工具,用於記錄已刪除的文件。 – mkrouse

+0

我修改了我的答案以便更具描述性。最簡單的解決方法是添加\ r以使日誌文件將每個日誌輸入放在新行中。 – deviantlamb