用心分享,共同成長html
沒有什麼比天天進步一點點更重要了java
本文已收錄到個人github:https://github.com/midou-tech/articles/tree/master/docs/linux ,歡迎star和issues。node
本篇文章主要講解了一些linux經常使用命令,主要講解模式是,命令介紹、命令參數格式、命令參數、命令經常使用參數示例。因爲linux命令較多,我還特地選了一些平常使用較爲頻繁的命令進行講解,但仍是免不了文章很長,建議你們收藏起來,用到的時候不會了再來閱讀。固然學習linux命令最好的方法是學會使用linux自帶的man手冊,全部linux命令規範和使用細則都會在該手冊中講解的很清楚,我在書寫的過程當中也是參考該手冊和平常使用狀況。linux
若是還有哪些是你們但願再補充的命令,能夠留言給我,我會持續更新該文章,同時也做爲我學習和工做的手冊。
git
這是我學Linux的第一個命令,相信也是不少人學習Linux的第一個命令。ls全稱list.github
List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.面試
列出有關文件的信息(默認爲當前目錄)。若是沒有指定-cftuvSUX或——Sort,則按字母順序排序。正則表達式
官方的說的很清楚,默認列出當前目錄,因此能夠列出其餘目錄或者路徑下的文件信息或者目錄信息。算法
eg:shell
$ls /etc/hosts /etc/hosts
ls還能夠列出指定目錄下的文件列表。
ls [OPTION]... [FILE]...
-a 列出指定目錄下的全部文件,包括隱藏文件
-c 使用最後一次更改文件狀態以進行排序(-t)或長時間打印(-l)的時間
-h 與-l選項一塊兒使用時,請使用單位後綴:Byte、Kilobyte、mete、gb、tb和Petabyte,以便使用以2爲基數的大小將數字減小到3或更少
-l 長格式列表。(見下文)。若是輸出到終端,則全部文件大小的總和將輸出到長清單前面的一行中
-n 以數字形式顯示用戶和組id,而不是在長(-l)輸出中轉換爲用戶或組名。這個選項默認打開-l選項
-o 以長格式列出,但省略組id
-s 顯示每一個文件實際使用的文件系統塊的數量,以512字節爲單位,其中部分單元四捨五入爲下一個整數值
-t 在按照字典順序對操做數排序以前,先按修改的時間排序(最近修改的是first)
-u 使用最後一次訪問的時間,而不是最後一次修改文件進行排序
$ ls test tmp $ ls -a . .. .bash_history .bash_logout .bash_profile .bashrc test tmp #能夠看到經過ls -a 能夠查看當前目錄影藏的文件,Linux下(.)開頭的文件是隱藏文件。 $ ls -l total 4 -rw-r--r-- 1 test hero 0 Dec 21 19:54 test drwxr-xr-x 2 test hero 4096 Dec 21 19:54 tmp $ ls -lh total 4.0K -rw-r--r-- 1 test hero 0 Dec 21 19:54 test drwxr-xr-x 2 test hero 4.0K Dec 21 19:54 tmp $ ls -ll total 4 -rw-r--r-- 1 test hero 0 Dec 21 19:54 test drwxr-xr-x 2 test hero 4096 Dec 21 19:54 tmp $ ls -alh total 28K drwx------ 3 test hero 4.0K Dec 21 19:54 . drwxr-xr-x. 19 root root 4.0K Aug 1 10:41 .. -rw------- 1 test hero 226 Dec 21 19:54 .bash_history -rw-r--r-- 1 test hero 18 Aug 3 2016 .bash_logout -rw-r--r-- 1 test hero 193 Aug 3 2016 .bash_profile -rw-r--r-- 1 test hero 231 Aug 3 2016 .bashrc -rw-r--r-- 1 test hero 0 Dec 21 19:54 test drwxr-xr-x 2 test hero 4.0K Dec 21 19:54 tmp $ ls -o total 4 -rw-r--r-- 1 test 0 Dec 21 19:54 test drwxr-xr-x 2 test 4096 Dec 21 19:54 tmp $ ls -oh total 4.0K -rw-r--r-- 1 test 0 Dec 21 19:54 test drwxr-xr-x 2 test 4.0K Dec 21 19:54 tmp
打印當前工做目錄的完整路徑名。(print name of current/working directory)
pwd [OPTION]...
[test@Mfate171193 /home/test] 20:06 $ pwd /home/test
Update the access and modification times of each FILE to the current time.
A FILE argument that does not exist is created empty, unless -c or -h is supplied.
將每一個文件的訪問和修改時間更新爲當前時間。除非提供-c或-h,不然將不存在的FILE參數建立爲空。
touch [OPTION]... FILE...
-a 或--time=atime或--time=access或--time=use 只更改存取時間。
-c 或--no-create 不創建任何文檔。
-d 使用指定的日期時間,而非如今的時間。
-f 此參數將忽略不予處理,僅負責解決BSD版本touch指令的兼容性問題。
-m 或--time=mtime或--time=modify 只更改變更時間。
-r 把指定文檔或目錄的日期時間,通通設成和參考文檔或目錄的日期時間相同。
-t 使用指定的日期時間,而非如今的時間。
#建立三個文件 $ touch test1 test2 test3 #不建立文檔 $ touch -c test5 $ ls test1 test2 test3 #能夠看到只建立了test一、test二、test3 , -c不創建任何文件 $ touch -t 201911110000 test1 $ stat test* #stat命令能夠查看文件的詳細變動時間,能夠test1文件的最後修改時間爲201911110000,說明touch -t能夠修改文件最後訪問時間。這個參數仍是頗有用的,你能夠把你最近訪問的時間修改成一個很早的時間。能夠作一些有趣的事情,哈哈。 File: ‘test1’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd01h/64769d Inode: 360736 Links: 1 Access: (0644/-rw-r--r--) Uid: (14060/ localhost) Gid: ( 1001/ hero) Access: 2019-11-11 00:00:00.000000000 +0800 Modify: 2019-11-11 00:00:00.000000000 +0800 Change: 2019-12-21 20:58:11.290761038 +0800 Birth: - File: ‘test2’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd01h/64769d Inode: 360738 Links: 1 Access: (0644/-rw-r--r--) Uid: (14060/ localhost) Gid: ( 1001/ hero) Access: 2019-12-21 20:56:34.523761038 +0800 Modify: 2019-12-21 20:56:34.523761038 +0800 Change: 2019-12-21 20:56:34.523761038 +0800 Birth: - File: ‘test3’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd01h/64769d Inode: 360740 Links: 1 Access: (0644/-rw-r--r--) Uid: (14060/ localhost) Gid: ( 1001/ hero) Access: 2019-12-21 20:56:34.523761038 +0800 Modify: 2019-12-21 20:56:34.523761038 +0800 Change: 2019-12-21 20:56:34.523761038 +0800 Birth: -
Concatenate FILE(s), or standard input, to standard output.
將FILE或標準輸入鏈接到標準輸出。
cat [OPTION]... [FILE]...
-A, --show-all 等價於 -vET
-b, --number-nonblank 對非空輸出行編號
-e 等價於 -vE
-E, --show-ends 在每行結束處顯示
-n, --number 對輸出的全部行編號,由1開始對全部輸出的行數編號
-s, --squeeze-blank 有連續兩行以上的空白行,就代換爲一行的空白行
-t 與 -vT 等價
-T, --show-tabs 將跳格字符顯示爲 #### I
-u (被忽略)
-v, --show-nonprinting 使用 #### 和 M- 引用,除了 LFD 和 TAB 以外
$ cat test #展現文件內容 -A, --show-all 等價於 -vET -b, --number-nonblank 對非空輸出行編號 -e 等價於 -vE $ cat -n test #展現文件內容而且展現行號 1 -A, --show-all 等價於 -vET 2 -b, --number-nonblank 對非空輸出行編號 3 -e 等價於 -vE
$ tac test -e 等價於 -vE -b, --number-nonblank 對非空輸出行編號 -A, --show-all 等價於 -vET
Create the DIRECTORY(ies), if they do not already exist.
若是目錄不存在,則建立目錄。
mkdir [OPTION]... DIRECTORY...
-m, --mode=模式,設定權限<模式> (相似 chmod),而不是 rwxrwxrwx 減 umask
-p, --parents 能夠是一個路徑名稱。此時若路徑中的某些目錄尚不存在,加上此選項後,系統將自動創建好那些尚不存在的目錄,即一次能夠創建多個目錄;
-v, --verbose 每次建立新目錄都顯示信息
--help 顯示此幫助信息並退出
--version 輸出版本信息並退出
#建立目錄文件test $ mkdir test #連續建立 $ mkdir -p test1/tmp $ ls test test1 #建立時置頂目錄權限 #tmp目錄擁有可執行權限,Linux文件權限問題後期文章會詳細講到,記得關注我 $ mkdir -pm 777 test2/tmp $ ls -lh total 12K drwxr-xr-x 2 localhost hero 4.0K Dec 21 21:39 test drwxr-xr-x 3 localhost hero 4.0K Dec 21 21:40 test1 drwxr-xr-x 3 localhost hero 4.0K Dec 21 21:40 test2 $ ls test test1 test2 #-v 參數可肯定文件是否已經存在,若是不存在則會建立,並顯示以下信息 $ mkdir -v test mkdir: cannot create directory ‘test’: File exists $ mkdir -v test7 mkdir: created directory ‘test7’
切換當前目錄至指定目錄
#打印當前目錄到標準輸出 $ pwd /Users/localhost #切換到目錄/ $cd /
cd命令沒什麼參數就是切換目錄到指定路徑下,較爲簡單,可是使用評率極高。
The rm utility attempts to remove the non-directory type files specified on the command line. If the permissions of the file do not permit writing, and the standard input device is a terminal, the user is prompted (on the standard error output) for confirmation.
rm實用程序嘗試刪除命令行上指定的非目錄類型文件。 若是文件的權限不容許寫入,而且標準輸入設備是終端,則會提示用戶(在標準錯誤輸出上)進行確認。
rm命令使用時仍是須要注意的,他的刪除恢復比較麻煩,有些系統會自帶-i參數,輸入命令以後還有一個確認步驟,有些是直接刪掉了,是真刪掉,從內存抹掉那種(其實底層是讓該文件指針不指向該文件的內存塊,內存上的內容原則上是存在的,可是恢復會比較複雜,須要掃描整塊內存塊才能拿到內容)。不要輕易刪掉你寫的重要代碼,hh。
rm [-dfiPRrvW] file ...
-f, --force 忽略不存在的文件,從不給出提示。
-i, --interactive 進行交互式刪除
-r, -R, --recursive 指示rm將參數中列出的所有目錄和子目錄均遞歸地刪除。
-d, --dir 刪除空目錄
# 建立三個文件 $ touch tmp.cc tmp.java tmp.py tmp.go #建立目錄文件 $ mkdir -p linux/test #查看文件是否建立成功 $ ls linux tmp.cc tmp.go tmp.java tmp.py #刪除文件,並進行提示 $ rm -i tmp.cc remove tmp.cc? y #強制刪除 $ rm -f tmp.go #刪除目錄 $ rm -f linux #刪除目錄失敗 rm: linux: is a directory #循環刪除目錄下全部文件 $ rm -rf linux #刪除目錄成功, $ ls tmp.java tmp.py
rmdir==rm -d 刪除空目錄
In its first form, the mv utility renames the file named by the source operand to the destination path named by the target operand. This form is assumed when the last operand does not name an already existing directory.
In its second form, mv moves each file named by a source operand to a destination file in the existing directory named by the directory operand. The destination path for each operand is the pathname produced by the concatenation of the last operand, a slash, and the final pathname component of the named file.
總結下,就是移動目錄或者文件到置頂目錄下,同時具備重命名的功能。
mv [-f | -i | -n] [-v] source target mv [-f | -i | -n] [-v] source ... directory
-b :若需覆蓋文件,則覆蓋前先行備份。
-f :force 強制的意思,若是目標文件已經存在,不會詢問而直接覆蓋;
-i :若目標文件 (destination) 已經存在時,就會詢問是否覆蓋
-n:不要覆蓋現有文件。 (-n選項將覆蓋之前的任何-f或-i選項。)
-u :若目標文件已經存在,且 source 比較新,纔會更新(update)
##修改文件名 $ touch tmp.cc $ ls tmp.cc $ mv tmp.cc tmp.java $ ls tmp.java #移動文件或者目錄 $ pwd /Users/localhost/test #移動文件並重命名 $ mv /Users/localhost/logs/tmp.txt ./tmp.log $ ls /Users/localhost/logs/ discover-client metabase tesla $ ls ./ tmp.java tmp.log #移動目錄並重命名 $ mv /Users/localhost/logs/tesla ./tesla.ba $ ls tesla.ba tmp.java tmp.log
這個命令在寫makefile文件的時候用起來很舒服,能夠把編譯的結果移到指定目錄並重命名。
In the first synopsis form, the cp utility copies the contents of the source_file to the target_file. In the second synopsis form, the contents of each named source_file is copied to the destination target_directory. The names of the files themselves are not changed. If cp detects an attempt to copy a file to itself, the copy will fail.
cp實用程序將source_file的內容複製到target_file。 在第二個大綱格式中,每一個命名的source_file的內容都複製到目標target_directory。 文件自己的名稱不會更改。 若是cp檢測到嘗試將文件複製到自身的嘗試,則複製將失敗。
cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file ... target_directory
-a, --archive 等於-dR --preserve=all
--backup[=CONTROL 爲每一個已存在的目標文件建立備份
-b 相似--backup 但不接受參數
--copy-contents 在遞歸處理是複製特殊文件內容
-d 等於--no-dereference --preserve=links
-f, --force 若是目標文件沒法打開則將其移除並重試(當 -n 選項
存在時則不需再選此項)
-i, --interactive 覆蓋前詢問(使前面的 -n 選項失效)
-H 跟隨源文件中的命令行符號連接
-l, --link 連接文件而不復制
-L, --dereference 老是跟隨符號連接
-n, --no-clobber 不要覆蓋已存在的文件(使前面的 -i 選項失效)
-P, --no-dereference 不跟隨源文件中的符號連接
-p 等於--preserve=模式,全部權,時間戳
--preserve[=屬性列表 保持指定的屬性(默認:模式,全部權,時間戳),若是
可能保持附加屬性:環境、連接、xattr 等
-R, -r, --recursive 複製目錄及目錄內的全部項目
$ cat tmp.cc change world #拷貝文件內容 $ cp tmp.cc tmp.java $ cat tmp.java change world
The echo utility writes any specified operands, separated by single blank (
') characters and followed by a newline (
\n') character, to the standard output.echo實用程序將任何指定的操做數寫入標準輸出,這些操做數由單個空格(
)字符分隔,後跟換行符(
\ n')字符。
這條命令較爲簡單,經常使用來打印變量、文本內容到,例如:
$ echo "change world" change world #s輸出PWD環境變量的值 $ echo $PWD /Users/localhost/test
$
PWD 是取當前路徑,而後echo到標準輸出,通常echo $name 用來查看某個環境變量的值
This filter displays the first count lines or bytes of each of the specified files, or of the standard input if no files are specified. If count is omitted it defaults to 10.
此過濾器顯示每一個指定文件或標準輸入(若是未指定文件)的前幾行或字節。
If more than a single file is specified, each file is preceded by a header consisting of the string
==> XXX <=='' where
XXX'' is the name of the file.若是省略count,則默認爲10.若是指定了多個文件,則每一個文件的頭均由字符串
==> XXX <==''組成,其中
XXX''爲文件名 文件。
head [-n count | -c bytes] [file ...]
-n 展現前n行
-c 展現前n個字符
$ cat -n test.txt #這就用上前面的cat命令的-n參數,要學會學以至用哦。 1 用 2 心 3 分 4 享, 5 共 6 同 7 成 8 長. 9 10 沒 11 有 12 什 13 麼 14 比 15 你 16 每 17 天 18 進 19 步 20 一 21 點 22 更 23 實 24 在 25 了 26 . $ head test.txt #默認展現10行 用 心 分 享, 共 同 成 長. 沒 $ head -n15 test.txt #展現15行 用 心 分 享, 共 同 成 長. 沒 有 什 麼 比 你 $ head -c23 test.txt #展現前23個字符,中文一個漢字並不是一個字符的(utf-8編碼中文字符長度是可變的) 用 心 分 享, 共
tail命令徹底和他相反,是從尾部開始展現文本,可是他的參數用法更多。
-f 循環讀取
-q 不顯示處理信息
-v 顯示詳細的處理信息
-c<數目> 顯示的字節數
-n<行數> 顯示行數
--pid=PID 與-f合用,表示在進程ID,PID死掉以後結束.
-q, --quiet, --silent 從不輸出給出文件名的首部
-s, --sleep-interval=S 與-f合用,表示在每次反覆的間隔休眠S秒
tail和head命令常常用來查看日誌,像我如今基本天天都會用,個人日誌文件沒辦法用vim或者cat這樣去看(由於我負責的業務日誌量天天都是幾十個G),要麼用tail,要麼用more&less(下面會講)。
Less is a program similar to more (1), but which allows backward movement in the file as well as forward movement. Also, less does not have to read the entire input file before starting, so with large input files it starts up faster than text editors like vi (1). Less uses termcap (or terminfo on some systems), so it can run on a variety of terminals. There is even limited support for hardcopy terminals. (On a hardcopy terminal, lines which should be printed at the top of the screen are prefixed with a caret.)
more每次打開文件不是所有把文件讀入內存而是流式讀取,不會由於vi|vim某個大文件而形成系統oom。
more&less最重要的一點就是流式讀取,支持翻頁,像cat命令是所有讀取輸出到標準輸出,若是文件太大會把屏幕刷滿的,根本沒辦法看。
more [-dlfpcsu ] [-num ] [+/ pattern] [+ linenum] [file ... ]
+n 從笫n行開始顯示
-n 定義屏幕大小爲n行
+/pattern 在每一個檔案顯示前搜尋該字串(pattern),而後從該字串前兩行以後開始顯示
-c 從頂部清屏,而後顯示
-d 提示「Press space to continue,’q’ to quit(按空格鍵繼續,按q鍵退出)」,禁用響鈴功能
-l 忽略Ctrl+l(換頁)字符
-p 經過清除窗口而不是滾屏來對文件進行換頁,與-c選項類似
-s 把連續的多個空行顯示爲一行
-u 把文件內容中的下畫線去掉
less 與 more 相似,但使用 less 能夠隨意瀏覽文件,而 more 僅能向前移動,卻不能向後移動,並且 less 在查看以前不會加載整個文件
The wc utility displays the number of lines, words, and bytes contained in each input file, or standard input (if no file is specified) to the standard output. A line is defined as a string of characters delimited by a <newline> charac-ter. Characters beyond the final <newline> character will not be included in the line count.
wc實用程序顯示每一個輸入文件或標準輸入(若是未指定文件)中每一個輸入文件中包含的行數,字數和字節數。 一行定義爲由<newline>字符分隔的字符串。 最後一個<newline>字符以後的字符將不包括在行數中。
這條命令對我來講仍是比較深入的,我剛學習編程不久的時候,我感受我寫的代碼不少了,那個時候我就很想知道我寫了多少行代碼了,一時興起,說幹就幹,直接寫了個程序去統計了一把,寫完以後還感受本身蠻厲害的,誰知道以後學習到這個wc,而後就以爲本身仍是嫩了點,仍是要多學習。
wc [-clmw] [file ...]
-c 統計字節數。
-l 統計行數。
-m 統計字符數。這個標誌不能與 -c 標誌一塊兒使用。
-w 統計字數。一個字被定義爲由空白、跳格或換行字符分隔的字符串。
-L 打印最長行的長度。
$ ls test.txt $ wc test.txt 26 26 103 test.txt $ wc -l test.txt #直接一把統計行數 26 test.txt $ wc -c test.txt 103 test.txt
When invoked without arguments, the date utility displays the current date and time. Otherwise, depending on the options specified, date will set the date and time or print it in a user-defined way.
The date utility displays the date and time read from the kernel clock. When used to set the date and time, both the kernel clock and the hardware clock are updated.
Only the superuser may set the date, and if the system securelevel (see securelevel(7)) is greater than 1, the time may not be changed by more than 1 second.
當不帶參數調用時,date實用程序將顯示當前日期和時間。 不然,根據指定的選項,日期將設置日期和時間或以用戶定義的方式打印日期和時間。
date實用程序顯示從內核時鐘讀取的日期和時間。 當用於設置日期和時間時,內核時鐘和硬件時鐘都將更新。
只有超級用戶能夠設置日期,而且若是系統安全級別(請參閱securelevel(7))大於1,則時間更改不得超過1秒。
date [-jRu] [-r seconds | filename] [-v [+|-]val[ymwdHMS]] ... [+output_fmt] date [-jnu] [[[mm]dd]HH]MM[[cc]yy][.ss] date [-jnRu] -f input_fmt new_date [+output_fmt] date [-d dst] [-t minutes_west]
%H 小時(以00-23來表示)。
%I 小時(以01-12來表示)。
%K 小時(以0-23來表示)。
%l 小時(以0-12來表示)。
%M 分鐘(以00-59來表示)。
%P AM或PM。
%r 時間(含時分秒,小時以12小時AM/PM來表示)。
%s 總秒數。起算時間爲1970-01-01 00:00:00 UTC。
%S 秒(以本地的慣用法來表示)。
%T 時間(含時分秒,小時以24小時制來表示)。
%X 時間(以本地的慣用法來表示)。
%Z 市區。
%a 星期的縮寫。
%A 星期的完整名稱。
%b 月份英文名的縮寫。
%B 月份的完整英文名稱。
%c 日期與時間。只輸入date指令也會顯示一樣的結果。
%d 日期(以01-31來表示)。
%D 日期(含年月日)。
%j 該年中的第幾天。
%m 月份(以01-12來表示)。
%U 該年中的週數。
%w 該周的天數,0表明週日,1表明週一,異詞類推。
%x 日期(以本地的慣用法來表示)。
%y 年份(以00-99來表示)。
%Y 年份(以四位數來表示)。
%n 在顯示時,插入新的一行。
%t 在顯示時,插入tab。
MM 月份(必要)
DD 日期(必要)
hh 小時(必要)
mm 分鐘(必要)
ss 秒(選擇性)
-d<字符串> 顯示字符串所指的日期與時間。字符串先後必須加上雙引號。
-s<字符串> 根據字符串來設置日期與時間。字符串先後必須加上雙引號。
-u 顯示GMT。
$ date 2019年12月22日 星期日 21時28分29秒 CST $ date '+%c' 日 12/22 21:28:33 2019 $ date '+%D' 12/22/19 $ date '+%T' 21:28:50 $ date '+%X' 21時29分00秒
cal命令能夠用來顯示公曆(陽曆)日曆。
cal [-3hjy] [-A number] [-B number] [[month] year] cal [-3hj] [-A number] [-B number] -m month [year] ncal [-3hjJpwy] [-A number] [-B number] [-s country_code] [[month] year] ncal [-3hJeo] [-A number] [-B number] [year] ncal [-CN] [-H yyyy-mm-dd] [-d yyyy-mm]
-1 顯示一個月的月曆
-3 顯示系統前一個月,當前月,下一個月的月曆
-s 顯示星期天爲一個星期的第一天,默認的格式
-m 顯示星期一爲一個星期的第一天 -j 顯示在當年中的第幾天(一年日期按天算,從1月1號算起,默認顯示當前月在一年中的天數) -y 顯示當前年份的日曆
$ cal 十二月 2019 日 一 二 三 四 五 六 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 $ ncal 十二月 2019 一 2 9 16 23 30 二 3 10 17 24 31 三 4 11 18 25 四 5 12 19 26 五 6 13 20 27 六 7 14 21 28 日 1 8 15 22 29
The which utility takes a list of command names and searches the path for each executable file that would be run had these commands actually been invoked.
which命令的做用是,在PATH變量指定的路徑中,搜索某個系統命令的位置,而且返回第一個搜索結果。也就是說,使用which命令,就能夠看到某個系統命令是否存在,以及執行的究竟是哪個位置的命令。
-n 指定文件名長度,指定的長度必須大於或等於全部文件中最長的文件名。
-p 與-n參數相同,但此處的包括了文件的路徑。
-w 指定輸出時欄位的寬度。
$ which ls alias ls='ls --color=auto' /bin/ls $ which which alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' /bin/alias /usr/bin/which
whereis命令只能用於程序名的搜索,並且只搜索二進制文件(參數-b)、man說明文件(參數-m)和源代碼文件(參數-s)。若是省略參數,則返回全部信息。
whereis [program ...]
-b 定位可執行文件。
-m 定位幫助文件。
-s 定位源代碼文件。
-u 搜索默認路徑下除可執行文件、源代碼文件、幫助文件之外的其它文件。
-B 指定搜索可執行文件的路徑。
-M 指定搜索幫助文件的路徑。
-S 指定搜索源代碼文件的路徑。
$ whereis ls /bin/ls $ whereis whereis /usr/bin/whereis
nl命令在linux系統中用來計算文件中行號。nl 能夠將輸出的文件內容自動的加上行號!其默認的結果與 cat -n 有點不太同樣, nl 能夠將行號作比較多的顯示設計,包括位數與是否自動補齊 0 等等的功能。
nl [-p] [-b type] [-d delim] [-f type] [-h type] [-i incr] [-l num] [-n format] [-s sep] [-v startnum] [-w width] [file]
-b :指定行號指定的方式,主要有兩種:
-b a :表示不管是否爲空行,也一樣列出行號(相似 cat -n);
-b t :若是有空行,空的那一行不要列出行號(默認值);
-n :列出行號表示的方法,主要有三種:
-n ln :行號在螢幕的最左方顯示;
-n rn :行號在本身欄位的最右方顯示,且不加 0 ;
-n rz :行號在本身欄位的最右方顯示,且加 0 ;
-w :行號欄位的佔用的位數。
-p 在邏輯定界符處不從新開始計算。
$ nl test.txt 1 用 2 心 3 分 4 享, 5 共 6 同 7 成 8 長. 9 沒 10 有 11 什 12 麼 13 比 14 你 15 每 16 天 17 進 18 步 19 一 20 點 21 更 22 實 23 在 24 了 25 .
The ps utility displays a header line, followed by lines containing information about all of your processes that have controlling terminals.
ps實用程序顯示標題行,其後是包含有關具備控制終端的全部進程的信息的行。
ps [-AaCcEefhjlMmrSTvwXx] [-O fmt | -o fmt] [-G gid[,gid...]] [-g grp[,grp...]] [-u uid[,uid...]] [-p pid[,pid...]] [-t tty[,tty...]] [-U user[,user...]] ps [-L]
a 顯示全部進程
-a 顯示同一終端下的全部程序
-A 顯示全部進程
c 顯示進程的真實名稱
-N 反向選擇
-e 等於「-A」
e 顯示環境變量
f 顯示程序間的關係
-H 顯示樹狀結構
r 顯示當前終端的進程
T 顯示當前終端的全部程序
u 指定用戶的全部進程
-au 顯示較詳細的資訊
-aux 顯示全部包含其餘使用者的行程
-C<命令> 列出指定命令的情況
--lines<行數> 每頁顯示的行數
--width<字符數> 每頁顯示的字符數
#查看全部進程 $ps -a #查看進程的環境變量和程序間的關係 $ps -ef
The command kill sends the specified signal to the specified process or process group. If no signal is specified, the TERM signal is sent. The TERM signal will kill processes which do not catch this signal. For other processes, it may be necessary to use the KILL (9) signal, since this signal cannot be caught.
命令kill將指定的信號發送到指定的進程或進程組。 若是未指定信號,則發送TERM信號。 TERM信號將殺死不捕獲該信號的進程。 對於其餘過程,可能須要使用KILL(9)信號,由於沒法捕獲該信號。
kill [-s signal|-p] [-q sigval] [-a] [--] pid... kill -l [signal]
-l 信號,若果不加信號的編號參數,則使用「-l」參數會列出所有的信號名稱
-a 當處理當前進程時,不限制命令名和進程號的對應關係
-p 指定kill 命令只打印相關進程的進程號,而不發送任何信號
-s 指定發送信號
-u 指定用戶
#查看當前系統信號 $ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1 64) SIGRTMAX
HUP 1 終端斷線 INT 2 中斷(同 Ctrl + C) QUIT 3 退出(同 Ctrl + \) TERM 15 終止 KILL 9 強制終止 CONT 18 繼續(與STOP相反, fg/bg命令) STOP 19 暫停(同 Ctrl + Z)
kill -9 是咱們使用的最多的信號,其實這種方式一點也不優雅,應該使用kill -15信號,大部分程序接收到SIGTERM信號後,會先釋放本身的資源,而後再中止。可是也有程序可能接收信號後,作一些其餘的事情(若是程序正在等待IO,可能就不會立馬作出響應,等到io完成後在結束),也就是說,SIGTERM多半是會被阻塞的。
講到這裏,linux基本指令差很少了夠用了,差很少能夠上你的服務器上隨便搞搞了。可是也只是簡單看看,更多的操做指令請看進階部分。
The find utility recursively descends the directory tree for each path listed, evaluating an expression (composed of the
primaries'' and
operands'' listed below) in terms of each file in the tree.find實用程序對列出的每一個路徑遞歸地遍歷目錄樹,根據樹中的每一個文件計算表達式(由下面列出的「初選」和「操做數」組成)。
這個命令使用頻率極高,若是對這個命令瞭解很透徹,在平常工做中能夠事半功倍。這個命令的參數較多,經常使用的參數我會在下面經常使用參數示例講清楚
find [-H | -L | -P] [-EXdsx] [-f path] path ... [expression] find [-H | -L | -P] [-EXdsx] -f path [path ...] [expression]
-print: find命令將匹配的文件輸出到標準輸出。
-exec: find命令對匹配的文件執行該參數所給出的shell命令。相應命令的形式爲'command' { } ;,注意{ }和\;之間的空格。
-name 按照文件名查找文件。
-perm 按照文件權限來查找文件。
-prune 使用這一選項可使find命令不在當前指定的目錄中查找,若是同時使用-depth選項,那麼-prune將被find命令忽略。
-user 按照文件屬主來查找文件。
-group 按照文件所屬的組來查找文件。
-mtime -n +n 按照文件的更改時間來查找文件, - n表示文件更改時間距如今n天之內,+ n表示文件更改時間距如今n天之前。find命令還有-atime和-ctime 選項,但它們都和-m time選項。
-nogroup 查找無有效所屬組的文件,即該文件所屬的組在/etc/groups中不存在。
-nouser 查找無有效屬主的文件,即該文件的屬主在/etc/passwd中不存在。
-newer file1 ! file2 查找更改時間比文件file1新但比文件file2舊的文件。
-type 查找某一類型的文件,諸如:
b - 塊設備文件。
d - 目錄。
c - 字符設備文件。
p - 管道文件。
l - 符號連接文件。
f - 普通文件。
-size n:[c] 查找文件長度爲n塊的文件,帶有c時表示文件長度以字節計。-depth:在查找文件時,首先查找當前目錄中的文件,而後再在其子目錄中查找。
-fstype:查找位於某一類型文件系統中的文件,這些文件系統類型一般能夠在配置文件/etc/fstab中找到,該配置文件中包含了本系統中有關文件系統的信息。
-mount:在查找文件時不跨越文件系統mount點。
-follow:若是find命令遇到符號連接文件,就跟蹤至連接所指向的文件。
-cpio:對匹配的文件使用cpio命令,將這些文件備份到磁帶設備中。
另外,下面三個的區別:
-amin n 查找系統中最後N分鐘訪問的文件
-atime n 查找系統中最後n*24小時訪問的文件
-cmin n 查找系統中最後N分鐘被改變文件狀態的文件
-ctime n 查找系統中最後n*24小時被改變文件狀態的文件
-mmin n 查找系統中最後N分鐘被改變文件數據的文件
-mtime n 查找系統中最後n*24小時被改變文件數據的文件
-name參數經常使用參數示例 查找/user目錄下全部以.log結尾的文件
-exec 參數後面跟的是command,它的終止是以;
爲結束標誌的,因此這句命令後面的分號是不可缺乏的,考慮到各個系統中分號會有不一樣的意義,因此前面加反斜槓。
舉一個我在工做中常常用到的例子,我有個日誌目錄,我係統的全部日誌都會打到這個目錄,目錄的日誌文件命名很隨意,我沒辦法說根據名字刪除,因而我想到用日期的方式刪除,保存一個月的日誌便可。
$find /home/midou/logs// -mtime +30 -name "*.log.gz" -exec rm -rf {} \; # {} 這個是語法不能丟了 ,還有結尾的 ; 也不能丟了。
其實我把這個命令放在個人一個系統crontab文件裏面,天天執行一次,這樣個人日誌目錄就不用了手動清理。corntab使用詳解在後面的命令中會講到。
-exec 後面能夠接任何命令,你能夠靈活運用,再結合到前面的-name參數,能夠玩出花來。
The grep utility searches any given input files, selecting lines that match one or more patterns. By default, a pattern matches an input line if the regular expression (RE) in the pattern matches the input line without its trailing newline. An empty expression matches every line. Each input line that matches at least one of the patterns is written to the standard output
grep實用程序搜索任何給定的輸入文件,選擇與一個或多個模式匹配的行。 默認狀況下,若是模式中的正則表達式(RE)匹配輸入行而沒有尾隨換行符,則該模式會匹配輸入行。 空表達式匹配每行。 與至少一種模式匹配的每條輸入線均寫入標準輸出
這是個我天天都會用到的命令,我是作基礎服務的,用我服務的人難免會遇到問題,這時候我就去要去看日誌了,日誌都是G級別的,固然不能用vim打開去搜索,會把系統掛掉,vim是所有文檔加載到內存。這時候就須要使用grep命令去根據一些關鍵信息匹配查找了。(固然有些同窗可能會說,既然常常查日誌的話,就不能把日誌接入到ElasticSearch這種可搜索的組建中,很好,用技術去解決實際問題。咱們也是這樣作的,但總免不了仍是會去服務器上查一下日誌,學會這個命令沒錯的)
grep [-abcdDEFGHhIiJLlmnOopqRSsUVvwxZ] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color[=when]] [--colour[=when]][--context[=num]] [--label] [--line-buffered] [--null] [pattern] [file ...]
-a --text 不要忽略二進制的數據。
-A<顯示行數> --after-context=<顯示行數> #除了顯示符合範本樣式的那一列以外,並顯示該行以後的內容。
-b --byte-offset #在顯示符合樣式的那一行以前,標示出該行第一個字符的編號。
-B<顯示行數> --before-context=<顯示行數> #除了顯示符合樣式的那一行以外,並顯示該行以前的內容。
-c --count #計算符合樣式的列數。
-C<顯示行數> --context=<顯示行數>或-<顯示行數> #除了顯示符合樣式的那一行以外,並顯示該行以前後的內容。
-d <動做> --directories=<動做> #當指定要查找的是目錄而非文件時,必須使用這項參數,不然grep指令將回報信息並中止動做。
-e<範本樣式> --regexp=<範本樣式> #指定字符串作爲查找文件內容的樣式。
-E --extended-regexp #將樣式爲延伸的普通表示法來使用。
-f<規則文件> --file=<規則文件> #指定規則文件,其內容含有一個或多個規則樣式,讓grep查找符合規則條件的文件內容,格式爲每行一個規則樣式。
-F --fixed-regexp #將樣式視爲固定字符串的列表。
-G --basic-regexp #將樣式視爲普通的表示法來使用。
-h --no-filename #在顯示符合樣式的那一行以前,不標示該行所屬的文件名稱。
-H --with-filename #在顯示符合樣式的那一行以前,表示該行所屬的文件名稱。
-i --ignore-case #忽略字符大小寫的差異。
-l --file-with-matches #列出文件內容符合指定的樣式的文件名稱。
-L --files-without-match #列出文件內容不符合指定的樣式的文件名稱。
-n --line-number #在顯示符合樣式的那一行以前,標示出該行的列數編號。
-q --quiet或--silent #不顯示任何信息。
-r --recursive #此參數的效果和指定「-d recurse」參數相同。
-s --no-messages #不顯示錯誤信息。
-v --revert-match #顯示不包含匹配文本的全部行。
-V --version #顯示版本信息。
-w --word-regexp #只顯示全字符合的列。
-x --line-regexp #只顯示全列符合的列。
-y 此參數的效果和指定「-i」參數相同。
$grep '20:[1-5][0-9]:' *.log #匹配當前目錄下搜索log日誌中,20點的日誌 $grep '20:[1-5][0-9]' 1.log 2.log 3.log #指定在這三個文件中查找 #grep規則是支持正則表達式的 $ps -ef|grep java #查找全部java進程 $ps -ef|grep java #-c能夠統計查找的個數 $grep '20:[1-5][0-9]:' *.log | grep -v '20:[3-4][0-9]:' # -v反向選擇,至關於過濾 $grep 'ab|bc' *.log #支持|語法,匹配含有ab或者bc的文本行
掌握grep的經常使用參數,會讓你查找日誌或者內容很是輕鬆。特別是當你數據量很大的時候,沒辦法使用vi或者vim打開的狀況下。
這個命令對我來講頗有故事,當時我在學完C語言,簡單瞭解了些linux上的基本命令,有次實習面試,面試官問我linux系統用過麼,我斬釘截鐵的說用過,面試官簡單的用vim寫了一行hello world。對我說,你怎樣經過linux命令吧這個文本里面的hello world搞成十行,而且取出每一列的第七個字符。
當時的我真的是內心一羣草泥馬跑過,這可難道我了,我沉思了片刻,說只要十行麼?多點行麼?。固然不行,只要十行,取每行的第七個字符續沉思了片刻,拿起面試官的電腦就是一頓操做,因而有了我記憶深入的下面這一行命令。
$ cat tmp.cc| >>tmp.cc|>>tmp.cc|>>tmp.cc|head -n10|>tmp.cc|cut -c7-7 w w w w w w w w w w
面試官一看,微微點了下頭(確定在內心默唸,小夥子,不錯啊)。因此這個命令我印象蠻深入的。固然還要其餘方式實現面試官的要求,好比cut第七個地府,寫個循環重定向到管道,再到原文件。
The cut utility cuts out selected portions of each line (as specified by list) from each file and writes them to the standard output. If no file arguments are specified, or a file argument is a single dash (`-'), cut reads from the standard input. The items specified by list can be in terms of column position or in terms of fields delimited by a special character. Column numbering starts from 1.
cut實用程序從每一個文件中剪切出每行的選定部分(由列表指定),並將它們寫入標準輸出。 若是未指定文件參數,或者文件參數爲單破折號(-),則從標準輸入中讀取內容。 列表指定的項目能夠是列位置,也能夠是由特殊字符分隔的字段。 列編號從1開始。
cut -b list [-n] [file ...] cut -c list [file ...] cut -f list [-d delim] [-s] [file ...]
-b:僅顯示行中指定直接範圍的內容;
-c:僅顯示行中指定範圍的字符;
-d:指定字段的分隔符,默認的字段分隔符爲「TAB」;
-f:顯示指定字段的內容;
-n:與「-b」選項連用,不分割多字節字符;
--complement:補足被選擇的字節、字符或字段;
--out-delimiter=<字段分隔符>:指定輸出內容是的字段分割符;
$cut -c-10 tmp.txt #cut tmp.txt文件的前10列 $cut -c3-5 tmp.txt #cut tmp.txt文件的第3到5列 $cut -c3- tmp.txt #cut tmp.txt文件的第3到結尾列
Compare files line by line.
比較兩個文件的不一樣
diff [OPTION]... FILES
-b或--ignore-space-change 不檢查空格字符的不一樣。
-B或--ignore-blank-lines 不檢查空白行。
-c 顯示所有內文,並標出不一樣之處。
-C或--context 與執行"-c-"指令相同。
-d或--minimal 使用不一樣的演算法,以較小的單位來作比較。
-D或ifdef 此參數的輸出格式可用於前置處理器巨集。
-e或--ed 此參數的輸出格式可用於ed的script文件。
-f或-forward-ed 輸出的格式相似ed的script文件,但按照原來文件的順序來顯示不一樣處。
-H或--speed-large-files 比較大文件時,可加快速度。
-l或--ignore-matching-lines 若兩個文件在某幾行有所不一樣,而這幾行同時都包含了選項中指定的字符或字符串,則不顯示這兩個文件的差別。
-i或--ignore-case 不檢查大小寫的不一樣。
-l或--paginate 將結果交由pr程序來分頁。
-n或--rcs 將比較結果以RCS的格式來顯示。
-N或--new-file 在比較目錄時,若文件A僅出如今某個目錄中,預設會顯示:Only in目錄:文件A若使用-N參數,則diff會將文件A與一個空白的文件比較。
-p 若比較的文件爲C語言的程序碼文件時,顯示差別所在的函數名稱。
-P或--unidirectional-new-file 與-N相似,但只有當第二個目錄包含了一個第一個目錄所沒有的文件時,纔會將這個文件與空白的文件作比較。
-q或--brief 僅顯示有無差別,不顯示詳細的信息。
-r或--recursive 比較子目錄中的文件。
-s或--report-identical-files 若沒有發現任何差別,仍然顯示信息。
-S或--starting-file 在比較目錄時,從指定的文件開始比較。
-t或--expand-tabs 在輸出時,將tab字符展開。
-T或--initial-tab 在每行前面加上tab字符以便對齊。
-u,-U或--unified= 以合併的方式來顯示文件內容的不一樣。
-v或--version 顯示版本信息。
-w或--ignore-all-space 忽略所有的空格字符。
-W或--width 在使用-y參數時,指定欄寬。
-x或--exclude 不比較選項中所指定的文件或目錄。
-X或--exclude-from 您能夠將文件或目錄類型存成文本文件,而後在=中指定此文本文件。
-y或--side-by-side 以並列的方式顯示文件的異同之處。
$ diff testA.txt testB.txt
用來壓縮和解壓文件。tar自己不具備壓縮功能。他是調用壓縮功能實現的
tar [bundled-flags <args>] [<file> | <pattern> ...] tar {-c} [options] [files | directories] tar {-r | -u} -f archive-file [options] [files | directories] tar {-t | -x} [options] [patterns]
-A 新增壓縮文件到已存在的壓縮
-B 設置區塊大小
-c 創建新的壓縮文件
-d 記錄文件的差異
-r 添加文件到已經壓縮的文件
-u 添加改變了和現有的文件到已經存在的壓縮文件
-x 從壓縮的文件中提取文件
-t 顯示壓縮文件的內容
-z 支持gzip解壓文件
-j 支持bzip2解壓文件
-Z 支持compress解壓文件
-v 顯示操做過程
-l 文件系統邊界設置
-k 保留原有文件不覆蓋
-m 保留文件不被覆蓋
-W 確認壓縮文件的正確性
-b 設置區塊數目
-C 切換到指定目錄
-f 指定壓縮文件
#打包 tar -cvf 包名 文件名 $tar -cvf test.tar test.txt #解包 tar -xvf 包名 $tar -xvf test.tar #壓縮 tar -czvf 包名 文件名 $tar -czvf test.tgz test.txt #解壓 tar -xzvf 包名 $tar -xzvf test.tgz
The du utility displays the file system block usage for each file argument and for each directory in the file hierarchy rooted in each directory argument.If no file is specified, the block usage of the hierarchy rooted in the current directory is displayed.
du實用程序顯示每一個文件自變量以及以每一個目錄自變量爲根的文件層次結構中每一個目錄的文件系統塊使用狀況。若是未指定文件,則顯示以當前目錄爲根的層次結構的塊使用狀況。
du [-H | -L | -P] [-a | -s | -d depth] [-c] [-h | -k | -m | -g] [-x] [-I mask] [file ...]
-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 以一開始處理時的文件系統爲準,若趕上其它不一樣的文件系統目錄則略過。
-L<符號連接>或--dereference<符號連接> 顯示選項中所指定符號連接的源文件大小。
-S或--separate-dirs 顯示個別目錄的大小時,並不含其子目錄的大小。
-X<文件>或--exclude-from=<文件> 在<文件>指定目錄或文件。
--exclude=<目錄或文件> 略過指定的目錄或文件。
-D或--dereference-args 顯示指定符號連接的源文件大小。
-H或--si 與-h參數相同,可是K,M,G是以1000爲換算單位。
-l或--count-links 重複計算硬件連接的文件。
#查看指定文件大小 $du -h filename #展現該目錄下全部文件大小,大小以可讀方式展現 $du -h / #展現當前目錄大小 $du -sh #展現當前目錄下每一個目錄大小 $du -sh ./ #顯示全部文件的大小,以可讀方式展現 $du -ah /
The df utility displays statistics about the amount of free disk space on the specified filesystem or on the filesystem of which file is a part. Values are displayed in 512-byte per block counts. If neither a file or a filesystem operand is specified, statistics for all mounted filesystems are displayed (sub-ject to the -t option below).
df實用程序顯示有關指定文件系統或其中一部分文件的文件系統上的可用磁盤空間量的統計信息。 值以每塊計數512字節的形式顯示。 若是未指定文件或文件系統操做數,則將顯示全部已掛載文件系統的統計信息(受下面的-t選項約束)。
df [-b | -h | -H | -k | -m | -g | -P] [-ailn] [-t] [-T type] [file | filesystem ...]
-a 所有文件系統列表
-h 方便閱讀方式顯示
-H 等於「-h」,可是計算式,1K=1000,而不是1K=1024
-i 顯示inode信息
-k 區塊爲1024字節
-l 只顯示本地文件系統
-m 區塊爲1048576字節
--no-sync 忽略 sync 命令
-P 輸出格式爲POSIX
--sync 在取得磁盤信息前,先執行sync命令
-T 文件系統類型
--block-size=<區塊大小> 指定區塊大小
-t<文件系統類型> 只顯示選定文件系統的磁盤信息
-x<文件系統類型> 不顯示選定文件系統的磁盤信息
#展現當前系統磁盤使用狀況,以可讀的方式展現 $ df -h Filesystem Size Used Avail Capacity iused ifree %iused Mounted on /dev/disk1s1 234Gi 78Gi 151Gi 35% 1376436 9223372036853399371 0% / devfs 208Ki 208Ki 0Bi 100% 720 0 100% /dev /dev/disk1s4 234Gi 4.0Gi 151Gi 3% 4 9223372036854775803 0% /private/var/vm map -hosts 0Bi 0Bi 0Bi 100% 0 0 100% /net map auto_home 0Bi 0Bi 0Bi 100% 0 0 100% /home /dev/disk3s1 290Mi 271Mi 17Mi 94% 2156 9223372036854773651 0% /Volumes/Sourcetrail_2019_4_102
lsof(list open files)是一個列出當前系統打開文件的工具。(在linux環境下,任何事物都以文件的形式存在)
lsof能夠打開的文件包括:
1.普通文件
2.目錄
3.網絡文件系統的文件
4.字符或設備文件
5.(函數)共享庫
6.管道,命名管道
7.符號連接
8.網絡文件(例如:NFS file、網絡socket,unix域名socket)
9.還有其它類型的文件,等等
這個命令在我平常工做中使用場景不少,使用範圍很廣。
lsof [ -?abChKlnNOPRtUvVX ] [ -A A ] [ -c c ] [ +c c ] [ +|-d d ] [ +|-D D ] [ +|-e s ] [ +|-E ] [ +|-f [cfgGn] ] [ -F [f] ] [ -g [s] ] [ -i [i] ] [ -k k ] [ +|-L [l] ] [ +|-m m ] [ +|-M ] [ -o [o] ] [ -p s ] [ +|-r [t[m<fmt>]] ] [ -s [p:s] ] [ -S [t] ] [ -T [t] ] [ -u s ] [ +|-w ] [ -x [fl] ] [ -z [z] ] [ -Z [Z] ] [ -- ] [names]
-a 列出打開文件存在的進程
-c<進程名> 列出指定進程所打開的文件
-g 列出GID號進程詳情
-d<文件號> 列出佔用該文件號的進程
+d<目錄> 列出目錄下被打開的文件
+D<目錄> 遞歸列出目錄下被打開的文件
-n<目錄> 列出使用NFS的文件
-i<條件> 列出符合條件的進程。(四、六、協議、:端口、 @ip )
-p<進程號> 列出指定進程號所打開的文件
-u 列出UID號進程詳情
lsof輸出各列信息的意義以下:
COMMAND:進程的名稱
PID:進程標識符
PPID:父進程標識符(須要指定-R參數)
USER:進程全部者
PGID:進程所屬組
FD:文件描述符,應用程序經過文件描述符識別該文件。如cwd、txt等
#顯示當前系統打開的文件 $lsof #查看某個文件的相關進程 lsof 文件名 $ lsof /bin/bash COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME bash 9430 midou txt REG 253,1 960392 140072 /usr/bin/bash #查看某個用戶打開的文件信息 $lsof -u username #列出某個程序進程所打開的文件信息 $lsof -c java #列出除了某個用戶外的被打開的文件信息 $lsof -u #### midou #經過某個進程號顯示該進行打開的文件 $lsof -p pid #列出除了某個進程號,其餘進程號所打開的文件信息 $lsof -p #### pid #列出全部的網絡鏈接 $lsof -i #列出全部tcp 網絡鏈接信息 $lsof -i tcp #列出全部udp網絡鏈接信息 $lsof -i udp #列出誰在某個端口使用狀況 $lsof -i :port #特定的tcp端口 $lsof -i tcp:port #特定的udp端口 $lsof -i udp:port #列出某個用戶的全部活躍的網絡端口 $lsof -a -u username -i #根據文件描述符範圍列出文件信息 $lsof -d 0-2
send ICMP ECHO_REQUEST packets to network hosts
將ICMP ECHO_REQUEST數據包發送到網絡主機
ping [-AaCDdfnoQqRrv] [-b boundif] [-c count] [-G sweepmaxsize] [-g sweepminsize] [-h sweepincrsize] [-i wait] [-k trafficclass] [-K netservicetype][-l preload] [-M mask | time] [-m ttl] [-P policy] [-p pattern] [-S src_addr] [-s packetsize] [-t timeout] [-W waittime] [-z tos] [--apple-connect][--apple-time] host
-d 使用Socket的SO_DEBUG功能。
-f 極限檢測。大量且快速地送網絡封包給一臺機器,看它的迴應。
-n 只輸出數值。
-q 不顯示任何傳送封包的信息,只顯示最後的結果。
-r 忽略普通的Routing Table,直接將數據包送到遠端主機上。一般是查看本機的網絡接口是否有問題。
-R 記錄路由過程。
-v 詳細顯示指令的執行過程。
<p>-c 數目:在發送指定數目的包後中止。
-i 秒數:設定間隔幾秒送一個網絡封包給一臺機器,預設值是一秒送一次。
-I 網絡界面:使用指定的網絡界面送出數據包。
-l 前置載入:設置在送出要求信息以前,先行發出的數據包。
-p 範本樣式:設置填滿數據包的範本樣式。
-s 字節數:指定發送的數據字節數,預設值是56,加上8字節的ICMP頭,一共是64ICMP數據字節。
-t 存活數值:設置存活數值TTL的大小。
ping,在平常工做中都是簡單的用來測試本機與其餘機器之間的網絡通訊,固然若是瞭解這些參數的話,會有更多的用法。
#檢測網絡狀況 $ping host #ping網關 $ping -b host #ping指定次數 $ping -c 10 host #ping指定時間間隔和次數限制 $ping -c 10 -i 0.5 host #經過域名ping公網上的站點
The netstat command symbolically displays the contents of various network-related data structures. There are a number of output formats, depending on the options for the information presented. The first form of the command displays a list of active sockets for each protocol. The second form presents the contents of one of the other network data structures according to the option selected. Using the third form, with a wait interval specified, netstat will continuously display the information regarding packet traffic on the configured network interfaces. The fourth form displays statistics for the specified protocol or address family. If a wait interval is specified, the protocol information over the last interval seconds will be displayed. The fifth form displays per-interface statistics for the specified protocol or address family. The sixth form displays mbuf(9) statistics. The seventh form displays routing table for the speci-fied address family. The eighth form displays routing statistics.
netstat命令以符號形式顯示各類與網絡相關的數據結構的內容。有多種輸出格式,具體取決於顯示信息的選項。該命令的第一種形式顯示每一個協議的活動套接字列表。第二種形式根據選擇的選項顯示其餘網絡數據結構之一的內容。使用第三種形式,並指定等待間隔,netstat將在配置的網絡接口上連續顯示有關數據包流量的信息。第四種形式顯示指定協議或地址族的統計信息。若是指定了等待間隔,將顯示最近間隔秒的協議信息。第五種形式顯示指定協議或地址族的每一個接口的統計信息。第六種形式顯示mbuf(9)統計信息。第七種形式顯示指定地址系列的路由表。第八種形式顯示路由統計信息。
netstat [-AaLlnW] [-f address_family | -p protocol] netstat [-gilns] [-v] [-f address_family] [-I interface] netstat -i | -I interface [-w wait] [-c queue] [-abdgqRtS] netstat -s [-s] [-f address_family | -p protocol] [-w wait] netstat -i | -I interface -s [-f address_family | -p protocol] netstat -m [-m] netstat -r [-Aaln] [-f address_family] netstat -rs [-s]
-a或–all 顯示全部連線中的Socket。
-A<網絡類型>或–<網絡類型> 列出該網絡類型連線中的相關地址。
-c或–continuous 持續列出網絡狀態。
-C或–cache 顯示路由器配置的快取信息。
-e或–extend 顯示網絡其餘相關信息。
-F或–fib 顯示FIB。
-g或–groups 顯示多重廣播功能羣組組員名單。
-h或–help 在線幫助。
-i或–interfaces 顯示網絡界面信息表單。
-l或–listening 顯示監控中的服務器的Socket。
-M或–masquerade 顯示假裝的網絡連線。
-n或–numeric 直接使用IP地址,而不經過域名服務器。
-N或–netlink或–symbolic 顯示網絡硬件外圍設備的符號鏈接名稱。
-o或–timers 顯示計時器。
-p或–programs 顯示正在使用Socket的程序識別碼和程序名稱。
-r或–route 顯示Routing Table。
-s或–statistice 顯示網絡工做信息統計表。
-t或–tcp 顯示TCP傳輸協議的連線情況。
-u或–udp 顯示UDP傳輸協議的連線情況。
-v或–verbose 顯示指令執行過程。
-V或–version 顯示版本信息。
-w或–raw 顯示RAW傳輸協議的連線情況。
-x或–unix 此參數的效果和指定」-A unix」參數相同。
–ip或–inet 此參數的效果和指定」-A inet」參數相同。
#列出全部端口使用狀況 $netstat -a #顯示當前UDP鏈接情況 $netstat -nu #顯示UDP端口號的使用狀況 $netstat -apu #顯示網卡列表 $netstat -i #顯示網絡統計信息 $netstat -s #顯示監聽的套接口 $netstat -l #顯示全部已創建的有效鏈接 $netstat -n #顯示關於路由表的信息 $netstat -r #列出全部 tcp 端口 $netstat -at #找出程序運行的端口 $netstat -ap | grep ssh #在 netstat 輸出中顯示 PID 和進程名稱 $netstat -pt
Ifconfig is used to configure the kernel-resident network interfaces. It is used at boot time to set up interfaces as necessary. After that, it is usually only needed when debugging or when system tuning is needed.
Ifconfig用於配置內核駐留的網絡接口。 它在引導時用於根據須要設置接口。 以後,一般僅在調試或須要系統調整時才須要它。
ifconfig [-v] [-a] [-s] [interface] ifconfig [-v] interface [aftype] options | address ...
up 啓動指定網絡設備/網卡。
down 關閉指定網絡設備/網卡。該參數能夠有效地阻止經過指定接口的IP信息流,若是想永久地關閉一個接口,咱們還須要從核心路由表中將該接口的路由信息所有刪除。
arp 設置指定網卡是否支持ARP協議。
-promisc 設置是否支持網卡的promiscuous模式,若是選擇此參數,網卡將接收網絡中發給它全部的數據包
-allmulti 設置是否支持多播模式,若是選擇此參數,網卡將接收網絡中全部的多播數據包
-a 顯示所有接口信息
-s 顯示摘要信息(相似於 netstat -i)
add 給指定網卡配置IPv6地址
del 刪除指定網卡的IPv6地址
<硬件地址> 配置網卡最大的傳輸單元
mtu<字節數> 設置網卡的最大傳輸單元 (bytes)
netmask<子網掩碼> 設置網卡的子網掩碼。掩碼能夠是有前綴0x的32位十六進制數,也能夠是用點分開的4個十進制數。若是不打算將網絡分紅子網,能夠無論這一選項;若是要使用子網,那麼請記住,網絡中每個系統必須有相同子網掩碼。
tunel 創建隧道
dstaddr 設定一個遠端地址,創建點對點通訊
-broadcast<地址> 爲指定網卡設置廣播協議
-pointtopoint<地址> 爲網卡設置點對點通信協議
multicast 爲網卡設置組播標誌
address 爲網卡設置IPv4地址
txqueuelen<長度> 爲網卡設置傳輸列隊的長度
#顯示網絡設備信息 $ifconfig #啓動關閉指定網卡 $ifconfig eth0 up $ifconfig eth0 down #配置IP地址 $ifconfig eth0 ip #啓用和關閉ARP協議 $ifconfig eth0 arp $ifconfig eth0 -arp #設置最大傳輸單元 $ifconfig eth0 mtu 1500
eth0 表示第一塊網卡, 其中 HWaddr 表示網卡的物理地址
inet addr 用來表示網卡的IP地址
lo 是表示主機的回壞地址,這個通常是用來測試一個網絡程序,但又不想讓局域網或外網的用戶可以查看,只能在此臺主機上運行和查看所用的網絡接口。
第一行:鏈接類型:Ethernet(以太網)HWaddr(硬件mac地址)
第二行:網卡的IP地址、子網、掩碼
第三行:UP(表明網卡開啓狀態)RUNNING(表明網卡的網線被接上)MULTICAST(支持組播)MTU:1500(最大傳輸單元):1500字節
第4、五行:接收、發送數據包狀況統計
第七行:接收、發送數據字節數統計信息。
Hostname is used to display the system's DNS name, and to display or set its hostname or NIS domain name.
主機名用於顯示系統的DNS名稱,並顯示或設置其主機名或NIS域名。
hostname [-a|--alias] [-d|--domain] [-f|--fqdn|--long] [-A|--all-fqdns] [-i|--ip-address] [-I|--all-ip-addresses] [-s|--short] [-y|--yp|--nis] hostname [-b|--boot] [-F|--file filename] [hostname] hostname [-h|--help] [-V|--version]
-v:詳細信息模式; -a:顯示主機別名; -d:顯示DNS域名; -f:顯示FQDN名稱; -i:顯示主機的ip地址; -s:顯示短主機名稱,在第一個點處截斷; -y:顯示NIS域名。
#查看主機ip,這個命令我最推薦的一個用法就是查看主機ip,以前我一直用ifconfig $hostname -i
traceroute tracks the route packets taken from an IP network on their way to a given host. It utilizes the IP protocol's time to live (TTL) field and attempts to elicit an ICMP TIME_EXCEEDED response from each gateway along the path to the host.
traceroute跟蹤從IP網絡獲取到給定主機的路由信息包。 它利用IP協議的生存時間(TTL)字段並嘗試從每一個網關到主機的路徑引起ICMP TIME_EXCEEDED響應。
traceroute [-46dFITUnreAV] [-f first_ttl] [-g gate,...] [-i device] [-m max_ttl] [-p port] [-s src_addr] [-q nqueries] [-N squeries] [-t tos] [-l flow_label] [-w waittime] [-z sendwait] [-UL] [-D] [-P proto] [--sport=port] [-M method] [-O mod_options] [--mtu] [--back] host [packet_len]
-d 使用Socket層級的排錯功能。
-f 設置第一個檢測數據包的存活數值TTL的大小。
-F 設置勿離斷位。
-g 設置來源路由網關,最多可設置8個。
-i 使用指定的網絡界面送出數據包。
-I 使用ICMP迴應取代UDP資料信息。
-m 設置檢測數據包的最大存活數值TTL的大小。
-n 直接使用IP地址而非主機名稱。
-p 設置UDP傳輸協議的通訊端口。
-r 忽略普通的Routing Table,直接將數據包送到遠端主機上。
-s 設置本地主機送出數據包的IP地址。
-t 設置檢測數據包的TOS數值。
-v 詳細顯示指令的執行過程。
-w 設置等待遠端主機回報的時間。
-x 開啓或關閉數據包的正確性檢驗。
#traceroute 一下百度,看下數據包的路由途徑 $ traceroute www.baidu.com traceroute: Warning: www.baidu.com has multiple addresses; using 183.232.231.172 traceroute to www.baidu.com (183.232.231.172), 64 hops max, 52 byte packets 1 192.168.0.1 (192.168.0.1) 6.059 ms 0.879 ms 0.843 ms 2 192.168.1.1 (192.168.1.1) 1.305 ms 2.232 ms 2.167 ms 3 10.104.0.1 (10.104.0.1) 5.085 ms 5.534 ms 4.466 ms 4 221.131.253.13 (221.131.253.13) 4.633 ms 11.736 ms 4.199 ms 5 117.148.181.1 (117.148.181.1) 4.544 ms * 112.11.233.49 (112.11.233.49) 13.384 ms 6 221.183.47.165 (221.183.47.165) 6.591 ms 6.643 ms 221.183.47.161 (221.183.47.161) 5.591 ms 7 * 221.183.40.225 (221.183.40.225) 27.242 ms 25.222 ms 8 221.183.59.154 (221.183.59.154) 27.937 ms 27.501 ms 26.869 ms 9 120.241.49.198 (120.241.49.198) 60.772 ms 120.241.49.30 (120.241.49.30) 33.451 ms 120.241.48.190 (120.241.48.190) 45.563 ms 10 * * * 11 * * * 12 * * * 13 * * * 14 * * * 15 * * * 16 * * *
記錄按序列號從1開始,每行紀錄就是一跳 ,每跳錶示一個網關,咱們看到每行有三個時間,單位是 ms,其實就是-q的默認參數。探測數據包向每一個網關發送三個數據包後,網關響應後返回的時間;若是您用 traceroute -q 10 www.baidu.com,表示向每一個網關發送10個數據包。
有時咱們traceroute 一臺主機時,會看到有一些行是以星號表示的。出現這樣的狀況,多是防火牆封掉了ICMP的返回信息,因此咱們得不到什麼相關的數據包返回數據。
Route manipulates the kernel's IP routing tables. Its primary use is to set up static routes to specific hosts or networks via an interface after it has been config‐ured with the ifconfig(8) program.
Route操縱內核的IP路由表。 它的主要用途是在使用ifconfig(8)程序對其進行配置後,經過接口設置到特定主機或網絡的靜態路由。
route [-CFvnNee] [-A family |-4|-6] route [-v] [-A family |-4|-6] add [-net|-host] target [netmask Nm] [gw Gw] [metric N] [mss M] [window W] [irtt I] [reject] [mod] [dyn] [reinstate] [[dev] If] route [-v] [-A family |-4|-6] del [-net|-host] target [gw Gw] [netmask Nm] [metric N] [[dev] If]
-c 顯示更多信息
-n 不解析名字
-v 顯示詳細的處理信息
-F 顯示發送信息
-C 顯示路由緩存
-f 清除全部網關入口的路由表。
-p 與 add 命令一塊兒使用時使路由具備永久性。
add:添加一條新路由。
del:刪除一條路由。
-net:目標地址是一個網絡。
-host:目標地址是一個主機。
#顯示當前路由 $route #屏蔽一條路由 $route add -net 224.0.0.0 netmask 240.0.0.0 reject #刪除路由記錄 $route del -net 224.0.0.0 netmask 240.0.0.0 #刪除和添加設置默認網關 $route del default gw 192.168.0.100 $route add default gw 192.168.0.100
GNU Wget is a free utility for non-interactive download of files from the Web. It supports HTTP, HTTPS, and FTP protocols, as well as retrieval through HTTP proxies.
GNU Wget是一個免費實用程序,用於從Web非交互式下載文件。 它支持HTTP,HTTPS和FTP協議,以及經過HTTP代理進行檢索。
wget [option]... [URL]...
啓動: -V, --version 顯示 Wget 的版本信息並退出。 -h, --help 打印此幫助。 -b, --background 啓動後轉入後臺。 -e, --execute=COMMAND 運行一個「.wgetrc」風格的命令。 日誌和輸入文件: -o, --output-file=FILE 將日誌信息寫入 FILE。 -a, --append-output=FILE 將信息添加至 FILE。 -d, --debug 打印大量調試信息。 -q, --quiet 安靜模式 (無信息輸出)。 -v, --verbose 詳盡的輸出 (此爲默認值)。 -nv, --no-verbose 關閉詳盡輸出,但不進入安靜模式。 -i, --input-file=FILE 下載本地或外部 FILE 中的 URLs。 -F, --force-html 把輸入文件當成 HTML 文件。 -B, --base=URL 解析與 URL 相關的 HTML 輸入文件 (由 -i -F 選項指定)。 --config=FILE Specify config file to use. 下載: -t, --tries=NUMBER 設置重試次數爲 NUMBER (0 表明無限制)。 --retry-connrefused 即便拒絕鏈接也是重試。 -O, --output-document=FILE 將文檔寫入 FILE。 -nc, --no-clobber skip downloads that would download to existing files (overwriting them). -c, --continue 斷點續傳下載文件。 --progress=TYPE 選擇進度條類型。 -N, --timestamping 只獲取比本地文件新的文件。 --no-use-server-timestamps 不用服務器上的時間戳來設置本地文件。 -S, --server-response 打印服務器響應。 --spider 不下載任何文件。 -T, --timeout=SECONDS 將全部超時設爲 SECONDS 秒。 --dns-timeout=SECS 設置 DNS 查尋超時爲 SECS 秒。 --connect-timeout=SECS 設置鏈接超時爲 SECS 秒。 --read-timeout=SECS 設置讀取超時爲 SECS 秒。 -w, --wait=SECONDS 等待間隔爲 SECONDS 秒。 --waitretry=SECONDS 在獲取文件的重試期間等待 1..SECONDS 秒。 --random-wait 獲取多個文件時,每次隨機等待間隔 0.5*WAIT...1.5*WAIT 秒。 --no-proxy 禁止使用代理。 -Q, --quota=NUMBER 設置獲取配額爲 NUMBER 字節。 --bind-address=ADDRESS 綁定至本地主機上的 ADDRESS (主機名或是 IP)。 --limit-rate=RATE 限制下載速率爲 RATE。 --no-dns-cache 關閉 DNS 查尋緩存。 --restrict-file-names=OS 限定文件名中的字符爲 OS 容許的字符。 --ignore-case 匹配文件/目錄時忽略大小寫。 -4, --inet4-only 僅鏈接至 IPv4 地址。 -6, --inet6-only 僅鏈接至 IPv6 地址。 --prefer-family=FAMILY 首先鏈接至指定協議的地址 FAMILY 爲 IPv6,IPv4 或是 none。 --user=USER 將 ftp 和 http 的用戶名均設置爲 USER。 --password=PASS 將 ftp 和 http 的密碼均設置爲 PASS。 --ask-password 提示輸入密碼。 --no-iri 關閉 IRI 支持。 --local-encoding=ENC IRI (國際化資源標識符) 使用 ENC 做爲本地編碼。 --remote-encoding=ENC 使用 ENC 做爲默認遠程編碼。 --unlink remove file before clobber. 目錄: -nd, --no-directories 不建立目錄。 -x, --force-directories 強制建立目錄。 -nH, --no-host-directories 不要建立主目錄。 --protocol-directories 在目錄中使用協議名稱。 -P, --directory-prefix=PREFIX 以 PREFIX/... 保存文件 --cut-dirs=NUMBER 忽略遠程目錄中 NUMBER 個目錄層。 HTTP 選項: --http-user=USER 設置 http 用戶名爲 USER。 --http-password=PASS 設置 http 密碼爲 PASS。 --no-cache 不在服務器上緩存數據。 --default-page=NAME 改變默認頁 (默認頁一般是「index.html」)。 -E, --adjust-extension 以合適的擴展名保存 HTML/CSS 文檔。 --ignore-length 忽略頭部的‘Content-Length’區域。 --header=STRING 在頭部插入 STRING。 --max-redirect 每頁所容許的最大重定向。 --proxy-user=USER 使用 USER 做爲代理用戶名。 --proxy-password=PASS 使用 PASS 做爲代理密碼。 --referer=URL 在 HTTP 請求頭包含‘Referer: URL’。 --save-headers 將 HTTP 頭保存至文件。 -U, --user-agent=AGENT 標識爲 AGENT 而不是 Wget/VERSION。 --no-http-keep-alive 禁用 HTTP keep-alive (永久鏈接)。 --no-cookies 不使用 cookies。 --load-cookies=FILE 會話開始前從 FILE 中載入 cookies。 --save-cookies=FILE 會話結束後保存 cookies 至 FILE。 --keep-session-cookies 載入並保存會話 (非永久) cookies。 --post-data=STRING 使用 POST 方式;把 STRING 做爲數據發送。 --post-file=FILE 使用 POST 方式;發送 FILE 內容。 --content-disposition 當選中本地文件名時 容許 Content-Disposition 頭部 (尚在實驗)。 --auth-no-challenge 發送不含服務器詢問的首次等待 的基本 HTTP 驗證信息。 HTTPS (SSL/TLS) 選項: --secure-protocol=PR 選擇安全協議,能夠是 auto、SSLv二、 SSLv3 或是 TLSv1 中的一個。 --no-check-certificate 不要驗證服務器的證書。 --certificate=FILE 客戶端證書文件。 --certificate-type=TYPE 客戶端證書類型,PEM 或 DER。 --private-key=FILE 私鑰文件。 --private-key-type=TYPE 私鑰文件類型,PEM 或 DER。 --ca-certificate=FILE 帶有一組 CA 認證的文件。 --ca-directory=DIR 保存 CA 認證的哈希列表的目錄。 --random-file=FILE 帶有生成 SSL PRNG 的隨機數據的文件。 --egd-file=FILE 用於命名帶有隨機數據的 EGD 套接字的文件。 FTP 選項: --ftp-user=USER 設置 ftp 用戶名爲 USER。 --ftp-password=PASS 設置 ftp 密碼爲 PASS。 --no-remove-listing 不要刪除‘.listing’文件。 --no-glob 不在 FTP 文件名中使用通配符展開。 --no-passive-ftp 禁用「passive」傳輸模式。 --retr-symlinks 遞歸目錄時,獲取連接的文件 (而非目錄)。 遞歸下載: -r, --recursive 指定遞歸下載。 -l, --level=NUMBER 最大遞歸深度 (inf 或 0 表明無限制,即所有下載)。 --delete-after 下載完成後刪除本地文件。 -k, --convert-links 讓下載獲得的 HTML 或 CSS 中的連接指向本地文件。 -K, --backup-converted 在轉換文件 X 前先將它備份爲 X.orig。 -m, --mirror -N -r -l inf --no-remove-listing 的縮寫形式。 -p, --page-requisites 下載全部用於顯示 HTML 頁面的圖片之類的元素。 --strict-comments 用嚴格方式 (SGML) 處理 HTML 註釋。 遞歸接受/拒絕: -A, --accept=LIST 逗號分隔的可接受的擴展名列表。 -R, --reject=LIST 逗號分隔的要拒絕的擴展名列表。 -D, --domains=LIST 逗號分隔的可接受的域列表。 --exclude-domains=LIST 逗號分隔的要拒絕的域列表。 --follow-ftp 跟蹤 HTML 文檔中的 FTP 連接。 --follow-tags=LIST 逗號分隔的跟蹤的 HTML 標識列表。 --ignore-tags=LIST 逗號分隔的忽略的 HTML 標識列表。 -H, --span-hosts 遞歸時轉向外部主機。 -L, --relative 只跟蹤有關係的連接。 -I, --include-directories=LIST 容許目錄的列表。 --trust-server-names use the name specified by the redirection url last component. -X, --exclude-directories=LIST 排除目錄的列表。 -np, --no-parent 不追溯至父目錄。
參數有點多,不要緊,經常使用的掌握,其餘的用的時候再查
#下載某個文件,wget 文件的地址 $wget https://blog.csdn.net/qq_38646470
vmstat reports information about processes, memory, paging, block IO, traps, disks and cpu activity.
vmstat報告有關進程,內存,頁面調度,塊IO,陷阱,磁盤和cpu活動的信息。
vmstat [options] [delay [count]]
-a:顯示活躍和非活躍內存
-f:顯示從系統啓動至今的fork數量 。
-m:顯示slabinfo
-n:只在開始時顯示一次各字段名稱。
-s:顯示內存相關統計信息及多種系統活動數量。
delay:刷新時間間隔。若是不指定,只顯示一條結果。
count:刷新次數。若是不指定刷新次數,但指定了刷新時間間隔,這時刷新次數爲無窮。
-d:顯示磁盤相關統計信息。
-p:顯示指定磁盤分區統計信息
-S:使用指定單位顯示。參數有 k 、K 、m 、M ,分別表明1000、102四、1000000、1048576字節(byte)。默認單位爲K(1024 bytes)
#顯示虛擬內存狀況 $ vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 23764228 507816 36953948 0 0 3 5 0 0 1 0 98 0 0
Procs(進程):
r: 運行隊列中進程數量
b: 等待IO的進程數量
Memory(內存):
swpd: 使用虛擬內存大小
free: 可用內存大小
buff: 用做緩衝的內存大小
cache: 用做緩存的內存大小
Swap:
si: 每秒從交換區寫到內存的大小
so: 每秒寫入交換區的內存大小
IO:(如今的Linux版本塊的大小爲1024bytes)
bi: 每秒讀取的塊數
bo: 每秒寫入的塊數
系統:
in: 每秒中斷數,包括時鐘中斷。
cs: 每秒上下文切換數。
CPU(以百分比表示):
us: 用戶進程執行時間(user time)
sy: 系統進程執行時間(system time)
id: 空閒時間(包括IO等待時間),中央處理器的空閒時間 。以百分比表示。
wa: 等待IO時間
#表示在3秒時間內進行3次採樣。將獲得一個數據彙總他可以反映真正的系統狀況。 $vmstat 3 3 #查看系統fork多少次 $ vmstat -f 166484246 forks #查看內存使用的詳細信息 $vmstat -s #查看磁盤的讀/寫 $vmstat -d #查看系統的slab信息 $vmstat -m
free displays the total amount of free and used physical and swap memory in the system, as well as the buffers and caches used by the kernel.
free顯示系統中可用和可用的物理內存和交換內存的總量,以及內核使用的緩衝區和高速緩存。
free [options]
-b 以Byte爲單位顯示內存使用狀況。
-k 以KB爲單位顯示內存使用狀況。
-m 以MB爲單位顯示內存使用狀況。
-g 以GB爲單位顯示內存使用狀況。
-o 不顯示緩衝區調節列。
-s<間隔秒數> 持續觀察內存使用情況。
-t 顯示內存總和列。
#顯示內存使用狀況 $ free total used free shared buff/cache available Mem: 65808884 4582700 23754736 684 37471448 60913052 $ free -h total used free shared buff/cache available Mem: 62G 4.4G 22G 684K 35G 58G Swap: 0B 0B 0B
total:總計物理內存的大小。
used:已使用多大。
free:可用有多少。
Shared:多個進程共享的內存總額。
Buffers/cached:磁盤緩存的大小。
第三行(-/+ buffers/cached):
used:已使用多大。
free:可用有多少。
#週期性的查詢內存使用信息,5s執行一次 $ free -s 5
The top program provides a dynamic real-time view of a running system. It can display system summary information as well as a list of processes or threads currently being managed by the Linux kernel. The types of system summary information shown and the types, order and size of information displayed for processes are all user configurable and that configuration can be made persistent across restarts. The program provides a limited interactive interface for process manipulation as well as a much more extensive interface for personal configuration -- encompassing every aspect of its operation. And while top is referred to throughout this document, you are free to name the program anything you wish. That new name, possibly an alias, will then be reflected on top's display and used when reading and writing a configuration file.
top程序提供正在運行的系統的動態實時視圖。 它能夠顯示系統摘要信息以及Linux內核當前正在管理的進程或線程的列表。 所顯示的系統摘要信息的類型以及爲進程顯示的信息的類型,順序和大小都是用戶可配置的,而且可使配置在從新啓動後保持不變。 該程序爲流程操做提供了一個有限的交互式界面,併爲我的配置提供了更爲普遍的界面-涵蓋了其操做的各個方面。 儘管在本文檔中始終引用top,可是您能夠隨意爲程序命名。 而後,該新名稱(多是別名)將反映在頂部的顯示屏上,並在讀寫配置文件時使用。
top -hv|-bcHiOSs -d secs -n max -u|U user -p pid -o fld -w [cols]
-b 批處理
-c 顯示完整的治命令
-I 忽略失效過程
-s 保密模式
-S 累積模式
-i<時間> 設置間隔時間
-u<用戶名> 指定用戶名
-p<進程號> 指定進程
-n<次數> 循環顯示的次數
#top $ top top - 00:56:07 up 149 days, 14:40, 1 user, load average: 0.00, 0.02, 0.05 Tasks: 254 total, 1 running, 253 sleeping, 0 stopped, 0 zombie %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 KiB Mem : 65808884 total, 23749772 free, 4586160 used, 37472952 buff/cache KiB Swap: 0 total, 0 free, 0 used. 60909608 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 24397 dongshan 20 0 17.972g 688312 13728 S 6.2 1.0 7:09.11 java 1 root 20 0 42140 3684 1476 S 0.0 0.0 23:58.88 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:05.47 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:16.06 ksoftirqd/0 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 7 root rt 0 0 0 0 S 0.0 0.0 1:27.00 migration/0 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcuob/0
第一行,任務隊列信息,同 uptime 命令的執行結果,具體參數說明狀況以下:
00:56:07 — 當前系統時間
up 149 days, 14:40 — 系統已經運行了149天14小時40分鐘(在這期間系統沒有重啓過的)
1users — 當前有1個用戶登陸系統
load average: 0.00, 0.02, 0.05 — load average後面的三個數分別是1分鐘、5分鐘、15分鐘的負載狀況。
load average數據是每隔5秒鐘檢查一次活躍的進程數,而後按特定算法計算出的數值。若是這個數除以邏輯CPU的數量,結果高於5的時候就代表系統在超負荷運轉了。
第二行,Tasks — 任務(進程)
系統如今共有254個進程,其中處於運行中的有1個,253個在休眠(sleep),stoped狀態的有0個,zombie狀態(殭屍)的有0個。
第三行,cpu狀態信息
%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 — 內核空間佔用CPU的百分比。
0.0 ni — 改變過優先級的進程佔用CPU的百分比
98.3 id — 空閒CPU百分比
0.1 wa — IO等待佔用CPU的百分比
0.0 hi — 硬中斷(Hardware IRQ)佔用CPU的百分比
0.0 si — 軟中斷(Software Interrupts)佔用CPU的百分比
第四行,內存狀態
65808884 total 物理內存總量
23749772 free 使用中的內存總量
4586160 used 空閒內存總量
37472952 buff/cache 緩存的內存量
第五行,swap交換分區信息
0 total 交換區總量
0 use 使用的交換區總量
0 free 空閒交換區總量
60909608 avail Mem 可用交換區總量
第七行如下:各進程(任務)的狀態監控
PID — 進程id
USER — 進程全部者
PR — 進程優先級
NI — nice值。負值表示高優先級,正值表示低優先級
VIRT — 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES
RES — 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
SHR — 共享內存大小,單位kb
S — 進程狀態。D=不可中斷的睡眠狀態 R=運行 S=睡眠 T=跟蹤/中止 Z=殭屍進程
%CPU — 上次更新到如今的CPU時間佔用百分比
%MEM — 進程使用的物理內存百分比
TIME+ — 進程使用的CPU時間總計,單位1/100秒
COMMAND — 進程名稱(命令名/命令行)
sar(System Activity Reporter系統活動狀況報告)是目前 Linux 上最爲全面的系統性能分析工具之一,能夠從多方面對系統的活動進行報告,包括:文件的讀寫狀況、 系統調用的使用狀況、磁盤I/O、CPU效率、內存使用情況、進程活動及IPC有關的活動等。
sar [options] [-A] [-o file] t [n]
-A:全部報告的總和
-u:輸出CPU使用狀況的統計信息
-v:輸出inode、文件和其餘內核表的統計信息
-d:輸出每個塊設備的活動信息
-r:輸出內存和交換空間的統計信息
-b:顯示I/O和傳送速率的統計信息
-a:文件讀寫狀況
-c:輸出進程統計信息,每秒建立的進程數
-R:輸出內存頁面的統計信息
-y:終端設備活動狀況
-w:輸出系統交換活動信息
微信搜索 DC952721 或者掃描二維碼,便可訂閱。