linux文件更新
1. 網路 「 iNotify 」,編一個happy的程序
2.用shell 二樓兄弟的cp那一行稍微改一下:cp -ru /data/a/* /data/b,不能保證實時更新
3.ln連接,這個是偽同步,其實對應的是同一個文件
B. LINUX下怎樣更新文件夾下所有文件的時間戳
在Linux中,文件沒有「創建時間」這個說法。Linux中的文件的時間屬性只有三個:atime(Access time)、mtime(Modified time)、ctime(Change time)。不過,有時有人把ctime理解為create time(創建時間),這是不對的,為什麼呢?因為,我們知道一個文件的創建時間只有一次,按這個理論,創建時間是不允許修改的,即一個文件一旦創建,它的ctime值就固定不變;但事實呢?是可以改變的。 atime指用戶上次訪問該文件(打開文件查看其中的內容)時的時間,只要一個用戶訪問該文件(不管以什麼方式),atime的值都會改變,比如:修改一個文件的內容,必然要先打開文件,然後才會修改其中的內容,所以,修改一個文件時,不但會更新一個文件的mtime值,也會更新atime的值。 mtime指用戶上次修改該文件中的內容的時間,只要用戶修改該文件中的內容,那麼mtime的值就會被更新。 ctime指該文件的屬性上次被改變時的時間。要想查看文件的屬性,可以通過ls命令查看,比如:ls -l。例如:你修改該文件的許可權了或者改變該文件的硬鏈接數了,ctime的值都會被更新。但是有一點,ctime的值更新,並不代表atime和mtime的值也更新,比如:你修改文件的許可權,但並不代表你訪問或修改了文件中的內容。 在做一些相應的操作時,文件的atime、mtime、ctime的值都會自動被更新。 正如前面所說,這些值是可以改變的,所以,我們可以通過touch命令來修改這三個屬性的值。其實,touch並不是用來創建一個新的、空的文件的,而是用來修改這三個屬性的值的。但為什麼創建一個新的、空的文件呢?這是touch附帶的一個功能,原因是:如果你提供的目標文件參數並不存在的話,那麼touch就會出現錯誤,為了防止這種情況出現,touch命令就會默認創建一個所提供的目標文件參數;其實其他命令也是如此,有些命令,如果用戶沒有為它提供參數的話,它就會從標准輸入設備讀取參數,即讓用戶從標准輸入設備輸入參數,這樣的命令比比皆是。 要想修改一個文件下的所有文件的時間屬性,可以用touch命令,提供一個要修改時間屬性類型的參數和時間值,然後跟著該文件夾下的所有文件,引用方式是使用 *(星號),它可以匹配一個文件夾下的所有文件。
C. Linux常用命令
就是list的縮寫,通過ls 命令不僅可以查看linux文件夾包含的文件,而且可以查看文件許可權(包括目錄、文件夾、文件許可權)看目錄信息等等
常用參數搭配:
實例:
(changeDirectory),命令語法:cd [目錄名]。說明:切換當前目錄至dirName
實例:
查看當前工作目錄路徑
實例:
創建文件夾
實例:
刪除一個目錄中的一個或多個文件或目錄,如果沒有使用- r選項,則rm不會刪除目錄。如果使用rm 來刪除文件,通常仍可以將該文件恢復原狀
rm [選項] 文件…
常用參數搭配:
實例:
刪除空目錄,一個目錄被刪除之前必須是空的。(注意,rm -r dir 命令可以代替rmdir,但是很危險,萬一它突然就不是空的咧?),另外刪除某目錄時必須具有對父目錄的寫許可權。
實例:
rmdir -p watch/avi刪掉avi目錄,watch目錄就空掉了,那還看什麼?所以乾脆把watch目錄一起刪掉,眼不見為不凈嘛。
mv命令是move的縮寫,可以用來移動文件或者將文件改名,是Linux系統下常用的命令,經常用來備份文件或者目錄。
命令功能:
視mv命令中第二個參數類型的不同(是目標文件還是目標目錄),mv命令將文件重命名或將其移至一個新的目錄中。當第二個參數類型是文件時,mv命令完成文件重命名,此時,源文件只能有一個(也可以是源目錄名),它將所給的源文件或目錄重命名為給定的目標文件名。當第二個參數是已存在的目錄名稱時,源文件或目錄參數可以有多個,mv命令將各參數指定的源文件均移至目標目錄中。在跨文件系統移動文件時,mv先拷貝,再將原有文件刪除,而鏈至該文件的鏈接也將丟失。
命令參數:
實例:
將源文件復制至目標文件,或將多個源文件復制至目標目錄。
注意:命令行復制,如果目標文件已經存在會提示是否覆蓋,而在shell腳本中,如果不加-i參數,則不會提示,而是直接覆蓋!
命令參數:
實例:
cat主要有三大功能:
命令參數:
實例:
功能類似於cat, more會以一頁一頁的顯示方便使用者逐頁閱讀,而最基本的指令就是按空白鍵(space)就往下一頁顯示,按 b 鍵就會往回(back)一頁顯示
命令參數:
常用操作命令:
實例:
less 與 more 類似,但使用 less 可以隨意瀏覽文件,而 more 僅能向前移動,卻不能向後移動,而且 less 在查看之前不會載入整個文件。
命令參數:
實例:
head 用來顯示檔案的開頭至標准輸出中,默認head命令列印其相應文件的開頭10行。
常用參數:
實例:
從指定點開始將文件寫到標准輸出。使用tail命令的-f選項可以方便的查閱正在改變的日誌文件,tail -f filename會把filename里最尾部的內容顯示在屏幕上,並且不斷刷新,使你看到最新的文件內容。
常用參數:
實例:
用於改變linux系統文件或目錄的訪問許可權。該命令有兩種用法。一種是包含字母和操作符表達式的文字設定法;另一種是包含數字的數字設定法。
每一文件或目錄的訪問許可權都有三組,每組用三位表示,分別為文件屬主的讀、寫和執行許可權;與屬主同組的用戶的讀、寫和執行許可權;系統中其他用戶的讀、寫和執行許可權。可使用ls -l test.txt查找。
以文件log2012.log為例:
-rw-r--r-- 1 root root 296K 11-13 06:03 log2012.log
第一列共有10個位置,第一個字元指定了文件類型。在通常意義上,一個目錄也是一個文件。如果第一個字元是橫線,表示是一個非目錄的文件。如果是d,表示是一個目錄。從第二個字元開始到第十個共9個字元,3個字元一組,分別表示了3組用戶對文件或者目錄的許可權。許可權字元用橫線代表空許可,r代表只讀,w代表寫,x代表可執行。
常用參數:
許可權范圍:
許可權代號:
實例:
tar命令是類Linux中比價常用的解壓與壓縮命令。
常用參數:
-c: 建立壓縮檔案
-x:解壓
-t:查看內容
-r:向壓縮歸檔文件末尾追加文件
-u:更新原壓縮包中的文件
這五個是獨立的命令,壓縮解壓都要用到其中一個,可以和別的命令連用但只能用其中一個。下面的參數是根據需要在壓縮或解壓檔案時可選的。
下面的參數-f是必須的
常見解壓/壓縮命令
chown將指定文件的擁有者改為指定的用戶或組,用戶可以是用戶名或者用戶ID;組可以是組名或者組ID;文件是以空格分開的要改變許可權的文件列表,支持通配符。
常用參數:
實例:
顯示磁碟空間使用情況。獲取硬碟被佔用了多少空間,目前還剩下多少空間等信息,如果沒有文件名被指定,則所有當前被掛載的文件系統的可用空間將被顯示。默認情況下,磁碟空間將以 1KB 為單位進行顯示,除非環境變數 POSIXLY_CORRECT 被指定,那樣將以512位元組為單位進行顯示。
常用參數:
實例:
命令也是查看使用空間的,但是與df命令不同的是,能看到的文件只是一些當前存在的,沒有被刪除的,他計算的大小就是當前他認為存在的所有文件大小的累加和。命令是對文件和目錄磁碟使用的空間的查看。
常用參數:
實例:
ln命令用於將一個文件創建鏈接,鏈接分為軟鏈接和硬鏈接,命令默認使用硬鏈接。當在不同目錄需要該文件時,就不需要為每一個目錄創建同樣的文件,通過ln創建的鏈接(link)減少磁碟佔用量。
軟鏈接:
硬鏈接:
需要注意:
常用參數:
實例:
顯示或設定系統的日期與時間
命令參數:
實例:
可以用戶顯示公歷(陽歷)日歷,如只有一個參數,則表示年份(1-9999),如有兩個參數,則表示月份和年份。
常用參數:
實例:
強大的文本搜索命令,grep(Global Regular Expression Print)全局正則表達式搜索。
grep的工作方式是這樣的,它在一個或多個文件中搜索字元串模板。如果模板包括空格,則必須被引用,模板後的所有字元串被看作文件名。搜索的結果被送到標准輸出,不影響原文件內容。
命令格式:
grep [option] pattern file|dir
常用參數:
實例:
wc(word count)功能為統計指定的文件中位元組數、字數、行數,並將統計結果輸出。
命令格式:
wc [option] file..
命令參數:
實例:
ps(process status),用來查看當前運行的進程狀態,一次性查看,如果需要動態連續結果使用top。
linux上進程有5種狀態:
ps工具標識進程的5種狀態碼:
命令參數:
實例:
顯示當前系統正在執行的進程的相關信息,包括進程ID、內存佔用率、CPU佔用率等。
常用參數:
發送指定的信號到相應進程。不指定型號將發送SIGTERM(15)終止指定進程。如果無法終止該程序可用「-KILL」 參數,其發送的信號為SIGKILL(9) ,將強制結束進程,使用ps命令或者jobs 命令可以查看進程號。root用戶將影響用戶的進程,非root用戶只能影響自己的進程。
常用參數:
實例:
顯示系統內存使用情況,包括物理內存、交互區內存(swap)和內核緩沖區內存。
命令參數:
實例:
Netstat 是一款命令行工具,可用於列出系統上所有的網路套接字連接情況,包括 tcp, udp 以及 unix 套接字,另外它還能列出處於監聽狀態(即等待接入請求)的套接字。如果你想確認系統上的 Web 服務有沒有起來,你可以查看80埠有沒有打開。以上功能使 netstat 成為網管和系統管理員的必備利器。
命令參數:
實例
D. linux命令求解,如何更新以及還原
[armlinux@lqm patch]$ diff-uN test0 test1 > test1.patch
【註:因為單個文件,所以不需要-r選項。選項順序沒有關系,即可以是-uN,也可以是-Nu。】
[armlinux@lqm patch]$ ls
test0 test1 test1.patch
[armlinux@lqm patch]$ moretest1.patch
************************************************************
patch文件的結構
補丁頭
補丁頭是分別由---/+++開頭的兩行,用來表示要打補丁的文件。---開頭表示舊文件,+++開頭表示新文件。
一個補丁文件中的多個補丁
一個補丁文件中可能包含以---/+++開頭的很多節,每一節用來打一個補丁。所以在一個補丁文件中可以包含好多個補丁。
塊
塊是補丁中要修改的地方。它通常由一部分不用修改的東西開始和結束。他們只是用來表示要修改的位置。他們通常以@@開始,結束於另一個塊的開始或者一個新的補丁頭。
塊的縮進
塊會縮進一列,而這一列是用來表示這一行是要增加還是要刪除的。
塊的第一列
+號表示這一行是要加上的。
-號表示這一行是要刪除的。
沒有加號也沒有減號表示這里只是引用的而不需要修改。
************************************************************
***diff命令會在補丁文件中記錄這兩個文件的首次創建時間,如下***
--- test0 2006-08-18 09:12:01.000000000 +0800
+++ test1 2006-08-18 09:13:09.000000000 +0800
@@ -1,3 +1,4 @@
+222222
111111
-111111
+222222
111111
[armlinux@lqm patch]$ patch-p0 < test1.patch
patching file test0
[armlinux@lqm patch]$ ls
test0 test1 test1.patch
[armlinux@lqm patch]$ cattest0
222222
111111
222222
111111
3、可以去除補丁,恢復舊版本
[armlinux@lqm patch]$ patch-RE -p0 < test1.patch
patching file test0
[armlinux@lqm patch]$ ls
test0 test1 test1.patch
[armlinux@lqm patch]$ cattest0
111111
111111
111111