序言?本篇文章主要講解了一些linux常用命令,主要講解模式是,命令介紹、命令參數(shù)格式、命令參數(shù)、命令常用參數(shù)示例。由于linux命令較多,我還特意選了一些日常使用較為頻繁的命令進(jìn)行講解,但還是免不了文章很長,建議大家收藏起來,用到的時候不會了再來閱讀。當(dāng)然學(xué)習(xí)linux命令最好的方法是學(xué)會使用linux自帶的man手冊,所有l(wèi)inux命令規(guī)范和使用細(xì)則都會在該手冊中講解的很清楚,我在書寫的過程中也是參考該手冊和日常使用情況。 如果還有哪些是大家希望再補充的命令,可以留言給我,我會持續(xù)更新該文章,同時也作為我學(xué)習(xí)和工作的手冊。 Linux初級指令ls ——Listls 介紹?這是我學(xué)Linux的第一個命令,相信也是很多人學(xué)習(xí)Linux的第一個命令。ls全稱list.
?官方的說的很清楚,默認(rèn)列出當(dāng)前目錄,所以可以列出其他目錄或者路徑下的文件信息或者目錄信息。 ?ls還可以列出指定目錄下的文件列表。 ls命令參數(shù)-a 列出指定目錄下的所有文件,包括隱藏文件 -c 使用最后一次更改文件狀態(tài)以進(jìn)行排序(-t)或長時間打印(-l)的時間 -h 與-l選項一起使用時,請使用單位后綴:Byte、Kilobyte、mete、gb、tb和Petabyte,以便使用以2為基數(shù)的大小將數(shù)字減少到3或更少 -l 長格式列表。(見下文)。如果輸出到終端,則所有文件大小的總和將輸出到長清單前面的一行中 -n 以數(shù)字形式顯示用戶和組id,而不是在長(-l)輸出中轉(zhuǎn)換為用戶或組名。這個選項默認(rèn)打開-l選項 -o 以長格式列出,但省略組id -s 顯示每個文件實際使用的文件系統(tǒng)塊的數(shù)量,以512字節(jié)為單位,其中部分單元四舍五入為下一個整數(shù)值 -t 在按照字典順序?qū)Σ僮鲾?shù)排序之前,先按修改的時間排序(最近修改的是first) -u 使用最后一次訪問的時間,而不是最后一次修改文件進(jìn)行排序 pwd介紹?打印當(dāng)前工作目錄的完整路徑名。 touch (change file timestamps)touch介紹?將每個文件的訪問和修改時間更新為當(dāng)前時間。除非提供-c或-h,否則將不存在的FILE參數(shù)創(chuàng)建為空。 touch命令參數(shù)-a 或--time=atime或--time=access或--time=use 只更改存取時間。 -c 或--no-create 不建立任何文檔。 -d 使用指定的日期時間,而非現(xiàn)在的時間。 -f 此參數(shù)將忽略不予處理,僅負(fù)責(zé)解決BSD版本touch指令的兼容性問題。 -m 或--time=mtime或--time=modify 只更改變動時間。 -r 把指定文檔或目錄的日期時間,統(tǒng)統(tǒng)設(shè)成和參考文檔或目錄的日期時間相同。 -t 使用指定的日期時間,而非現(xiàn)在的時間。cat介紹
cat命令參數(shù)-A, --show-all 等價于 -vET -b, --number-nonblank 對非空輸出行編號 -e 等價于 -vE -E, --show-ends 在每行結(jié)束處顯示 -n, --number 對輸出的所有行編號,由1開始對所有輸出的行數(shù)編號 -s, --squeeze-blank 有連續(xù)兩行以上的空白行,就代換為一行的空白行 -t 與 -vT 等價 -T, --show-tabs 將跳格字符顯示為 ^I -u (被忽略) -v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
mkdir —— Make Directorymkdir介紹
mkdir命令參數(shù)-m, --mode=模式,設(shè)定權(quán)限<模式> (類似 chmod),而不是 rwxrwxrwx 減 umask -p, --parents 可以是一個路徑名稱。此時若路徑中的某些目錄尚不存在,加上此選項后,系統(tǒng)將自動建立好那些尚不存在的目錄,即一次可以建立多個目錄; -v, --verbose 每次創(chuàng)建新目錄都顯示信息 --help 顯示此幫助信息并退出 --version 輸出版本信息并退出 cd介紹?切換當(dāng)前目錄至指定目錄 ?cd命令沒什么參數(shù)就是切換目錄到指定路徑下,較為簡單,但是使用評率極高。 rm&rmdir —— Remove Directoryrm介紹
?rm命令使用時還是需要注意的,他的刪除恢復(fù)比較麻煩,有些系統(tǒng)會自帶-i參數(shù),輸入命令之后還有一個確認(rèn)步驟,有些是直接刪掉了,是真刪掉,從內(nèi)存抹掉那種(其實底層是讓該文件指針不指向該文件的內(nèi)存塊,內(nèi)存上的內(nèi)容原則上是存在的,但是恢復(fù)會比較復(fù)雜,需要掃描整塊內(nèi)存塊才能拿到內(nèi)容)。不要輕易刪掉你寫的重要代碼,hh。 rm命令參數(shù)-f, --force 忽略不存在的文件,從不給出提示。 -i, --interactive 進(jìn)行交互式刪除 -r, -R, --recursive 指示rm將參數(shù)中列出的全部目錄和子目錄均遞歸地刪除。 -d, --dir 刪除空目錄 mv —— Movemv介紹就是移動目錄或者文件到置頂目錄下,同時具有重命名的功能。mv命令參數(shù)-b :若需覆蓋文件,則覆蓋前先行備份。 -f :force 強制的意思,如果目標(biāo)文件已經(jīng)存在,不會詢問而直接覆蓋; -i :若目標(biāo)文件 (destination) 已經(jīng)存在時,就會詢問是否覆蓋 -n:不要覆蓋現(xiàn)有文件。 (-n選項將覆蓋以前的任何-f或-i選項。) -u :若目標(biāo)文件已經(jīng)存在,且 source 比較新,才會更新(update) ?這個命令在寫makefile文件的時候用起來很舒服,可以把編譯的結(jié)果移到指定目錄并重命名。 cp —— Copycp介紹
命令參數(shù)-a, --archive 等于-dR --preserve=all --backup[=CONTROL 為每個已存在的目標(biāo)文件創(chuàng)建備份 -b 類似--backup 但不接受參數(shù) --copy-contents 在遞歸處理是復(fù)制特殊文件內(nèi)容 -d 等于--no-dereference --preserve=links -f, --force 如果目標(biāo)文件無法打開則將其移除并重試(當(dāng) -n 選項 存在時則不需再選此項) -i, --interactive 覆蓋前詢問(使前面的 -n 選項失效) -H 跟隨源文件中的命令行符號鏈接 -l, --link 鏈接文件而不復(fù)制 -L, --dereference 總是跟隨符號鏈接 -n, --no-clobber 不要覆蓋已存在的文件(使前面的 -i 選項失效) -P, --no-dereference 不跟隨源文件中的符號鏈接 -p 等于--preserve=模式,所有權(quán),時間戳 --preserve[=屬性列表 保持指定的屬性(默認(rèn):模式,所有權(quán),時間戳),如果 可能保持附加屬性:環(huán)境、鏈接、xattr 等 -R, -r, --recursive 復(fù)制目錄及目錄內(nèi)的所有項目 echoecho介紹
這條命令較為簡單,常用來打印變量、文本內(nèi)容到 $PWD 是取當(dāng)前路徑,然后echo到標(biāo)準(zhǔn)輸出,一般echo $name 用來查看某個環(huán)境變量的值 head&tailhead介紹
tail命令完全和他相反,是從尾部開始展示文本,但是他的參數(shù)用法更多。 -f 循環(huán)讀取 -q 不顯示處理信息 -v 顯示詳細(xì)的處理信息 -c<數(shù)目> 顯示的字節(jié)數(shù) -n<行數(shù)> 顯示行數(shù) --pid=PID 與-f合用,表示在進(jìn)程ID,PID死掉之后結(jié)束. -q, --quiet, --silent 從不輸出給出文件名的首部 -s, --sleep-interval=S 與-f合用,表示在每次反復(fù)的間隔休眠S秒 tail和head命令經(jīng)常用來查看日志,像我現(xiàn)在基本每天都會用,我的日志文件沒辦法用vim或者cat這樣去看(因為我負(fù)責(zé)的業(yè)務(wù)日志量每天都是幾十個G),要么用tail,要么用more&less(下面會講)。 more&lessmore介紹
more&less最重要的一點就是流式讀取,支持翻頁,像cat命令是全部讀取輸出到標(biāo)準(zhǔn)輸出,如果文件太大會把屏幕刷滿的,根本沒辦法看。 more命令參數(shù)+n 從笫n行開始顯示 -n 定義屏幕大小為n行 +/pattern 在每個檔案顯示前搜尋該字串(pattern),然后從該字串前兩行之后開始顯示 -c 從頂部清屏,然后顯示 -d 提示“Press space to continue,’q’ to quit(按空格鍵繼續(xù),按q鍵退出)”,禁用響鈴功能 -l 忽略Ctrl+l(換頁)字符 -p 通過清除窗口而不是滾屏來對文件進(jìn)行換頁,與-c選項相似 -s 把連續(xù)的多個空行顯示為一行 -u 把文件內(nèi)容中的下畫線去掉 less 與 more 類似,但使用 less 可以隨意瀏覽文件,而 more 僅能向前移動,卻不能向后移動,而且 less 在查看之前不會加載整個文件 wcwc介紹
這條命令對我來說還是比較深刻的,我剛學(xué)習(xí)編程不久的時候,我感覺我寫的代碼很多了,那個時候我就很想知道我寫了多少行代碼了,一時興起,說干就干,直接寫了個程序去統(tǒng)計了一把,寫完之后還感覺自己蠻厲害的,誰知道之后學(xué)習(xí)到這個wc,然后就覺得自己還是嫩了點,還是要多學(xué)習(xí)。 wc命令參數(shù)-c 統(tǒng)計字節(jié)數(shù)。 -l 統(tǒng)計行數(shù)。 -m 統(tǒng)計字符數(shù)。這個標(biāo)志不能與 -c 標(biāo)志一起使用。 -w 統(tǒng)計字?jǐn)?shù)。一個字被定義為由空白、跳格或換行字符分隔的字符串。 -L 打印最長行的長度。 date & caldate介紹
date命令參數(shù)%H 小時(以00-23來表示)。 %I 小時(以01-12來表示)。 %K 小時(以0-23來表示)。 %l 小時(以0-12來表示)。 %M 分鐘(以00-59來表示)。 %P AM或PM。 %r 時間(含時分秒,小時以12小時AM/PM來表示)。 %s 總秒數(shù)。起算時間為1970-01-01 00:00:00 UTC。 %S 秒(以本地的慣用法來表示)。 %T 時間(含時分秒,小時以24小時制來表示)。 %X 時間(以本地的慣用法來表示)。 %Z 市區(qū)。 %a 星期的縮寫。 %A 星期的完整名稱。 %b 月份英文名的縮寫。 %B 月份的完整英文名稱。 %c 日期與時間。只輸入date指令也會顯示同樣的結(jié)果。 %d 日期(以01-31來表示)。 %D 日期(含年月日)。 %j 該年中的第幾天。 %m 月份(以01-12來表示)。 %U 該年中的周數(shù)。 %w 該周的天數(shù),0代表周日,1代表周一,異詞類推。 %x 日期(以本地的慣用法來表示)。 %y 年份(以00-99來表示)。 %Y 年份(以四位數(shù)來表示)。 %n 在顯示時,插入新的一行。 %t 在顯示時,插入tab。 MM 月份(必要) DD 日期(必要) hh 小時(必要) mm 分鐘(必要) ss 秒(選擇性) -d<字符串> 顯示字符串所指的日期與時間。字符串前后必須加上雙引號。 -s<字符串> 根據(jù)字符串來設(shè)置日期與時間。字符串前后必須加上雙引號。 -u 顯示GMT。 cal介紹cal命令可以用來顯示公歷(陽歷)日歷。 cal命令參數(shù)-1 顯示一個月的月歷 -3 顯示系統(tǒng)前一個月,當(dāng)前月,下一個月的月歷 -s 顯示星期天為一個星期的第一天,默認(rèn)的格式 -m 顯示星期一為一個星期的第一天-j 顯示在當(dāng)年中的第幾天(一年日期按天算,從1月1號算起,默認(rèn)顯示當(dāng)前月在一年中的天數(shù))-y 顯示當(dāng)前年份的日歷 whichwhich介紹
whereiswhereis介紹whereis命令只能用于程序名的搜索,而且只搜索二進(jìn)制文件(參數(shù)-b)、man說明文件(參數(shù)-m)和源代碼文件(參數(shù)-s)。如果省略參數(shù),則返回所有信息。 whereis參數(shù)格式whereis [program ...] whereis命令參數(shù)-b 定位可執(zhí)行文件。 -m 定位幫助文件。 -s 定位源代碼文件。 -u 搜索默認(rèn)路徑下除可執(zhí)行文件、源代碼文件、幫助文件以外的其它文件。 -B 指定搜索可執(zhí)行文件的路徑。 -M 指定搜索幫助文件的路徑。 -S 指定搜索源代碼文件的路徑。 nlnl介紹nl命令在linux系統(tǒng)中用來計算文件中行號。nl 可以將輸出的文件內(nèi)容自動的加上行號!其默認(rèn)的結(jié)果與 cat -n 有點不太一樣, nl 可以將行號做比較多的顯示設(shè)計,包括位數(shù)與是否自動補齊 0 等等的功能。 nl命令參數(shù)-b :指定行號指定的方式,主要有兩種: -b a :表示不論是否為空行,也同樣列出行號(類似 cat -n); -b t :如果有空行,空的那一行不要列出行號(默認(rèn)值); -n :列出行號表示的方法,主要有三種: -n ln :行號在螢?zāi)坏淖钭蠓斤@示; -n rn :行號在自己欄位的最右方顯示,且不加 0 ; -n rz :行號在自己欄位的最右方顯示,且加 0 ; -w :行號欄位的占用的位數(shù)。 -p 在邏輯定界符處不重新開始計算。 psps介紹
ps命令參數(shù)a 顯示所有進(jìn)程 -a 顯示同一終端下的所有程序 -A 顯示所有進(jìn)程 c 顯示進(jìn)程的真實名稱 -N 反向選擇 -e 等于“-A” e 顯示環(huán)境變量 f 顯示程序間的關(guān)系 -H 顯示樹狀結(jié)構(gòu) r 顯示當(dāng)前終端的進(jìn)程 T 顯示當(dāng)前終端的所有程序 u 指定用戶的所有進(jìn)程 -au 顯示較詳細(xì)的資訊 -aux 顯示所有包含其他使用者的行程 -C<命令> 列出指定命令的狀況 --lines<行數(shù)> 每頁顯示的行數(shù) --width<字符數(shù)> 每頁顯示的字符數(shù) kill&killallkill介紹
kill命令參數(shù)-l 信號,若果不加信號的編號參數(shù),則使用“-l”參數(shù)會列出全部的信號名稱 -a 當(dāng)處理當(dāng)前進(jìn)程時,不限制命令名和進(jìn)程號的對應(yīng)關(guān)系 -p 指定kill 命令只打印相關(guān)進(jìn)程的進(jìn)程號,而不發(fā)送任何信號 -s 指定發(fā)送信號 -u 指定用戶 解釋HUP 1 終端斷線INT 2 中斷(同 Ctrl + C)QUIT 3 退出(同 Ctrl + \)TERM 15 終止KILL 9 強制終止CONT 18 繼續(xù)(與STOP相反, fg/bg命令)STOP 19 暫停(同 Ctrl + Z) kill -9 是我們使用的最多的信號,其實這種方式一點也不優(yōu)雅,應(yīng)該使用kill -15信號,大部分程序接收到SIGTERM信號后,會先釋放自己的資源,然后再停止。但是也有程序可能接收信號后,做一些其他的事情(如果程序正在等待IO,可能就不會立馬做出響應(yīng),等到io完成后在結(jié)束),也就是說,SIGTERM多半是會被阻塞的。 講到這里,linux基本指令差不多了夠用了,差不多可以上你的服務(wù)器上隨便搞搞了。但是也只是簡單看看,更多的操作指令請看進(jìn)階部分。 Linux進(jìn)階指令findfind介紹
這個命令使用頻率極高,如果對這個命令了解很透徹,在日常工作中可以事半功倍。這個命令的參數(shù)較多,常用的參數(shù)我會在下面常用參數(shù)示例講清楚 find命令參數(shù)-print: find命令將匹配的文件輸出到標(biāo)準(zhǔn)輸出。 -exec: find命令對匹配的文件執(zhí)行該參數(shù)所給出的shell命令。相應(yīng)命令的形式為'command' { } \;,注意{ }和\;之間的空格。 -name 按照文件名查找文件。 -perm 按照文件權(quán)限來查找文件。 -prune 使用這一選項可以使find命令不在當(dāng)前指定的目錄中查找,如果同時使用-depth選項,那么-prune將被find命令忽略。 -user 按照文件屬主來查找文件。 -group 按照文件所屬的組來查找文件。 -mtime -n +n 按照文件的更改時間來查找文件, - n表示文件更改時間距現(xiàn)在n天以內(nèi),+ n表示文件更改時間距現(xiàn)在n天以前。find命令還有-atime和-ctime 選項,但它們都和-m time選項。 -nogroup 查找無有效所屬組的文件,即該文件所屬的組在/etc/groups中不存在。 -nouser 查找無有效屬主的文件,即該文件的屬主在/etc/passwd中不存在。 -newer file1 ! file2 查找更改時間比文件file1新但比文件file2舊的文件。 -type 查找某一類型的文件,諸如:
-size n:[c] 查找文件長度為n塊的文件,帶有c時表示文件長度以字節(jié)計。-depth:在查找文件時,首先查找當(dāng)前目錄中的文件,然后再在其子目錄中查找。 -fstype:查找位于某一類型文件系統(tǒng)中的文件,這些文件系統(tǒng)類型通??梢栽谂渲梦募?etc/fstab中找到,該配置文件中包含了本系統(tǒng)中有關(guān)文件系統(tǒng)的信息。 -mount:在查找文件時不跨越文件系統(tǒng)mount點。 -follow:如果find命令遇到符號鏈接文件,就跟蹤至鏈接所指向的文件。 -cpio:對匹配的文件使用cpio命令,將這些文件備份到磁帶設(shè)備中。 另外,下面三個的區(qū)別: -amin n 查找系統(tǒng)中最后N分鐘訪問的文件 -atime n 查找系統(tǒng)中最后n*24小時訪問的文件 -cmin n 查找系統(tǒng)中最后N分鐘被改變文件狀態(tài)的文件 -ctime n 查找系統(tǒng)中最后n*24小時被改變文件狀態(tài)的文件 -mmin n 查找系統(tǒng)中最后N分鐘被改變文件數(shù)據(jù)的文件 -mtime n 查找系統(tǒng)中最后n*24小時被改變文件數(shù)據(jù)的文件 find常用參數(shù)示例-name參數(shù)常用參數(shù)示例 查找/user目錄下所有以.log結(jié)尾的文件 -exec 參數(shù)后面跟的是command,它的終止是以;為結(jié)束標(biāo)志的,所以這句命令后面的分號是不可缺少的,考慮到各個系統(tǒng)中分號會有不同的意義,所以前面加反斜杠。 舉一個我在工作中經(jīng)常用到的例子,我有個日志目錄,我系統(tǒng)的所有日志都會打到這個目錄,目錄的日志文件命名很隨意,我沒辦法說根據(jù)名字刪除,于是我想到用日期的方式刪除,保存一個月的日志即可。 $find /home/midou/logs// -mtime +30 -name '*.log.gz' -exec rm -rf {} \;# {} 這個是語法不能丟了 ,還有結(jié)尾的 ; 也不能丟了。 其實我把這個命令放在我的一個系統(tǒng)crontab文件里面,每天執(zhí)行一次,這樣我的日志目錄就不用了手動清理。corntab使用詳解在后面的命令中會講到。 ?-exec 后面可以接任何命令,你可以靈活運用,再結(jié)合到前面的-name參數(shù),可以玩出花來。 grepgrep介紹
?這是個我每天都會用到的命令,我是做基礎(chǔ)服務(wù)的,用我服務(wù)的人不免會遇到問題,這時候我就去要去看日志了,日志都是G級別的,當(dāng)然不能用vim打開去搜索,會把系統(tǒng)掛掉,vim是全部文檔加載到內(nèi)存。這時候就需要使用grep命令去根據(jù)一些關(guān)鍵信息匹配查找了。(當(dāng)然有些同學(xué)可能會說,既然經(jīng)常查日志的話,就不能把日志接入到ElasticSearch這種可搜索的組建中,很好,用技術(shù)去解決實際問題。我們也是這樣做的,但總免不了還是會去服務(wù)器上查一下日志,學(xué)會這個命令沒錯的) grep命令參數(shù)-a --text 不要忽略二進(jìn)制的數(shù)據(jù)。 -A<顯示行數(shù)> --after-context=<顯示行數(shù)> #除了顯示符合范本樣式的那一列之外,并顯示該行之后的內(nèi)容。 -b --byte-offset #在顯示符合樣式的那一行之前,標(biāo)示出該行第一個字符的編號。 -B<顯示行數(shù)> --before-context=<顯示行數(shù)> #除了顯示符合樣式的那一行之外,并顯示該行之前的內(nèi)容。 -c --count #計算符合樣式的列數(shù)。 -C<顯示行數(shù)> --context=<顯示行數(shù)>或-<顯示行數(shù)> #除了顯示符合樣式的那一行之外,并顯示該行之前后的內(nèi)容。 -d <動作> --directories=<動作> #當(dāng)指定要查找的是目錄而非文件時,必須使用這項參數(shù),否則grep指令將回報信息并停止動作。 -e<范本樣式> --regexp=<范本樣式> #指定字符串做為查找文件內(nèi)容的樣式。 -E --extended-regexp #將樣式為延伸的普通表示法來使用。 -f<規(guī)則文件> --file=<規(guī)則文件> #指定規(guī)則文件,其內(nèi)容含有一個或多個規(guī)則樣式,讓grep查找符合規(guī)則條件的文件內(nèi)容,格式為每行一個規(guī)則樣式。 -F --fixed-regexp #將樣式視為固定字符串的列表。 -G --basic-regexp #將樣式視為普通的表示法來使用。 -h --no-filename #在顯示符合樣式的那一行之前,不標(biāo)示該行所屬的文件名稱。 -H --with-filename #在顯示符合樣式的那一行之前,表示該行所屬的文件名稱。 -i --ignore-case #忽略字符大小寫的差別。 -l --file-with-matches #列出文件內(nèi)容符合指定的樣式的文件名稱。 -L --files-without-match #列出文件內(nèi)容不符合指定的樣式的文件名稱。 -n --line-number #在顯示符合樣式的那一行之前,標(biāo)示出該行的列數(shù)編號。 -q --quiet或--silent #不顯示任何信息。 -r --recursive #此參數(shù)的效果和指定“-d recurse”參數(shù)相同。 -s --no-messages #不顯示錯誤信息。 -v --revert-match #顯示不包含匹配文本的所有行。 -V --version #顯示版本信息。 -w --word-regexp #只顯示全字符合的列。 -x --line-regexp #只顯示全列符合的列。 -y 此參數(shù)的效果和指定“-i”參數(shù)相同。 ?掌握grep的常用參數(shù),會讓你查找日志或者內(nèi)容非常輕松。特別是當(dāng)你數(shù)據(jù)量很大的時候,沒辦法使用vi或者vim打開的情況下。 cutcut介紹?這個命令對我來說很有故事,當(dāng)時我在學(xué)完C語言,簡單了解了些linux上的基本命令,有次實習(xí)面試,面試官問我linux系統(tǒng)用過么,我斬釘截鐵的說用過,面試官簡單的用vim寫了一行hello world。對我說,你怎樣通過linux命令吧這個文本里面的hello world搞成十行,并且取出每一列的第七個字符。 當(dāng)時的我真的是心里一群草泥馬跑過,這可難道我了,我沉思了片刻,說只要十行么?多點行么?。當(dāng)然不行,只要十行,取每行的第七個字符續(xù)沉思了片刻,拿起面試官的電腦就是一頓操作,于是有了我記憶深刻的下面這一行命令。 ?面試官一看,微微點了下頭(肯定在心里默念,小伙子,不錯啊)。所以這個命令我印象蠻深刻的。當(dāng)然還要其他方式實現(xiàn)面試官的要求,比如cut第七個地府,寫個循環(huán)重定向到管道,再到原文件。
cut命令參數(shù)-b:僅顯示行中指定直接范圍的內(nèi)容; -c:僅顯示行中指定范圍的字符; -d:指定字段的分隔符,默認(rèn)的字段分隔符為“TAB”; -f:顯示指定字段的內(nèi)容; -n:與“-b”選項連用,不分割多字節(jié)字符; --complement:補足被選擇的字節(jié)、字符或字段; --out-delimiter=<字段分隔符>:指定輸出內(nèi)容是的字段分割符; diffdiff介紹
diff命令參數(shù)-b或--ignore-space-change 不檢查空格字符的不同。 -B或--ignore-blank-lines 不檢查空白行。 -c 顯示全部內(nèi)文,并標(biāo)出不同之處。 -C或--context 與執(zhí)行'-c-'指令相同。 -d或--minimal 使用不同的演算法,以較小的單位來做比較。 -D或ifdef 此參數(shù)的輸出格式可用于前置處理器巨集。 -e或--ed 此參數(shù)的輸出格式可用于ed的script文件。 -f或-forward-ed 輸出的格式類似ed的script文件,但按照原來文件的順序來顯示不同處。 -H或--speed-large-files 比較大文件時,可加快速度。 -l或--ignore-matching-lines 若兩個文件在某幾行有所不同,而這幾行同時都包含了選項中指定的字符或字符串,則不顯示這兩個文件的差異。 -i或--ignore-case 不檢查大小寫的不同。 -l或--paginate 將結(jié)果交由pr程序來分頁。 -n或--rcs 將比較結(jié)果以RCS的格式來顯示。 -N或--new-file 在比較目錄時,若文件A僅出現(xiàn)在某個目錄中,預(yù)設(shè)會顯示:Only in目錄:文件A若使用-N參數(shù),則diff會將文件A與一個空白的文件比較。 -p 若比較的文件為C語言的程序碼文件時,顯示差異所在的函數(shù)名稱。 -P或--unidirectional-new-file 與-N類似,但只有當(dāng)?shù)诙€目錄包含了一個第一個目錄所沒有的文件時,才會將這個文件與空白的文件做比較。 -q或--brief 僅顯示有無差異,不顯示詳細(xì)的信息。 -r或--recursive 比較子目錄中的文件。 -s或--report-identical-files 若沒有發(fā)現(xiàn)任何差異,仍然顯示信息。 -S或--starting-file 在比較目錄時,從指定的文件開始比較。 -t或--expand-tabs 在輸出時,將tab字符展開。 -T或--initial-tab 在每行前面加上tab字符以便對齊。 -u,-U或--unified= 以合并的方式來顯示文件內(nèi)容的不同。 -v或--version 顯示版本信息。 -w或--ignore-all-space 忽略全部的空格字符。 -W或--width 在使用-y參數(shù)時,指定欄寬。 -x或--exclude 不比較選項中所指定的文件或目錄。 -X或--exclude-from 您可以將文件或目錄類型存成文本文件,然后在=中指定此文本文件。 -y或--side-by-side 以并列的方式顯示文件的異同之處。 tar&gziptar介紹用來壓縮和解壓文件。tar本身不具有壓縮功能。他是調(diào)用壓縮功能實現(xiàn)的 tar命令參數(shù)-A 新增壓縮文件到已存在的壓縮 -B 設(shè)置區(qū)塊大小 -c 建立新的壓縮文件 -d 記錄文件的差別 -r 添加文件到已經(jīng)壓縮的文件 -u 添加改變了和現(xiàn)有的文件到已經(jīng)存在的壓縮文件 -x 從壓縮的文件中提取文件 -t 顯示壓縮文件的內(nèi)容 -z 支持gzip解壓文件 -j 支持bzip2解壓文件 -Z 支持compress解壓文件 -v 顯示操作過程 -l 文件系統(tǒng)邊界設(shè)置 -k 保留原有文件不覆蓋 -m 保留文件不被覆蓋 -W 確認(rèn)壓縮文件的正確性 -b 設(shè)置區(qū)塊數(shù)目 -C 切換到指定目錄 -f 指定壓縮文件 dudu介紹
du命令參數(shù)-a或-all 顯示目錄中個別文件的大小。 -b或-bytes 顯示目錄或文件大小時,以byte為單位。 -c或--total 除了顯示個別目錄或文件的大小外,同時也顯示所有目錄或文件的總和。 -k或--kilobytes 以KB(1024bytes)為單位輸出。 -m或--megabytes 以MB為單位輸出。 -s或--summarize 僅顯示總計,只列出最后加總的值。 -h或--human-readable 以K,M,G為單位,提高信息的可讀性。 -x或--one-file-xystem 以一開始處理時的文件系統(tǒng)為準(zhǔn),若遇上其它不同的文件系統(tǒng)目錄則略過。 -L<符號鏈接>或--dereference<符號鏈接> 顯示選項中所指定符號鏈接的源文件大小。 -S或--separate-dirs 顯示個別目錄的大小時,并不含其子目錄的大小。 -X<文件>或--exclude-from=<文件> 在<文件>指定目錄或文件。 --exclude=<目錄或文件> 略過指定的目錄或文件。 -D或--dereference-args 顯示指定符號鏈接的源文件大小。 -H或--si 與-h參數(shù)相同,但是K,M,G是以1000為換算單位。 -l或--count-links 重復(fù)計算硬件鏈接的文件。 dfdf介紹
df命令參數(shù)-a 全部文件系統(tǒng)列表 -h 方便閱讀方式顯示 -H 等于“-h”,但是計算式,1K=1000,而不是1K=1024 -i 顯示inode信息 -k 區(qū)塊為1024字節(jié) -l 只顯示本地文件系統(tǒng) -m 區(qū)塊為1048576字節(jié) --no-sync 忽略 sync 命令 -P 輸出格式為POSIX --sync 在取得磁盤信息前,先執(zhí)行sync命令 -T 文件系統(tǒng)類型 --block-size=<區(qū)塊大小> 指定區(qū)塊大小 -t<文件系統(tǒng)類型> 只顯示選定文件系統(tǒng)的磁盤信息 -x<文件系統(tǒng)類型> 不顯示選定文件系統(tǒng)的磁盤信息 lsoflsof介紹lsof(list open files)是一個列出當(dāng)前系統(tǒng)打開文件的工具。(在linux環(huán)境下,任何事物都以文件的形式存在) lsof可以打開的文件包括: 1.普通文件 2.目錄 3.網(wǎng)絡(luò)文件系統(tǒng)的文件 4.字符或設(shè)備文件 5.(函數(shù))共享庫 6.管道,命名管道 7.符號鏈接 8.網(wǎng)絡(luò)文件(例如:NFS file、網(wǎng)絡(luò)socket,unix域名socket) 9.還有其它類型的文件,等等 這個命令在我日常工作中使用場景很多,使用范圍很廣。 lsof命令參數(shù)-a 列出打開文件存在的進(jìn)程 -c<進(jìn)程名> 列出指定進(jìn)程所打開的文件 -g 列出GID號進(jìn)程詳情 -d<文件號> 列出占用該文件號的進(jìn)程 +d<目錄> 列出目錄下被打開的文件 +D<目錄> 遞歸列出目錄下被打開的文件 -n<目錄> 列出使用NFS的文件 -i<條件> 列出符合條件的進(jìn)程。(4、6、協(xié)議、:端口、 @ip ) -p<進(jìn)程號> 列出指定進(jìn)程號所打開的文件 -u 列出UID號進(jìn)程詳情 lsof輸出各列信息的意義如下: COMMAND:進(jìn)程的名稱 PID:進(jìn)程標(biāo)識符 PPID:父進(jìn)程標(biāo)識符(需要指定-R參數(shù)) USER:進(jìn)程所有者 PGID:進(jìn)程所屬組 FD:文件描述符,應(yīng)用程序通過文件描述符識別該文件。如cwd、txt等 pingping介紹
ping命令參數(shù)-d 使用Socket的SO_DEBUG功能。 -f 極限檢測。大量且快速地送網(wǎng)絡(luò)封包給一臺機(jī)器,看它的回應(yīng)。 -n 只輸出數(shù)值。 -q 不顯示任何傳送封包的信息,只顯示最后的結(jié)果。 -r 忽略普通的Routing Table,直接將數(shù)據(jù)包送到遠(yuǎn)端主機(jī)上。通常是查看本機(jī)的網(wǎng)絡(luò)接口是否有問題。 -R 記錄路由過程。 -v 詳細(xì)顯示指令的執(zhí)行過程。 -c 數(shù)目:在發(fā)送指定數(shù)目的包后停止。 -i 秒數(shù):設(shè)定間隔幾秒送一個網(wǎng)絡(luò)封包給一臺機(jī)器,預(yù)設(shè)值是一秒送一次。 -I 網(wǎng)絡(luò)界面:使用指定的網(wǎng)絡(luò)界面送出數(shù)據(jù)包。 -l 前置載入:設(shè)置在送出要求信息之前,先行發(fā)出的數(shù)據(jù)包。 -p 范本樣式:設(shè)置填滿數(shù)據(jù)包的范本樣式。 -s 字節(jié)數(shù):指定發(fā)送的數(shù)據(jù)字節(jié)數(shù),預(yù)設(shè)值是56,加上8字節(jié)的ICMP頭,一共是64ICMP數(shù)據(jù)字節(jié)。 -t 存活數(shù)值:設(shè)置存活數(shù)值TTL的大小。 ping,在日常工作中都是簡單的用來測試本機(jī)與其他機(jī)器之間的網(wǎng)絡(luò)通信,當(dāng)然如果了解這些參數(shù)的話,會有更多的用法。 ping命令參數(shù)
netstatnetstat介紹
netstat命令參數(shù)-a或–all 顯示所有連線中的Socket。 -A<網(wǎng)絡(luò)類型>或–<網(wǎng)絡(luò)類型> 列出該網(wǎng)絡(luò)類型連線中的相關(guān)地址。 -c或–continuous 持續(xù)列出網(wǎng)絡(luò)狀態(tài)。 -C或–cache 顯示路由器配置的快取信息。 -e或–extend 顯示網(wǎng)絡(luò)其他相關(guān)信息。 -F或–fib 顯示FIB。 -g或–groups 顯示多重廣播功能群組組員名單。 -h或–help 在線幫助。 -i或–interfaces 顯示網(wǎng)絡(luò)界面信息表單。 -l或–listening 顯示監(jiān)控中的服務(wù)器的Socket。 -M或–masquerade 顯示偽裝的網(wǎng)絡(luò)連線。 -n或–numeric 直接使用IP地址,而不通過域名服務(wù)器。 -N或–netlink或–symbolic 顯示網(wǎng)絡(luò)硬件外圍設(shè)備的符號連接名稱。 -o或–timers 顯示計時器。 -p或–programs 顯示正在使用Socket的程序識別碼和程序名稱。 -r或–route 顯示Routing Table。 -s或–statistice 顯示網(wǎng)絡(luò)工作信息統(tǒng)計表。 -t或–tcp 顯示TCP傳輸協(xié)議的連線狀況。 -u或–udp 顯示UDP傳輸協(xié)議的連線狀況。 -v或–verbose 顯示指令執(zhí)行過程。 -V或–version 顯示版本信息。 -w或–raw 顯示RAW傳輸協(xié)議的連線狀況。 -x或–unix 此參數(shù)的效果和指定”-A unix”參數(shù)相同。 –ip或–inet 此參數(shù)的效果和指定”-A inet”參數(shù)相同。 ifconfigifconfig介紹
ifconfig命令參數(shù)up 啟動指定網(wǎng)絡(luò)設(shè)備/網(wǎng)卡。 down 關(guān)閉指定網(wǎng)絡(luò)設(shè)備/網(wǎng)卡。該參數(shù)可以有效地阻止通過指定接口的IP信息流,如果想永久地關(guān)閉一個接口,我們還需要從核心路由表中將該接口的路由信息全部刪除。 arp 設(shè)置指定網(wǎng)卡是否支持ARP協(xié)議。 -promisc 設(shè)置是否支持網(wǎng)卡的promiscuous模式,如果選擇此參數(shù),網(wǎng)卡將接收網(wǎng)絡(luò)中發(fā)給它所有的數(shù)據(jù)包 -allmulti 設(shè)置是否支持多播模式,如果選擇此參數(shù),網(wǎng)卡將接收網(wǎng)絡(luò)中所有的多播數(shù)據(jù)包 -a 顯示全部接口信息 -s 顯示摘要信息(類似于 netstat -i) add 給指定網(wǎng)卡配置IPv6地址 del 刪除指定網(wǎng)卡的IPv6地址 <硬件地址> 配置網(wǎng)卡最大的傳輸單元 mtu<字節(jié)數(shù)> 設(shè)置網(wǎng)卡的最大傳輸單元 (bytes) netmask<子網(wǎng)掩碼> 設(shè)置網(wǎng)卡的子網(wǎng)掩碼。掩碼可以是有前綴0x的32位十六進(jìn)制數(shù),也可以是用點分開的4個十進(jìn)制數(shù)。如果不打算將網(wǎng)絡(luò)分成子網(wǎng),可以不管這一選項;如果要使用子網(wǎng),那么請記住,網(wǎng)絡(luò)中每一個系統(tǒng)必須有相同子網(wǎng)掩碼。 tunel 建立隧道 dstaddr 設(shè)定一個遠(yuǎn)端地址,建立點對點通信 -broadcast<地址> 為指定網(wǎng)卡設(shè)置廣播協(xié)議 -pointtopoint<地址> 為網(wǎng)卡設(shè)置點對點通訊協(xié)議 multicast 為網(wǎng)卡設(shè)置組播標(biāo)志 address 為網(wǎng)卡設(shè)置IPv4地址 txqueuelen<長度> 為網(wǎng)卡設(shè)置傳輸列隊的長度 解釋
hostnamehostname介紹
hostname命令參數(shù)-v:詳細(xì)信息模式;-a:顯示主機(jī)別名;-d:顯示DNS域名;-f:顯示FQDN名稱;-i:顯示主機(jī)的ip地址;-s:顯示短主機(jī)名稱,在第一個點處截斷;-y:顯示NIS域名。 traceroutetraceroute介紹
traceroute命令參數(shù)-d 使用Socket層級的排錯功能。 -f 設(shè)置第一個檢測數(shù)據(jù)包的存活數(shù)值TTL的大小。 -F 設(shè)置勿離斷位。 -g 設(shè)置來源路由網(wǎng)關(guān),最多可設(shè)置8個。 -i 使用指定的網(wǎng)絡(luò)界面送出數(shù)據(jù)包。 -I 使用ICMP回應(yīng)取代UDP資料信息。 -m 設(shè)置檢測數(shù)據(jù)包的最大存活數(shù)值TTL的大小。 -n 直接使用IP地址而非主機(jī)名稱。 -p 設(shè)置UDP傳輸協(xié)議的通信端口。 -r 忽略普通的Routing Table,直接將數(shù)據(jù)包送到遠(yuǎn)端主機(jī)上。 -s 設(shè)置本地主機(jī)送出數(shù)據(jù)包的IP地址。 -t 設(shè)置檢測數(shù)據(jù)包的TOS數(shù)值。 -v 詳細(xì)顯示指令的執(zhí)行過程。 -w 設(shè)置等待遠(yuǎn)端主機(jī)回報的時間。 -x 開啟或關(guān)閉數(shù)據(jù)包的正確性檢驗。 解釋記錄按序列號從1開始,每行紀(jì)錄就是一跳 ,每跳表示一個網(wǎng)關(guān),我們看到每行有三個時間,單位是 ms,其實就是-q的默認(rèn)參數(shù)。探測數(shù)據(jù)包向每個網(wǎng)關(guān)發(fā)送三個數(shù)據(jù)包后,網(wǎng)關(guān)響應(yīng)后返回的時間;如果您用 traceroute -q 10 www.baidu.com,表示向每個網(wǎng)關(guān)發(fā)送10個數(shù)據(jù)包。 有時我們traceroute 一臺主機(jī)時,會看到有一些行是以星號表示的。出現(xiàn)這樣的情況,可能是防火墻封掉了ICMP的返回信息,所以我們得不到什么相關(guān)的數(shù)據(jù)包返回數(shù)據(jù)。 routeroute介紹
route命令參數(shù)-c 顯示更多信息 -n 不解析名字 -v 顯示詳細(xì)的處理信息 -F 顯示發(fā)送信息 -C 顯示路由緩存 -f 清除所有網(wǎng)關(guān)入口的路由表。 -p 與 add 命令一起使用時使路由具有永久性。 add:添加一條新路由。 del:刪除一條路由。 -net:目標(biāo)地址是一個網(wǎng)絡(luò)。 -host:目標(biāo)地址是一個主機(jī)。 wgetwget介紹
wget命令參數(shù)
參數(shù)有點多,沒關(guān)系,常用的掌握,其他的用的時候再查 vmstatvmstat介紹
vmstat命令參數(shù)-a:顯示活躍和非活躍內(nèi)存 -f:顯示從系統(tǒng)啟動至今的fork數(shù)量 。 -m:顯示slabinfo -n:只在開始時顯示一次各字段名稱。 -s:顯示內(nèi)存相關(guān)統(tǒng)計信息及多種系統(tǒng)活動數(shù)量。 delay:刷新時間間隔。如果不指定,只顯示一條結(jié)果。 count:刷新次數(shù)。如果不指定刷新次數(shù),但指定了刷新時間間隔,這時刷新次數(shù)為無窮。 -d:顯示磁盤相關(guān)統(tǒng)計信息。 -p:顯示指定磁盤分區(qū)統(tǒng)計信息 -S:使用指定單位顯示。參數(shù)有 k 、K 、m 、M ,分別代表1000、1024、1000000、1048576字節(jié)(byte)。默認(rèn)單位為K(1024 bytes) 解釋Procs(進(jìn)程): r: 運行隊列中進(jìn)程數(shù)量 b: 等待IO的進(jìn)程數(shù)量 Memory(內(nèi)存): swpd: 使用虛擬內(nèi)存大小 free: 可用內(nèi)存大小 buff: 用作緩沖的內(nèi)存大小 cache: 用作緩存的內(nèi)存大小 Swap: si: 每秒從交換區(qū)寫到內(nèi)存的大小 so: 每秒寫入交換區(qū)的內(nèi)存大小 IO:(現(xiàn)在的Linux版本塊的大小為1024bytes) bi: 每秒讀取的塊數(shù) bo: 每秒寫入的塊數(shù) 系統(tǒng): in: 每秒中斷數(shù),包括時鐘中斷。 cs: 每秒上下文切換數(shù)。 CPU(以百分比表示): us: 用戶進(jìn)程執(zhí)行時間(user time) sy: 系統(tǒng)進(jìn)程執(zhí)行時間(system time) id: 空閑時間(包括IO等待時間),中央處理器的空閑時間 。以百分比表示。 wa: 等待IO時間 freefree介紹
free命令參數(shù)-b 以Byte為單位顯示內(nèi)存使用情況。 -k 以KB為單位顯示內(nèi)存使用情況。 -m 以MB為單位顯示內(nèi)存使用情況。 -g 以GB為單位顯示內(nèi)存使用情況。 -o 不顯示緩沖區(qū)調(diào)節(jié)列。 -s<間隔秒數(shù)> 持續(xù)觀察內(nèi)存使用狀況。 -t 顯示內(nèi)存總和列。 解釋total:總計物理內(nèi)存的大小。 used:已使用多大。 free:可用有多少。 Shared:多個進(jìn)程共享的內(nèi)存總額。 Buffers/cached:磁盤緩存的大小。 第三行(-/+ buffers/cached): used:已使用多大。 free:可用有多少。 toptop介紹
top命令參數(shù)-b 批處理 -c 顯示完整的治命令 -I 忽略失效過程 -s 保密模式 -S 累積模式 -i<時間> 設(shè)置間隔時間 -u<用戶名> 指定用戶名 -p<進(jìn)程號> 指定進(jìn)程 -n<次數(shù)> 循環(huán)顯示的次數(shù) 解釋第一行,任務(wù)隊列信息,同 uptime 命令的執(zhí)行結(jié)果,具體參數(shù)說明情況如下: 00:56:07 — 當(dāng)前系統(tǒng)時間 up 149 days, 14:40 — 系統(tǒng)已經(jīng)運行了149天14小時40分鐘(在這期間系統(tǒng)沒有重啟過的) 1users — 當(dāng)前有1個用戶登錄系統(tǒng) load average: 0.00, 0.02, 0.05 — load average后面的三個數(shù)分別是1分鐘、5分鐘、15分鐘的負(fù)載情況。 load average數(shù)據(jù)是每隔5秒鐘檢查一次活躍的進(jìn)程數(shù),然后按特定算法計算出的數(shù)值。如果這個數(shù)除以邏輯CPU的數(shù)量,結(jié)果高于5的時候就表明系統(tǒng)在超負(fù)荷運轉(zhuǎn)了。 第二行,Tasks — 任務(wù)(進(jìn)程) 系統(tǒng)現(xiàn)在共有254個進(jìn)程,其中處于運行中的有1個,253個在休眠(sleep),stoped狀態(tài)的有0個,zombie狀態(tài)(僵尸)的有0個。 第三行,cpu狀態(tài)信息 %Cpu(s): 1.4 us, 0.3 sy, 0.0 ni, 98.3 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st 1.4 us — 用戶空間占用CPU的百分比。 0.3 sy — 內(nèi)核空間占用CPU的百分比。 0.0 ni — 改變過優(yōu)先級的進(jìn)程占用CPU的百分比 98.3 id — 空閑CPU百分比 0.1 wa — IO等待占用CPU的百分比 0.0 hi — 硬中斷(Hardware IRQ)占用CPU的百分比 0.0 si — 軟中斷(Software Interrupts)占用CPU的百分比 第四行,內(nèi)存狀態(tài) 65808884 total 物理內(nèi)存總量 23749772 free 使用中的內(nèi)存總量 4586160 used 空閑內(nèi)存總量 37472952 buff/cache 緩存的內(nèi)存量 第五行,swap交換分區(qū)信息 0 total 交換區(qū)總量 0 use 使用的交換區(qū)總量 0 free 空閑交換區(qū)總量 60909608 avail Mem 可用交換區(qū)總量 第七行以下:各進(jìn)程(任務(wù))的狀態(tài)監(jiān)控 PID — 進(jìn)程id USER — 進(jìn)程所有者 PR — 進(jìn)程優(yōu)先級 NI — nice值。負(fù)值表示高優(yōu)先級,正值表示低優(yōu)先級 VIRT — 進(jìn)程使用的虛擬內(nèi)存總量,單位kb。VIRT=SWAP+RES RES — 進(jìn)程使用的、未被換出的物理內(nèi)存大小,單位kb。RES=CODE+DATA SHR — 共享內(nèi)存大小,單位kb S — 進(jìn)程狀態(tài)。D=不可中斷的睡眠狀態(tài) R=運行 S=睡眠 T=跟蹤/停止 Z=僵尸進(jìn)程 %CPU — 上次更新到現(xiàn)在的CPU時間占用百分比 %MEM — 進(jìn)程使用的物理內(nèi)存百分比 TIME+ — 進(jìn)程使用的CPU時間總計,單位1/100秒 COMMAND — 進(jìn)程名稱(命令名/命令行) sarsar介紹
sar命令參數(shù)-A:所有報告的總和 -u:輸出CPU使用情況的統(tǒng)計信息 -v:輸出inode、文件和其他內(nèi)核表的統(tǒng)計信息 -d:輸出每一個塊設(shè)備的活動信息 -r:輸出內(nèi)存和交換空間的統(tǒng)計信息 -b:顯示I/O和傳送速率的統(tǒng)計信息 -a:文件讀寫情況 -c:輸出進(jìn)程統(tǒng)計信息,每秒創(chuàng)建的進(jìn)程數(shù) -R:輸出內(nèi)存頁面的統(tǒng)計信息 -y:終端設(shè)備活動情況 -w:輸出系統(tǒng)交換活動信息 最后,小編想說:我是一名python開發(fā)工程師,整理了一套最新的python系統(tǒng)學(xué)習(xí)教程,想要這些資料的可以關(guān)注私信小編“01”即可,希望能對你有所幫助。 內(nèi)容來自今日頭條
|
|