『壹』 Linux下用shell獲取指定文件的最後修改時間並與系統時間比對,如果相差時間超過3分鍾則執行另一個腳本
使用date命令加上合適的時間格式化字元串(+%s),會顯示當前時間(或-d參數指定的時間)與1970-01-01 00:00:00相差的秒數(詳細可以參考date的man手冊)
所以基本想法就是使用date命令分別獲取當前時間與文件修改時間的秒數,然後看這2個秒數之間是否有相差180秒以上。
獲取當前時間比較簡單,直接date +%s就ok了
下面看看如何獲取文件時間
使用stat 命令後面跟一個文件名可以獲取文件的狀態,包括文件修改時間。其中文件修改時間會單獨一行顯示,格式如下:Modify: 2013-02-21 17:58:05.404876407 +0800 (具體的精度可能系統不同略微有些差別,但大致格式是這樣)
所以我們可以stat myfilename | grep Modify來獲取文件的修改時間的信息,然後通過awk分別獲取時間的日期和時間段
stat myfilename | grep Modify | awk '{print $2}' #這句獲取了日期段,即上面例子裡面的2013-02-21
stat myfilename | grep Modify | awk '{split($3,var,".");print var[1]}' #這句獲取了時間段,即上面例子裡面的17:58:05,具體關於awk的使用可以參考awk的使用手冊
那麼現在可以獲取文件修改時間與1970-01-01 00:00:00相差的描述了,就是date -d "$file_date $file_time" +%s
那麼這個時間與當前時間想減的結果與180相比就可以知道是否滿足條件了,滿足條件的話就可以執行相應的命令。
參考代碼如下:
current_datetime=`date +%s`
filedate=`stat tt.txt | grep Modify | awk '{print $2}'`
filetime=`stat tt.txt | grep Modify | awk '{split($3,var,".");print var[1]}'`
file_datetime=`date -d "$filedate $filetime" +%s
timedelta=`expr $current_datetime - $file_datetime`
if [ "$timedelta" -gt "180" ];then
echo "match condition"
fi
『貳』 shell腳本修改配置文件中內容,實現自動每次加1。求指導,不勝感謝!
#!/bin/bash
NUM=$(grep-oP'(?<=hello-)(d+)'$1)
sed-i"s/$NUM/$((NUM+1))/"$1
『叄』 與shell有關的配置文件有哪些
在Ubuntu中有如下幾個文件可以設置環境 變數
1、/etc/profile:在登錄時,操作系統定製用戶環境時使用的第一個文件,此文件為系統的每個用戶設置環境信息,當用戶第一次登錄時,該文件被執行。
2、/etc/environment:在登錄時操作系統使用的第 二個文件,系統在讀取你自己的profile前,設置環境文件的環境變數。
3、~/.bash_profile:在 登錄時用到的第三個文件是.profile文件,每個用戶都可使用該文件輸入專用於自己使用的shell信息,當用戶登錄時,該 文件僅僅執行一次!默 認情況下,他設置一些環境變游戲量,執行用戶的.bashrc文件。/etc/bashrc:為每一個運行bash shell的用戶執行此文件.當bash shell被打開時,該文件被讀取.
4、~/.bashrc:該 文件包含專用於你的bash shell的bash信息,當登錄時以及每次打開新的shell時,該 該文件被讀取。
http://www.blogjava.net/jasmine214--love/archive/2010/11/25/339006.html