1.1 `find -regex` 與 `find -name` 的區(qū)別
若一個(gè)目錄中,有如下目錄:
susu@ubuntu:~/find_test$ lsaaa aaa 22 1susu@ubuntu:~/find_test$
可以使用 -name 進(jìn)行名字匹配查詢(xún):
susu@ubuntu:~/find_test$ find 。 -name “a*”。/aaa./aasusu@ubuntu:~/find_test$
若同樣的方式,使用 -regex 查詢(xún),則不能得到想要的結(jié)果:
susu@ubuntu:~/find_test$ find 。 -regex “a*”susu@ubuntu:~/find_test$
出現(xiàn)以上結(jié)果的原因在于 -name 只要求匹配當(dāng)前目錄中的文件(夾)名稱(chēng),而 -regex 則是把 find 輸出的完整結(jié)果作為匹配對(duì)象,所以上面的命令中,默認(rèn)是以 a 作為開(kāi)頭的字符串匹配,是不符合 -regex 規(guī)則,所以沒(méi)能匹配到想要的結(jié)果。
正確用法如下:
susu@ubuntu:~/find_test$ find 。 -regex “.*a+”。/aaa./aasusu@ubuntu:~/find_test$
注意:
根據(jù)正則表達(dá)式的語(yǔ)法,應(yīng)該加上 .* 而不是 *,具體正則表達(dá)式語(yǔ)法,參見(jiàn)鏈接http://www.runoob.com/regexp/regexp-syntax.html。
命令選項(xiàng)之后的參數(shù),可用雙引號(hào)包裹起來(lái),也可以不用。
在 -name 語(yǔ)法中,可以使用星號(hào) *,在知道部分文件名的情況下使用。但是正則表達(dá)式語(yǔ)法中的其他特殊字符是沒(méi)有效果的,而且兩種方式下的星號(hào)含義也不同。比如如下的操作,是找不到文件夾 “cccccc” 的。
susu@ubuntu:~/find_test$ ls1 aa cccccc mycprogram.c Program.c2 aaa mybashprogram.sh MyCProgram.csusu@ubuntu:~/find_test$ find 。 -name “c*”。/ccccccsusu@ubuntu:~/find_test$ find 。 -name “c.*”susu@ubuntu:~/find_test$
eg:
eclipse 工程文件夾下有 4 個(gè) project:
susu@ubuntu:~/workspace$ lsRemoteSystemsTempFiles test_new_web_maventestJust test_quickstart_mavensusu@ubuntu:~/workspace$ cd 。.susu@ubuntu:~$
退回到上一層之后,用 -regex 查找 workspace 文件夾下的內(nèi)容,使用如下語(yǔ)句:
susu@ubuntu:~$ find 。/workspace/ -regex “.*test_new.*”。/workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/test_new_web_maven./workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/test_new_web_maven/org.eclipse.jdt.core./workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/test_new_web_maven/org.eclipse.jdt.core/state.dat./workspace/.metadata/.plugins/org.eclipse.core.resources/.projects/test_new_web_maven/.markers./workspace/test_new_web_maven./workspace/test_new_web_maven/src./workspace/test_new_web_maven/src/main./workspace/test_new_web_maven/src/main/webapp./workspace/test_new_web_maven/src/main/webapp/index.jsp./workspace/test_new_web_maven/src/main/webapp/WEB-INF./workspace/test_new_web_maven/src/main/webapp/WEB-INF/web.xml./workspace/test_new_web_maven/src/main/resources./workspace/test_new_web_maven/.classpath./workspace/test_new_web_maven/.project./workspace/test_new_web_maven/target./workspace/test_new_web_maven/target/classes./workspace/test_new_web_maven/pom.xmlsusu@ubuntu:~$
1.2 Linux 命令中的 “permission denied” 問(wèn)題
普通用戶(hù)在根目錄中使用 find 命令時(shí),通常會(huì)碰到類(lèi)似以下的問(wèn)題:
susu@ubuntu:/$ find / -name *.txt.。.find: `。/.gvfs‘: Permission deniedfind: `。/.dbus’: Permission deniedfind: `。/.cache/dconf‘: Permission denied
因?yàn)楣芾韱T用戶(hù) root 設(shè)置了某些文件夾“禁止”普通用戶(hù)訪(fǎng)問(wèn),所以普通用戶(hù)在使用以上命令時(shí)會(huì)出現(xiàn)如下錯(cuò)誤。
解決方案:先給出鏈接,一個(gè)百度文庫(kù),搜索關(guān)鍵字就可以看到解決方法。
/dev/null 稱(chēng)為 Linux 黑洞,等價(jià)于一個(gè)只寫(xiě)文件,所有寫(xiě)入它的內(nèi)容都會(huì)消失,既然會(huì)消失,那么該文件也是打不開(kāi)的,也無(wú)法從該文件當(dāng)中讀取任何內(nèi)容。而解決的途徑就是把含有 permission denied 的報(bào)錯(cuò)信息都輸入該文件即可。
對(duì)于可能存在該報(bào)錯(cuò)信息的命令(在根目錄 / 下執(zhí)行 find 命令,通常都會(huì)有此報(bào)錯(cuò)),那么可以該 find 命令后,添加一句話(huà),比如上面的 find 命令:
susu@ubuntu:/$ find / -name *.txt 2》/dev/null
在后面加上命令 2》/dev/null 就避免了報(bào)錯(cuò)問(wèn)題。
1.3 find 命令忽略大小寫(xiě)
只需要在命令選項(xiàng)前加一個(gè) i,就可忽略大小寫(xiě)。-name 換為 -iname,-regex 換為-iregex。
1.4 和文件訪(fǎng)問(wèn)、修改以及對(duì)應(yīng)時(shí)間相關(guān)的 find 命令
主要是 -mtime 和 -ctime 命令選項(xiàng):
-amin n 查找系統(tǒng)中最后N分鐘訪(fǎng)問(wèn)的文件 -atime n 查找系統(tǒng)中最后n*24小時(shí)訪(fǎng)問(wèn)的文件 -cmin n 查找系統(tǒng)中最后N分鐘被改變文件狀態(tài)的文件 -ctime n 查找系統(tǒng)中最后n*24小時(shí)被改變文件狀態(tài)的文件 -mmin n 查找系統(tǒng)中最后N分鐘被改變文件數(shù)據(jù)的文件 -mtime n 查找系統(tǒng)中最后n*24小時(shí)被改變文件數(shù)據(jù)的文件
從上面的解釋看出,文件被改變,分為兩類(lèi),一類(lèi)是文件狀態(tài)的改變,比如權(quán)限、歸屬關(guān)系,這個(gè)時(shí)候的前綴是 -c.。.(比如:-cmin n,-ctime n);一類(lèi)是文件數(shù)據(jù)的改變,就是修改的文件內(nèi)容,前綴是 -m.。.(-mmin n,-mtime n)。
后面的 n,有兩種,一種是 +n,一種是 -n,其各自含義如下:
-mtime -n 在 n 天之內(nèi)改變文件數(shù)據(jù)的文件;-mtime +n 在 n 天之前改變文件數(shù)據(jù)的文件。
1.5 `-mindepth` 和 `-maxdepth` 的使用
限定搜索指定目錄的深度,兩者可以結(jié)合使用。其實(shí)多種命令選項(xiàng)都可結(jié)合使用,只要合理就行。比如:
susu@ubuntu:~/find_test$ find 。 -name “aa”。/aa./cccccc/dddddd/aa./cccccc/aasusu@ubuntu:~/find_test$
檢索出了 3 個(gè)符合條件的路徑,如果限定搜索目錄最大深度不能超過(guò) 2 層,那么可使用如下語(yǔ)句:
susu@ubuntu:~/find_test$ find 。 -maxdepth 2 -name “aa”。/aa./cccccc/aasusu@ubuntu:~/find_test$
從上面的例子可看出,對(duì)于 maxdepth,若為 1,那么就是指只在當(dāng)前目錄下搜索,子目錄不再搜索。如果條件限定為搜索目錄深度最小是 2,最大是 3,那么命令可如下:
susu@ubuntu:~/find_test$ find 。 -mindepth 2 -maxdepth 3 -name “aa”。/cccccc/dddddd/aa./cccccc/aasusu@ubuntu:~/find_test$
當(dāng)然也可以只限定在某個(gè)固定搜索目錄深度下搜索:
susu@ubuntu:~/find_test$ find 。 -maxdepth 2 -mindepth 2 -regex “.*aa.*”。/cccccc/aaa./cccccc/aasusu@ubuntu:~/find_test$
1.6 `find` 其他命令
《1》 相反匹配:
susu@ubuntu:~/find_test$ ls1 2 aa aaa cccccc mybashprogram.sh mycprogram.c MyCProgram.c Program.csusu@ubuntu:~/find_test$ susu@ubuntu:~/find_test$ find 。 -mindepth 1 -maxdepth 1 -not -name “aa*”。/MyCProgram.c./2./1./mybashprogram.sh./Program.c./cccccc./mycprogram.csusu@ubuntu:~/find_test$
《2》 在查找到的文件上執(zhí)行命令:
susu@ubuntu:~/find_test$ find 。 -maxdepth 1 -name “aa*” -exec md5sum {} ;d41d8cd98f00b204e9800998ecf8427e 。/aaad41d8cd98f00b204e9800998ecf8427e 。/aasusu@ubuntu:~/find_test$
計(jì)算 MD5 校驗(yàn)和。
《3》 使用 inode 編號(hào)查找文件
任何一個(gè)文件都有一個(gè)唯一的 inode 編號(hào),先查看每個(gè)文件的 inode 編號(hào):
susu@ubuntu:~/find_test$ ls -i1 a*804182 aa804181 aaasusu@ubuntu:~/find_test$
然后使用 -num 命令:
susu@ubuntu:~/find_test$ find -inum 804182./aasusu@ubuntu:~/find_test$
當(dāng)然以上舉例只是簡(jiǎn)單情況,對(duì)于名字相似(特別是末尾多一個(gè)空格,看不出來(lái)差別的時(shí)候)的可使用 inode 進(jìn)行辨別。
《4》 根據(jù)文件權(quán)限查找文件:
-perm ***
可用 ls -l 查看各個(gè)文件的權(quán)限:
susu@ubuntu:~/find_test$ ls -ltotal 4-rw-rw-r-- 1 susu susu 0 Jun 15 09:33 1-rw-rw-r-- 1 susu susu 0 Jun 15 09:34 2-rw-rw-r-- 1 susu susu 0 Jun 15 09:33 aa-rw-rw-r-- 1 susu susu 0 Jun 15 09:33 aaadrwxrwxr-x 3 susu susu 4096 Jun 15 13:48 cccccc-rw-rw-r-- 1 susu susu 0 Jun 15 09:28 mybashprogram.sh-rw-rw-r-- 1 susu susu 0 Jun 15 09:28 mycprogram.c-rw-rw-r-- 1 susu susu 0 Jun 15 09:28 MyCProgram.c-rw-rw-r-- 1 susu susu 0 Jun 15 09:28 Program.csusu@ubuntu:~/find_test$
《5》 使用 -type 查找指定文件類(lèi)型的文件:
find 。 -type f 普通文件find 。 -type s socket文件find 。 -type d 目錄文件find 。 -type f -name “.*” 查找所有一匿藏文件find 。 -type d -name “.*” 查找所有的隱藏目錄
下面看下具體用例。
比如,在文件夾 find_test 下,有如下的文件組成:
susu@ubuntu:~/find_test$ ls -R.:a aa aaa bbbbbb bewe.sh werrw.c./bbbbbb:bae.sh ccccc readme.txt wer.txt./bbbbbb/ccccc:wer.csusu@ubuntu:~/find_test$
如果要清空該文件夾下的所有內(nèi)容,可以回退到上一層,然后使用 rm -rf find_test命令。也可以使用如下命令:
susu@ubuntu:~/find_test$ find 。 -regex “.*” -exec rm -rf {} ;rm: cannot remove directory: ‘?!痜ind: `。/bbbbbb’: No such file or directorysusu@ubuntu:~/find_test$ lssusu@ubuntu:~/find_test$
文件夾下的所有文件都已刪除,包括各層子目錄的文件夾。
2. `grep` 命令
主要作用:Linux 系統(tǒng)中一個(gè)文本搜索工具,能使用正則表達(dá)式搜索文本,并把搜索結(jié)果打印出來(lái)。
比如,a.txt 文件中如下內(nèi)容:
susu@ubuntu:~/grep_test$ cat a.txttihis test1 werwr.dfsdfefwfgwerwer teststttttwesdf wtest234.susu@ubuntu:~/grep_test$
現(xiàn)在,要在 a.txt 中找所有包含“test”字符串的行,并顯示出來(lái):
susu@ubuntu:~/grep_test$ grep “test” a.txt tihis test1 werwr. werwer teststtttt wesdf wtest234. susu@ubuntu:~/grep_test$
其中,“test”字符串在 ubuntu 的命令行下是紅色高亮顯示的。
$ grep ‘test’ d*
顯示所有以 d 開(kāi)頭的文件中含有“test”關(guān)鍵字的行。
如下命令:
grep “[a-z]{5}” a.txt
表示每個(gè)字符串包含至少 5 個(gè)以上連續(xù)小寫(xiě)字母的字符串。
除了搜索限定的文本,也可以搜索指定目錄下的所有文件,如下:
susu@ubuntu:~$ grep “test” grep_test/*grep_test/a.txt:tihis test1 werwr.grep_test/a.txt:werwer teststttttgrep_test/a.txt:wesdf wtest234.grep_test/b.txt:testt tewtwwer testetwrsusu@ubuntu:~$
注意:默認(rèn)情況下,grep 只在跟定的目錄下進(jìn)行搜索,不會(huì)進(jìn)入子目錄,所以搜索深度只有 1 層,而且會(huì)跳出來(lái)“*** is a directory”。如果想讓其搜索所有子目錄的文件,可以使用如下語(yǔ)句:
susu@ubuntu:~$ grep -r “test” grep_test/*grep_test/a.txt:tihis test1 werwr.grep_test/a.txt:werwer teststttttgrep_test/a.txt:wesdf wtest234.grep_test/b.txt:testt tewtwwer testetwrgrep_test/ddddd/c.txt~:werwert testtgrep_test/ddddd/c.txt~:testgrep_test/ddddd/c.txt~:testsetwtwgrep_test/ddddd/c.txt~:sdffsddfsfftetsettest sdfgrep_test/ddddd/c.txt:werwert testtgrep_test/ddddd/c.txt:testgrep_test/ddddd/c.txt:testsetwtwgrep_test/ddddd/c.txt:sdffsddfsfftetsettest sdfsusu@ubuntu:~$
或者,使用如下語(yǔ)句跳過(guò)子目錄:
susu@ubuntu:~$ grep -d skip “test” grep_test/*grep_test/a.txt:tihis test1 werwr.grep_test/a.txt:werwer teststttttgrep_test/a.txt:wesdf wtest234.grep_test/b.txt:testt tewtwwer testetwrsusu@ubuntu:~$
如果現(xiàn)實(shí)內(nèi)容過(guò)多,可以通過(guò)管道轉(zhuǎn)到 less 上閱讀,語(yǔ)句如下:
susu@ubuntu:~$ grep -r “test” grep_test/* | less
note:less 是一個(gè)工具,用于文件或者其他輸入的分頁(yè)顯示,是 Linux 系統(tǒng)查看文本內(nèi)容的工具。比如可以用以下方式打開(kāi)文件:
susu@ubuntu:~/grep_test$ less a.txt
然后就會(huì)轉(zhuǎn)到一個(gè)新頁(yè)面,只顯示 a.txt 中的內(nèi)容。更多關(guān)于 less 的講解,參看鏈接:http://www.cnblogs.com/peida/archive/2012/11/05/2754477.html。
3. diff 命令
diff 命令可以比較文本,也可比較目錄。比較文本,就是逐行比較,給出異同點(diǎn),比較目錄時(shí),同名的文件會(huì)進(jìn)行比較,不同名的文件,會(huì)列出各自屬于哪個(gè)目錄。
比較文件:
susu@ubuntu:~/grep_test$ diff a.txt c.txt3c3《 sdfef---》 wr6c6,8《 ---》 add》 wer》 rtysusu@ubuntu:~/grep_test$
比較目錄:
susu@ubuntu:~$ diff grep_test/ workspace/diff grep_test/a.txt workspace/a.txt1,10d0《 tihis test1 werwr.《 df《 sdfef《 wf《 g《 《 werwer teststtttt《 《 wesdf wtest234.《 Only in grep_test/: b.txtOnly in grep_test/: c.txtOnly in grep_test/: c.txt~Only in grep_test/: dddddOnly in workspace/: .metadataOnly in workspace/: .recommendersOnly in workspace/: RemoteSystemsTempFilesOnly in workspace/: testJustOnly in workspace/: test_new_web_mavenOnly in workspace/: test_quickstart_mavensusu@ubuntu:~$
對(duì)于兩個(gè)文件的比較,會(huì)有兩個(gè)箭頭表示:“《”和“》”符號(hào)。符號(hào)“《”表示第一個(gè)參數(shù)代表的文件,符號(hào)“》”表示第二個(gè)參數(shù)代表的文件。上面的代碼中,首先給出提示:diff grep_test/a.txt workspace/a.txt,然后接下來(lái)是要比較的內(nèi)容。
第一行,給出了“1,10d0”,結(jié)合下面的左側(cè)指向箭頭“《”,說(shuō)明在第 0 行(最開(kāi)始),第一個(gè)文本比第二個(gè)文本多了 1 ~ 10 行。
diff 命令中間可加入各個(gè)參數(shù),比如:
susu@ubuntu:~/grep_test$ diff --brief a.txt b.txt Files a.txt and b.txt differsusu@ubuntu:~/grep_test$ diff -q a.txt b.txt Files a.txt and b.txt differsusu@ubuntu:~/grep_test$
-q 或者 --brief 簡(jiǎn)化了比較的信息,只告訴兩個(gè)文本是否相同,不顯示詳細(xì)的不同之處。更多 diff 的命令參數(shù)可參考:http://www.cnblogs.com/peida/archive/2012/12/12/2814048.html。
4. mount 命令
在 Linux 系統(tǒng)中,mount 命令用于掛在光盤(pán)鏡像文件、移動(dòng)硬盤(pán)、U盤(pán)等。
格式:
mount [-t vfstype] [-o options] device dir
[-t vfstype] 指定所掛載的文件系統(tǒng)的類(lèi)型,通常 mount 可自動(dòng)識(shí)別,不用人為指定。常用類(lèi)型如下:
光盤(pán)或光盤(pán)鏡像:iso9660DOS fat16 文件系統(tǒng):msdosWindows 9x fat32 文件系統(tǒng):vfatWindows NT ntfs文件系統(tǒng):ntfsMount Windows 文件網(wǎng)絡(luò)共享:smbfsUNIX(LINUX)
[-o options] 說(shuō)明掛載方式,其和上面的命令,兩者可互換。常用參數(shù)如下:
oop:用來(lái)把一個(gè)文件當(dāng)成硬盤(pán)分區(qū)掛接上系統(tǒng)ro:采用只讀方式掛接設(shè)備rw:采用讀寫(xiě)方式掛接設(shè)備iocharset:指定訪(fǎng)問(wèn)文件系統(tǒng)所用字符集
device 表示要掛載的設(shè)備;dir 設(shè)備在系統(tǒng)上的掛載點(diǎn)(mount point)。
實(shí)踐操作如下。
在插入 U 盤(pán)之前,輸入以下命令:
susu@ubuntu:~$ sudo fdisk -lDisk /dev/sda: 32.2 GB, 32212254720 bytes255 heads, 63 sectors/track, 3916 cylinders, total 62914560 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x000c5c38 Device Boot Start End Blocks Id System/dev/sda1 * 2048 60817407 30407680 83 Linux/dev/sda2 60819454 62912511 1046529 5 Extended/dev/sda5 60819456 62912511 1046528 82 Linux swap / Solarissusu@ubuntu:~$
這地方的命令一定要加 sudo,否則什么也不會(huì)顯示。
可以看到,Linux 文件系統(tǒng)下,有一塊硬盤(pán) sda ,硬盤(pán)中有 2 個(gè)分區(qū) sda1 和 sda2 。另外一個(gè) sda5 是邏輯分區(qū)。
插入 U 盤(pán)后,重新敲一遍命令,得到如下信息:
susu@ubuntu:/$ sudo fdisk -lDisk /dev/sda: 32.2 GB, 32212254720 bytes255 heads, 63 sectors/track, 3916 cylinders, total 62914560 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x000c5c38 Device Boot Start End Blocks Id System/dev/sda1 * 2048 60817407 30407680 83 Linux/dev/sda2 60819454 62912511 1046529 5 Extended/dev/sda5 60819456 62912511 1046528 82 Linux swap / SolarisDisk /dev/sdb: 4057 MB, 4057989120 bytes91 heads, 45 sectors/track, 1935 cylinders, total 7925760 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x00000000 Device Boot Start End Blocks Id System/dev/sdb1 * 63 7925759 3962848+ c W95 FAT32 (LBA)susu@ubuntu:/$
會(huì)發(fā)現(xiàn),下面多出來(lái)很多信息,這個(gè)信息都是描述剛剛插入的 U 盤(pán)的。系統(tǒng)多了一個(gè)硬盤(pán) sdb 和一個(gè)磁盤(pán)分區(qū) sdb1 。我們要掛載的就是磁盤(pán)分區(qū) sdb1 。
先在 /mnt/ 目錄下創(chuàng)建一個(gè)掛載點(diǎn):
susu@ubuntu:/mnt$ sudo mkdir usbhd1susu@ubuntu:/mnt$ lsusbhd1susu@ubuntu:/mnt$
然后根據(jù) mount 命令的語(yǔ)法,將 USB 添加到該掛載點(diǎn):
susu@ubuntu:/$ mount -o loop dev/sdb1 mnt/usbhd1/mount: only root can do thatsusu@ubuntu:/$ sudo mount -o loop dev/sdb1 mnt/usbhd1/susu@ubuntu:/$ cd mnt/usbhd1/susu@ubuntu:/mnt/usbhd1$ ls???? EVM?????.txt???? ?? Microsoft Word ??.doc????? ???????????????????.pdf????05.06.07.09????-4.pdf Reimbursement Form for interview trip.xls??1_??.png System Volume Information???????????????(2010?).pdf Vocabulary.doc2012??????????(?????)-12.pdf VS2012_ULT_chs.iso????????.docx ????????????????.xlssusu@ubuntu:/mnt/usbhd1$
mount 掛載成功!
上述代碼中,剛開(kāi)始沒(méi)有加 sudo,提示只有 root 可以。最后 ls ,發(fā)現(xiàn)是亂碼,是因?yàn)?U 盤(pán)中都是中文名字,所以顯示亂碼??捎靡韵旅罱鉀Q此問(wèn)題:
susu@ubuntu:/$ sudo mount -o iocharset=cp936 。/dev/sdb1 。/mnt/usbhd1/
卸載就相對(duì)簡(jiǎn)單了,只需要把掛載點(diǎn)卸掉即可,命令如下:
susu@ubuntu:/$ sudo umount 。/mnt/usbhd1
5. ps 命令
ps 與 top 的區(qū)別:ps 是進(jìn)程快照,給出了輸入 ps 命令按回車(chē)時(shí)的進(jìn)程,而 top 是實(shí)時(shí)動(dòng)態(tài)進(jìn)程。
顯示所有進(jìn)程信息:
susu@ubuntu:~$ ps -A PID TTY TIME CMD 1 ? 00:00:03 init 2 ? 00:00:00 kthreadd 3 ? 00:00:00 ksoftirqd/0 5 ? 00:00:00 kworker/0:0H 7 ? 00:00:16 rcu_sched 8 ? 00:00:00 rcu_bh 9 ? 00:00:00 migration/0 10 ? 00:00:00 watchdog/0 。..。..
顯示指定用戶(hù)信息:
susu@ubuntu:~$ ps -u susu PID TTY TIME CMD 1757 ? 00:00:00 gnome-keyring-d 1759 ? 00:00:00 init 1828 ? 00:00:04 dbus-daemon 1839 ? 00:00:00 upstart-event-b 1848 ? 00:00:00 window-stack-br 1850 ? 00:00:55 ibus-daemon 1864 ? 00:00:00 gvfsd 1874 ? 00:00:00 ibus-dconf 1875 ? 00:00:00 gvfsd-fuse 1876 ? 00:00:14 ibus-ui-gtk3 。..。..
與 grep 結(jié)合,查找特定進(jìn)程:
susu@ubuntu:~$ ps -ef|grep sshsusu 5920 2409 0 17:41 pts/6 00:00:00 grep --color=auto sshsusu@ubuntu:~$
列出目前正在運(yùn)行在內(nèi)存中的所有程序:
susu@ubuntu:~$ ps auxUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.2 4452 2076 ? Ss 09:00 0:03 /sbin/initroot 2 0.0 0.0 0 0 ? S 09:00 0:00 [kthreadd]root 3 0.0 0.0 0 0 ? S 09:00 0:00 [ksoftirqd/0]root 5 0.0 0.0 0 0 ? S《 09:00 0:00 [kworker/0:0H]root 7 0.0 0.0 0 0 ? S 09:00 0:16 [rcu_sched]root 8 0.0 0.0 0 0 ? S 09:00 0:00 [rcu_bh]root 9 0.0 0.0 0 0 ? S 09:00 0:00 [migration/0]root 10 0.0 0.0 0 0 ? S 09:00 0:00 [watchdog/0]root 11 0.0 0.0 0 0 ? S 09:00 0:00 [watchdog/1]root 12 0.0 0.0 0 0 ? S 09:00 0:00 [migration/1]root 13 0.0 0.0 0 0 ? S 09:00 0:00 [ksoftirqd/1]root 14 0.0 0.0 0 0 ? S 09:00 0:03 [kworker/1:0]root 15 0.0 0.0 0 0 ? S《 09:00 0:00 [kworker/1:0H]root 16 0.0 0.0 0 0 ? S 09:00 0:00 [watchdog/2]root 17 0.0 0.0 0 0 ? S 09:00 0:00 [migration/2]。..。..
以上內(nèi)容中各字段含義如下:
USER:該 process 屬于那個(gè)使用者賬號(hào)的PID :該 process 的號(hào)碼%CPU:該 process 使用掉的 CPU 資源百分比%MEM:該 process 所占用的物理內(nèi)存百分比VSZ :該 process 使用掉的虛擬內(nèi)存量 (Kbytes)RSS :該 process 占用的固定的內(nèi)存量 (Kbytes)TTY :該 process 是在那個(gè)終端機(jī)上面運(yùn)作,若與終端機(jī)無(wú)關(guān),則顯示 ?,另外, tty1-tty6 是本機(jī)上面的登入者程序,若為 pts/0 等等的,則表示為由網(wǎng)絡(luò)連接進(jìn)主機(jī)的程序。STAT:該程序目前的狀態(tài),主要的狀態(tài)有R :該程序目前正在運(yùn)作,或者是可被運(yùn)作S :該程序目前正在睡眠當(dāng)中 (可說(shuō)是 idle 狀態(tài)),但可被某些訊號(hào) (signal) 喚醒。T :該程序目前正在偵測(cè)或者是停止了Z :該程序應(yīng)該已經(jīng)終止,但是其父程序卻無(wú)法正常的終止他,造成 zombie (疆尸) 程序的狀態(tài)START:該 process 被觸發(fā)啟動(dòng)的時(shí)間TIME :該 process 實(shí)際使用 CPU 運(yùn)作的時(shí)間COMMAND:該程序的實(shí)際指令
6. free 命令
顯示系統(tǒng)中使用和空存情閑的內(nèi)況:包括物理區(qū)內(nèi)存,交互區(qū)內(nèi)存(swap)和內(nèi)核緩沖區(qū)內(nèi)存(buffer),無(wú)共享內(nèi)存。
7 ifconfig(interface configs)
類(lèi)似于 Windows 下的 ipconfig 指令,獲取網(wǎng)絡(luò)接口配置信息。
顯示網(wǎng)絡(luò)設(shè)備信息:
susu@ubuntu:/$ ifconfigeth0 Link encap:Ethernet HWaddr 00:0c:29:36:a8:68 inet addr:192.168.168.128 Bcast:192.168.168.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe36:a868/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:53539 errors:3 dropped:1 overruns:0 frame:0 TX packets:48878 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:29473130 (29.4 MB) TX bytes:8479638 (8.4 MB) Interrupt:19 Base address:0x2000 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:12501 errors:0 dropped:0 overruns:0 frame:0 TX packets:12501 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1211710 (1.2 MB) TX bytes:1211710 (1.2 MB)
抄一段對(duì)以上內(nèi)容的說(shuō)明:
eth0 表示第一塊網(wǎng)卡, 其中 HWaddr 表示網(wǎng)卡的物理地址,可以看到目前這個(gè)網(wǎng)卡的物理地址(MAC 地址)是 00:50:56:BF:26:20
inet addr 用來(lái)表示網(wǎng)卡的 IP 地址,此網(wǎng)卡的 IP 地址是 192.168.120.204,廣播地址, Bcast:192.168.120.255,掩碼地址 Mask:255.255.255.0
lo 是表示主機(jī)的回壞地址,這個(gè)一般是用來(lái)測(cè)試一個(gè)網(wǎng)絡(luò)程序,但又不想讓局域網(wǎng)或外網(wǎng)的用戶(hù)能夠查看,只能在此臺(tái)主機(jī)上運(yùn)行和查看所用的網(wǎng)絡(luò)接口。比如把 HTTP 服務(wù)器指定到回壞地址,在瀏覽器輸入 127.0.0.1 就能看到你所架 Web 網(wǎng)站了。但只是您能看得到,局域網(wǎng)的其它主機(jī)或用戶(hù)無(wú)從知道。
第一行:連接類(lèi)型:Ethernet(以太網(wǎng))HWaddr(硬件 MAC 地址)
第二行:網(wǎng)卡的IP地址、子網(wǎng)、掩碼
第三行:UP(代表網(wǎng)卡開(kāi)啟狀態(tài))RUNNING(代表網(wǎng)卡的網(wǎng)線(xiàn)被接上)MULTICAST(支持組播)MTU:1500(最大傳輸單元):1500 字節(jié) 第四、五行:接收、發(fā)送數(shù)據(jù)包情況統(tǒng)計(jì)第七行:接收、發(fā)送數(shù)據(jù)字節(jié)數(shù)統(tǒng)計(jì)信息。
根據(jù)以上的解釋說(shuō)明,可用如下方式來(lái)打開(kāi)和關(guān)閉網(wǎng)卡。
打開(kāi):
sudo ifconfig eth0 down
關(guān)閉:
sudo ifconfig eth0 up
其他功能包括:為網(wǎng)卡配置和刪除 IPv6 地址、配置 IP 地址、啟用 / 關(guān)閉 ARP 協(xié)議、設(shè)置網(wǎng)卡做大傳輸單元(ifconfig eth0 mtu 1500)等。
8. telnet 命令
主要用于遠(yuǎn)程登錄。
telnet 程序是基于 Telnet 協(xié)議的遠(yuǎn)程登錄客戶(hù)端程序。Telnet 協(xié)議是 Internet 遠(yuǎn)程服務(wù)的標(biāo)準(zhǔn)協(xié)議也主要方式。現(xiàn)在很多 Linux 服務(wù)器因?yàn)榘踩珕?wèn)題不再支持 Telnet 協(xié)議,改用 SSH,部分還在支持。
telnet 不僅能夠登錄遠(yuǎn)程,然后進(jìn)行遠(yuǎn)程操作,還能查看遠(yuǎn)程服務(wù)器狀態(tài),某端口是否可訪(fǎng)問(wèn)。
這部分內(nèi)容,暫時(shí)不作深入了解,有需要的小伙伴可自行搜索了解。
9. scp(secure copy) 命令
用于遠(yuǎn)程文件(夾)拷貝的命令,基于 ssh。而類(lèi)似功能的命令 cp 只能在本地拷貝。
格式:
scp [options] 《source_path》 《desti_path》
參數(shù)說(shuō)明(網(wǎng)上摘抄):
-1 強(qiáng)制scp命令使用協(xié)議 ssh1;-2 強(qiáng)制scp命令使用協(xié)議 ssh2; -4 強(qiáng)制scp命令只使用 IPv4 尋址;-6 強(qiáng)制scp命令只使用 IPv6 尋址;-B 使用批處理模式(傳輸過(guò)程中不詢(xún)問(wèn)傳輸口令或短語(yǔ));-C 允許壓縮。(將 -C 標(biāo)志傳遞給 ssh ,從而打開(kāi)壓縮功能); -p 保留原文件的修改時(shí)間,訪(fǎng)問(wèn)時(shí)間和訪(fǎng)問(wèn)權(quán)限;-q 不顯示傳輸進(jìn)度條;-r 遞歸復(fù)制整個(gè)目錄; -v 詳細(xì)方式顯示輸出。scp 和 ssh(1) 會(huì)顯示出整個(gè)過(guò)程的調(diào)試信息。這些信息用于調(diào)試連接,驗(yàn)證和配置問(wèn)題;-c cipher 以 cipher 將數(shù)據(jù)傳輸進(jìn)行加密,這個(gè)選項(xiàng)將直接傳遞給 ssh;-F ssh_config 指定一個(gè)替代的 ssh 配置文件,此參數(shù)直接傳遞給 ssh; -i identity_file 從指定文件中讀取傳輸時(shí)使用的密鑰文件,此參數(shù)直接傳遞給 ssh;-l limit 限定用戶(hù)所能使用的帶寬,以 `Kbit/s` 為單位;-o ssh_option 如果習(xí)慣于使用 `ssh_config(5)` 中的參數(shù)傳遞方式;-P port 注意是大寫(xiě)的P,port 是指定數(shù)據(jù)傳輸用到的端口號(hào);-S program 指定加密傳輸時(shí)所使用的程序,此程序必須能夠理解 ssh(1) 的選項(xiàng)。
10. zip 和 unzip 命令
壓縮、解壓命令。過(guò)于簡(jiǎn)單,具體使用不再描述。
11. gzip 命令
gzip 與 zip 的區(qū)別:
gzip 是一個(gè)壓縮工具,適用于壓縮單個(gè)文件,其壓縮的文件的后綴為 .gz。而 zip 是一種數(shù)據(jù)結(jié)構(gòu),類(lèi)似于 rar,其適用于壓縮多個(gè)文件。在 Linux 下,下載壓縮包的時(shí)候,多會(huì)看到有 tar.gz 后綴的文件,這種就是先用 tar 命令將多個(gè)文件打包成一個(gè)文件,然后再使用 gzip 命令進(jìn)行壓縮,得到 tar.gz 格式,更多細(xì)節(jié)見(jiàn):鏈接。
具體命令格式:
gzip [options] 《file or dir》
各參數(shù)說(shuō)明:
-a 或 --ascii 使用 ASCII 文字模式。-c 或 --stdout 或 --to-stdout 把壓縮后的文件輸出到標(biāo)準(zhǔn)輸出設(shè)備,不去更動(dòng)原始文件。-d 或 --decompress 或 ----uncompress 解開(kāi)壓縮文件。-f 或 --force 強(qiáng)行壓縮文件。不理會(huì)文件名稱(chēng)或硬連接是否存在以及該文件是否為符號(hào)連接。-h 或 --help 在線(xiàn)幫助。-l 或 --list 列出壓縮文件的相關(guān)信息。-L 或 --license 顯示版本與版權(quán)信息。-n 或 --no-name 壓縮文件時(shí),不保存原來(lái)的文件名稱(chēng)及時(shí)間戳記。-N 或 --name 壓縮文件時(shí),保存原來(lái)的文件名稱(chēng)及時(shí)間戳記。-q 或 --quiet 不顯示警告信息。-r 或 --recursive 遞歸處理,將指定目錄下的所有文件及子目錄一并處理。-S 《 壓縮字尾字符串 》 或 ----suffix 《 壓縮字尾字符串 》 更改壓縮字尾字符串。-t 或 --test 測(cè)試壓縮文件是否正確無(wú)誤。-v 或 --verbose 顯示指令執(zhí)行過(guò)程。-V 或 --version 顯示版本信息。-num 用指定的數(shù)字num調(diào)整壓縮的速度,-1 或 --fast 表示最快壓縮方法(低壓縮比),-9 或 --best 表示最慢壓縮方法(高壓縮比)。系統(tǒng)缺省值為 6。
舉幾個(gè)簡(jiǎn)單例子:
gzip * 是壓縮當(dāng)前目錄下所有文件,但是不包含子目錄:
susu@ubuntu:~/grep_test$ lsa.txt b.txt c.txt subDirsusu@ubuntu:~/grep_test$ gzip *gzip: subDir is a directory -- ignoredsusu@ubuntu:~/grep_test$ lsa.txt.gz b.txt.gz c.txt.gz subDirsusu@ubuntu:~/grep_test$
其逆過(guò)程(解壓)為 gzip -d *
susu@ubuntu:~/grep_test$ lsa.txt.gz b.txt.gz c.txt.gz subDirsusu@ubuntu:~/grep_test$ gzip -d *gzip: subDir is a directory -- ignoredsusu@ubuntu:~/grep_test$ lsa.txt b.txt c.txt subDirsusu@ubuntu:~/grep_test$
若解壓過(guò)程中需要列出詳細(xì)信息,則為:
susu@ubuntu:~/grep_test$ lsa.txt.gz b.txt.gz c.txt.gz subDirsusu@ubuntu:~/grep_test$ gzip -dv *a.txt.gz: 18.6% -- replaced with a.txtb.txt.gz: 19.7% -- replaced with b.txtc.txt.gz: 16.7% -- replaced with c.txtgzip: subDir is a directory -- ignoredsusu@ubuntu:~/grep_test$
其實(shí)就是多個(gè)參數(shù)選項(xiàng)的結(jié)合(-d and -v -》 -dv)。
若壓縮完了,想看每個(gè)壓縮文件的詳細(xì)信息,則用如下命令:
susu@ubuntu:~/grep_test$ lsa.txt.gz b.txt.gz c.txt.gz subDirsusu@ubuntu:~/grep_test$ gzip -l * compressed uncompressed ratio uncompressed_name 81 70 18.6% a.txt 77 66 19.7% b.txt 89 78 16.7% c.txtgzip: subDir is a directory -- ignored 247 214 -4.2% (totals)susu@ubuntu:~/grep_test$
因?yàn)橛幸粋€(gè)目錄,總是跳出來(lái)一個(gè) ignored 的信息,很討厭啊有木有,可使用 -r 選項(xiàng)進(jìn)行地柜壓縮,壓縮一個(gè)目錄下所有的文件(包括子目錄):
susu@ubuntu:~/grep_test$ lsa.txt b.txt c.txt subDirsusu@ubuntu:~/grep_test$ gzip -r *susu@ubuntu:~/grep_test$ lsa.txt.gz b.txt.gz c.txt.gz subDirsusu@ubuntu:~/grep_test$ cd subDir/susu@ubuntu:~/grep_test/subDir$ lsd.txt.gz e.txt.gzsusu@ubuntu:~/grep_test/subDir$
有了遞歸的壓縮,當(dāng)然也有遞歸的解壓,只需要把-d換成-dr即可。
12. ll 命令
每天都在使用 ls 命令,但是今天才知道 ll 和 ls 的區(qū)別,這里發(fā)個(gè)鏈接,可詳細(xì)了解,解釋的挺清楚?!緇inux ls和 ll 命令】:http://blog.csdn.net/cgzhello1/article/details/7839534/
13. netstat 命令
作用:
顯示和各協(xié)議(TCP / IP / UDP / ICMP 等)相關(guān)的統(tǒng)計(jì)信息,檢驗(yàn)本機(jī)各端口的網(wǎng)絡(luò)連接情況。
命令較多,暫時(shí)不打算細(xì)看,詳細(xì)信息,這里給出鏈接,netstat命令詳解:http://www.cnblogs.com/peida/archive/2013/03/08/2949194.html。
14. kill 命令
作用:
終止正在運(yùn)行的進(jìn)程,進(jìn)程管理常用命令。
進(jìn)程分為前臺(tái)進(jìn)程和后臺(tái)進(jìn)程。前臺(tái)進(jìn)程,可以使用 ctrl+c 來(lái)終止,后臺(tái)進(jìn)程,只能使用 kill 命令終止。
首先用 ps 或者 top 來(lái)獲得進(jìn)程的 id,然后再使用 kill 命令。通常,kill 命令通過(guò)向進(jìn)程發(fā)送信號(hào)的方式來(lái)終止進(jìn)程。默認(rèn)情況下,使用編號(hào)為 15 的 TERM 信號(hào),TERM 信號(hào)能殺死所有不能捕獲該信號(hào)的進(jìn)程,對(duì)于捕獲該信號(hào)的進(jìn)程,使用編號(hào)為 9 的 kill 信號(hào),強(qiáng)行殺掉該進(jìn)程。
命令使用方式:
kill [-options] 《PID》
更多:kill命令詳解:http://www.cnblogs.com/peida/archive/2012/12/20/2825837.html。
15. set 命令
作用:
顯示系統(tǒng)中已經(jīng)存在的 shell 變量,以及設(shè)置 shell 變量的新變量值。更多說(shuō)明:linux set命令:http://man.linuxde.net/set。
16. su 命令
作用:
切換用戶(hù)。
上來(lái)就碰到一個(gè)錯(cuò)誤:
susu@ubuntu:/$ suPassword: su: Authentication failuresusu@ubuntu:/$
原因:是 root 用戶(hù)默認(rèn)是沒(méi)有密碼的,而上面的密碼部分,我輸入的是賬戶(hù) susu 對(duì)應(yīng)的密碼,并不是 root 的密碼。所有才會(huì)出錯(cuò)。
解決方式就是先給 root 設(shè)置密碼,在 susu 賬戶(hù)下就可以設(shè)置:
susu@ubuntu:/$ sudo passwd root Enter new UNIX password: Retype new UNIX password: passwd: password updated successfullysusu@ubuntu:/$
另外,用戶(hù)切換,如果想回到 root 用戶(hù),那么使用:
susu@ubuntu:~$ sudo -i[sudo] password for susu: root@ubuntu:~#
注意:這里的 passwd,輸入的是當(dāng)前賬戶(hù)(susu)對(duì)應(yīng)的密碼。
也可以使用:
susu@ubuntu:/root$ su rootPassword: root@ubuntu:~#
注意:這里的 passwd,輸入的是 root 賬戶(hù)對(duì)應(yīng)的密碼,而不是 susu 賬戶(hù)對(duì)應(yīng)的密碼。
如果由 root 用戶(hù)切換到普通用戶(hù),那么使用 su 《 普通用戶(hù)名 》 即可,而不能使用 sudo,在 root 用戶(hù)下,沒(méi)有 sudo 《 用戶(hù)名 》 命令。
susu@ubuntu:/$ sudo -iroot@ubuntu:~# su susususu@ubuntu:/root$ cd 。.susu@ubuntu:/$ lsbin dev initrd.img media proc sbin tmp vmlinuzboot etc lib mnt root srv usrcdrom home lost+found opt run sys varsusu@ubuntu:/$
-
Linux
+關(guān)注
關(guān)注
87文章
11304瀏覽量
209536 -
U盤(pán)
+關(guān)注
關(guān)注
7文章
489瀏覽量
63270 -
移動(dòng)硬盤(pán)
+關(guān)注
關(guān)注
2文章
175瀏覽量
44254
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論