聲明
由於平時工作或多或少的都要接觸到 Linux 指令,每次用到每次百度,着實有點酸爽 ,偶然發現一篇總結比較全的文章,轉載至此,方便下次直接打開博客查詢。
如下是作者信息,歡迎小伙伴們給作者 star 和 issues。
作者:清波
鏈接:https://github.com/midou-tech/articles/tree/master/docs/linux
如下是原文部分。
序言
本篇文章主要講解了一些 Linux 常用命令,主要講解模式是,命令介紹、命令參數格式、命令參數、命令常用參數示例。由於 Linux 命令較多,我還特意選了一些日常使用較為頻繁的命令進行講解,但還是免不了文章很長,建議大家收藏起來,用到的時候不會了再來閱讀。當然學習 Linux 命令最好的方法是學會使用 Linux 自帶的 man 手冊,所有 Linux 命令規范和使用細則都會在該手冊中講解的很清楚,我在書寫的過程中也是參考該手冊和日常使用情況。
如果還有哪些是大家希望再補充的命令,可以留言給我,我會持續更新該文章,同時也作為我學習和工作的手冊。
Linux初級指令
ls ——List
ls 介紹
這是我學 Linux 的第一個命令,相信也是很多人學習 Linux 的第一個命令。ls 全稱 list.
List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
列出有關文件的信息(默認為當前目錄)。如果沒有指定-cftuvSUX或——Sort,則按字母順序排序。
官方的說的很清楚,默認列出當前目錄,所以可以列出其他目錄或者路徑下的文件信息或者目錄信息。
eg:
$ls /etc/hosts
/etc/hosts
ls 還可以列出指定目錄下的文件列表。

ls 參數格式
ls [OPTION]... [FILE]...
ls命令參數
-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 用法示例:
$ 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
pwd —— Print Working Directory
pwd介紹
打印當前工作目錄的完整路徑名。(print name of current/working directory)
參數格式
pwd [OPTION]...
pwd 用法展示
[test@Mfate171193 /home/test] 20:06
$ pwd
/home/test
touch (change file timestamps)
touch介紹
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參數格式
touch [OPTION]... FILE...
touch命令參數
-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
#可以看到只創建了test1、test2、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: -
cat&tac (Concatenate FILE(s), or standard input, to standard output.)
cat介紹
Concatenate FILE(s), or standard input, to standard output.
將FILE或標准輸入連接到標准輸出。
cat 參數格式
cat [OPTION]... [FILE]...
cat命令參數
-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常用參數示例
$ 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命令與cat命令展示內容相反,不能帶行號輸出。
$ tac test
-e 等價於 -vE
-b, --number-nonblank 對非空輸出行編號
-A, --show-all 等價於 -vET
mkdir —— Make Directory**
mkdir介紹
Create the DIRECTORY(ies), if they do not already exist.
如果目錄不存在,則創建目錄。
mkdir參數格式
mkdir [OPTION]... DIRECTORY...
mkdir命令參數
-m, --mode=模式,設定權限<模式> (類似 chmod),而不是 rwxrwxrwx 減 umask
-p, --parents 可以是一個路徑名稱。此時若路徑中的某些目錄尚不存在,加上此選項后,系統將自動建立好那些尚不存在的目錄,即一次可以建立多個目錄;
-v, --verbose 每次創建新目錄都顯示信息
--help 顯示此幫助信息並退出
--version 輸出版本信息並退出
mkdir常用參數示例
#創建目錄文件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’
cd —— Change Directory
cd介紹
切換當前目錄至指定目錄
常用參數示例
#打印當前目錄到標准輸出
$ pwd
/Users/localhost
#切換到目錄/
$cd /
cd命令沒什么參數就是切換目錄到指定路徑下,較為簡單,但是使用評率極高。
rm&rmdir —— Remove Directory
rm介紹
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參數格式
rm [-dfiPRrvW] file ...
rm命令參數
-f, --force 忽略不存在的文件,從不給出提示。
-i, --interactive 進行交互式刪除
-r, -R, --recursive 指示rm將參數中列出的全部目錄和子目錄均遞歸地刪除。
-d, --dir 刪除空目錄
rm常用參數示例
# 創建三個文件
$ 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 刪除空目錄
mv —— Move
mv介紹
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參數格式
mv [-f | -i | -n] [-v] source target mv [-f | -i | -n] [-v] source ... directory
mv命令參數
-b :若需覆蓋文件,則覆蓋前先行備份。
-f :force 強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋;
-i :若目標文件 (destination) 已經存在時,就會詢問是否覆蓋
-n:不要覆蓋現有文件。 (-n選項將覆蓋以前的任何-f或-i選項。)
-u :若目標文件已經存在,且 source 比較新,才會更新(update)
mv常用參數示例
##修改文件名
$ 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文件的時候用起來很舒服,可以把編譯的結果移到指定目錄並重命名。
cp —— Copy
cp介紹
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參數格式
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
echo
echo介紹
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 用來查看某個環境變量的值
head&tail
head介紹
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參數格式
head [-n count | -c bytes] [file ...]
head常用參數示例
-n 展示前n行
-c 展示前n個字符
head常用參數示例
$ 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(下面會講)。
more&less
more介紹
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參數格式
more [-dlfpcsu ] [-num ] [+/ pattern] [+ linenum] [file ... ]
more命令參數
+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 在查看之前不會加載整個文件
wc
wc介紹
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 charac-ter. Characters beyond the final character will not be included in the line count.
wc實用程序顯示每個輸入文件或標准輸入(如果未指定文件)中每個輸入文件中包含的行數,字數和字節數。 一行定義為由字符分隔的字符串。 最后一個字符之后的字符將不包括在行數中。
這條命令對我來說還是比較深刻的,我剛學習編程不久的時候,我感覺我寫的代碼很多了,那個時候我就很想知道我寫了多少行代碼了,一時興起,說干就干,直接寫了個程序去統計了一把,寫完之后還感覺自己蠻厲害的,誰知道之后學習到這個wc,然后就覺得自己還是嫩了點,還是要多學習。
wc參數格式
wc [-clmw] [file ...]
wc命令參數
-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
date & cal
date介紹
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參數格式
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]
date命令參數
%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命令可以用來顯示公歷(陽歷)日歷。
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]
cal命令參數
-1 顯示一個月的月歷
-3 顯示系統前一個月,當前月,下一個月的月歷
-s 顯示星期天為一個星期的第一天,默認的格式
-m 顯示星期一為一個星期的第一天
-j 顯示在當年中的第幾天(一年日期按天算,從1月1號算起,默認顯示當前月在一年中的天數)
-y 顯示當前年份的日歷
cal常用參數示例
$ 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
which
which介紹
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命令,就可以看到某個系統命令是否存在,以及執行的到底是哪一個位置的命令。
which參數格式
-n 指定文件名長度,指定的長度必須大於或等於所有文件中最長的文件名。
-p 與-n參數相同,但此處的包括了文件的路徑。
-w 指定輸出時欄位的寬度。
which常用參數示例
$ 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
whereis介紹
whereis命令只能用於程序名的搜索,而且只搜索二進制文件(參數-b)、man說明文件(參數-m)和源代碼文件(參數-s)。如果省略參數,則返回所有信息。
whereis參數格式
whereis [program ...]
whereis命令參數
-b 定位可執行文件。
-m 定位幫助文件。
-s 定位源代碼文件。
-u 搜索默認路徑下除可執行文件、源代碼文件、幫助文件以外的其它文件。
-B 指定搜索可執行文件的路徑。
-M 指定搜索幫助文件的路徑。
-S 指定搜索源代碼文件的路徑。
whereis常用參數示例
$ whereis ls
/bin/ls
$ whereis whereis
/usr/bin/whereis
nl
nl介紹
nl命令在linux系統中用來計算文件中行號。nl 可以將輸出的文件內容自動的加上行號!其默認的結果與 cat -n 有點不太一樣, nl 可以將行號做比較多的顯示設計,包括位數與是否自動補齊 0 等等的功能。
nl參數格式
nl [-p] [-b type] [-d delim] [-f type] [-h type] [-i incr] [-l num] [-n format] [-s sep] [-v startnum] [-w width] [file]
nl命令參數
-b :指定行號指定的方式,主要有兩種:
-b a :表示不論是否為空行,也同樣列出行號(類似 cat -n);
-b t :如果有空行,空的那一行不要列出行號(默認值);
-n :列出行號表示的方法,主要有三種:
-n ln :行號在螢幕的最左方顯示;
-n rn :行號在自己欄位的最右方顯示,且不加 0 ;
-n rz :行號在自己欄位的最右方顯示,且加 0 ;
-w :行號欄位的占用的位數。
-p 在邏輯定界符處不重新開始計算。
nl常用參數示例
$ 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 .
ps
ps介紹
The ps utility displays a header line, followed by lines containing information about all of your processes that have controlling terminals.
ps實用程序顯示標題行,其后是包含有關具有控制終端的所有進程的信息的行。
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]
ps命令參數
a 顯示所有進程
-a 顯示同一終端下的所有程序
-A 顯示所有進程
c 顯示進程的真實名稱
-N 反向選擇
-e 等於“-A”
e 顯示環境變量
f 顯示程序間的關系
-H 顯示樹狀結構
r 顯示當前終端的進程
T 顯示當前終端的所有程序
u 指定用戶的所有進程
-au 顯示較詳細的資訊
-aux 顯示所有包含其他使用者的行程
-C<命令> 列出指定命令的狀況
--lines<行數> 每頁顯示的行數
--width<字符數> 每頁顯示的字符數
ps常用參數示例
#查看所有進程
$ps -a
#查看進程的環境變量和程序間的關系
$ps -ef
kill&killall
kill介紹
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參數格式
kill [-s signal|-p] [-q sigval] [-a] [--] pid...
kill -l [signal]
kill命令參數
-l 信號,若果不加信號的編號參數,則使用“-l”參數會列出全部的信號名稱
-a 當處理當前進程時,不限制命令名和進程號的對應關系
-p 指定kill 命令只打印相關進程的進程號,而不發送任何信號
-s 指定發送信號
-u 指定用戶
kill常用參數示例
#查看當前系統信號
$ 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基本指令差不多了夠用了,差不多可以上你的服務器上隨便搞搞了。但是也只是簡單看看,更多的操作指令請看進階部分。
Linux進階指令
find
find介紹
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參數格式
find [-H | -L | -P] [-EXdsx] [-f path] path ... [expression] find [-H | -L | -P] [-EXdsx] -f path [path ...] [expression]
find命令參數
-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小時被改變文件數據的文件
find常用參數示例
-name參數常用參數示例 查找/user目錄下所有以.log結尾的文件

-exec 參數后面跟的是command,它的終止是以;
為結束標志的,所以這句命令后面的分號是不可缺少的,考慮到各個系統中分號會有不同的意義,所以前面加反斜杠。
舉一個我在工作中經常用到的例子,我有個日志目錄,我系統的所有日志都會打到這個目錄,目錄的日志文件命名很隨意,我沒辦法說根據名字刪除,於是我想到用日期的方式刪除,保存一個月的日志即可。
$find /home/midou/logs// -mtime +30 -name "*.log.gz" -exec rm -rf {} \;
# {} 這個是語法不能丟了 ,還有結尾的 ; 也不能丟了。
其實我把這個命令放在我的一個系統crontab文件里面,每天執行一次,這樣我的日志目錄就不用了手動清理。corntab使用詳解在后面的命令中會講到。
-exec 后面可以接任何命令,你可以靈活運用,再結合到前面的-name參數,可以玩出花來。
grep
grep介紹
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參數格式
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 ...]
grep命令參數
-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常用參數示例
$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打開的情況下。
cut
cut介紹
這個命令對我來說很有故事,當時我在學完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參數格式
cut -b list [-n] [file ...] cut -c list [file ...] cut -f list [-d delim] [-s] [file ...]
cut命令參數
-b:僅顯示行中指定直接范圍的內容;
-c:僅顯示行中指定范圍的字符;
-d:指定字段的分隔符,默認的字段分隔符為“TAB”;
-f:顯示指定字段的內容;
-n:與“-b”選項連用,不分割多字節字符;
--complement:補足被選擇的字節、字符或字段;
--out-delimiter=<字段分隔符>:指定輸出內容是的字段分割符;
cut常用參數示例
$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到結尾列
diff
diff介紹
Compare files line by line.
比較兩個文件的不同
diff參數格式
diff [OPTION]... FILES
diff命令參數
-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常用參數示例
$ diff testA.txt testB.txt
tar&gzip
tar介紹
用來壓縮和解壓文件。tar本身不具有壓縮功能。他是調用壓縮功能實現的
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]
tar命令參數
-A 新增壓縮文件到已存在的壓縮
-B 設置區塊大小
-c 建立新的壓縮文件
-d 記錄文件的差別
-r 添加文件到已經壓縮的文件
-u 添加改變了和現有的文件到已經存在的壓縮文件
-x 從壓縮的文件中提取文件
-t 顯示壓縮文件的內容
-z 支持gzip解壓文件
-j 支持bzip2解壓文件
-Z 支持compress解壓文件
-v 顯示操作過程
-l 文件系統邊界設置
-k 保留原有文件不覆蓋
-m 保留文件不被覆蓋
-W 確認壓縮文件的正確性
-b 設置區塊數目
-C 切換到指定目錄
-f 指定壓縮文件
tar常用參數示例
#打包 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
du
du介紹
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參數格式
du [-H | -L | -P] [-a | -s | -d depth] [-c] [-h | -k | -m | -g] [-x] [-I mask] [file ...]
du命令參數
-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常用參數示例
#查看指定文件大小
$du -h filename
#展示該目錄下所有文件大小,大小以可讀方式展示
$du -h /
#展示當前目錄大小
$du -sh
#展示當前目錄下每個目錄大小
$du -sh ./
#顯示所有文件的大小,以可讀方式展示
$du -ah /
df
df介紹
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參數格式
df [-b | -h | -H | -k | -m | -g | -P] [-ailn] [-t] [-T type] [file | filesystem ...]
df命令參數
-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常用參數示例
#展示當前系統磁盤使用情況,以可讀的方式展示
$ 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
lsof介紹
lsof(list open files)是一個列出當前系統打開文件的工具。(在linux環境下,任何事物都以文件的形式存在)
lsof可以打開的文件包括:
1.普通文件
2.目錄
3.網絡文件系統的文件
4.字符或設備文件
5.(函數)共享庫
6.管道,命名管道
7.符號鏈接
8.網絡文件(例如:NFS file、網絡socket,unix域名socket)
9.還有其它類型的文件,等等
這個命令在我日常工作中使用場景很多,使用范圍很廣。
lsof參數格式
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]
lsof命令參數
-a 列出打開文件存在的進程
-c<進程名> 列出指定進程所打開的文件
-g 列出GID號進程詳情
-d<文件號> 列出占用該文件號的進程
+d<目錄> 列出目錄下被打開的文件
+D<目錄> 遞歸列出目錄下被打開的文件
-n<目錄> 列出使用NFS的文件
-i<條件> 列出符合條件的進程。(4、6、協議、:端口、 @ip )
-p<進程號> 列出指定進程號所打開的文件
-u 列出UID號進程詳情
lsof常用參數示例
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
ping
ping介紹
send ICMP ECHO_REQUEST packets to network hosts
將ICMP ECHO_REQUEST數據包發送到網絡主機
ping參數格式
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
ping命令參數
-d 使用Socket的SO_DEBUG功能。
-f 極限檢測。大量且快速地送網絡封包給一台機器,看它的回應。
-n 只輸出數值。
-q 不顯示任何傳送封包的信息,只顯示最后的結果。
-r 忽略普通的Routing Table,直接將數據包送到遠端主機上。通常是查看本機的網絡接口是否有問題。
-R 記錄路由過程。
-v 詳細顯示指令的執行過程。
-c 數目:在發送指定數目的包后停止。
-i 秒數:設定間隔幾秒送一個網絡封包給一台機器,預設值是一秒送一次。
-I 網絡界面:使用指定的網絡界面送出數據包。
-l 前置載入:設置在送出要求信息之前,先行發出的數據包。
-p 范本樣式:設置填滿數據包的范本樣式。
-s 字節數:指定發送的數據字節數,預設值是56,加上8字節的ICMP頭,一共是64ICMP數據字節。
-t 存活數值:設置存活數值TTL的大小。
ping,在日常工作中都是簡單的用來測試本機與其他機器之間的網絡通信,當然如果了解這些參數的話,會有更多的用法。
ping命令參數
#檢測網絡情況
$ping host
#ping網關
$ping -b host
#ping指定次數
$ping -c 10 host
#ping指定時間間隔和次數限制
$ping -c 10 -i 0.5 host
#通過域名ping公網上的站點
netstat
netstat介紹
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參數格式
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]
netstat命令參數
-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常用參數示例
#列出所有端口使用情況
$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
ifconfig介紹
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參數格式
ifconfig [-v] [-a] [-s] [interface]
ifconfig [-v] interface [aftype] options | address ...
ifconfig命令參數
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
#啟動關閉指定網卡
$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字節
第四、五行:接收、發送數據包情況統計
第七行:接收、發送數據字節數統計信息。
hostname
hostname介紹
Hostname is used to display the system's DNS name, and to display or set its hostname or NIS domain name.
主機名用於顯示系統的DNS名稱,並顯示或設置其主機名或NIS域名。
hostname參數格式
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]
hostname命令參數
-v:詳細信息模式;
-a:顯示主機別名;
-d:顯示DNS域名;
-f:顯示FQDN名稱;
-i:顯示主機的ip地址;
-s:顯示短主機名稱,在第一個點處截斷;
-y:顯示NIS域名。
hostname常用參數示例
#查看主機ip,這個命令我最推薦的一個用法就是查看主機ip,之前我一直用ifconfig
$hostname -i
traceroute
traceroute介紹
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參數格式
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]
traceroute命令參數
-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 一下百度,看下數據包的路由途徑
$ 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
route介紹
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參數格式
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]
route命令參數
-c 顯示更多信息
-n 不解析名字
-v 顯示詳細的處理信息
-F 顯示發送信息
-C 顯示路由緩存
-f 清除所有網關入口的路由表。
-p 與 add 命令一起使用時使路由具有永久性。
add:添加一條新路由。
del:刪除一條路由。
-net:目標地址是一個網絡。
-host:目標地址是一個主機。
route常用參數示例
#顯示當前路由
$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
wget
wget介紹
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參數格式
wget [option]... [URL]...
wget命令參數
啟動:
-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、SSLv2、
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 文件的地址
$wget https://blog.csdn.net/qq_38646470
vmstat
vmstat介紹
vmstat reports information about processes, memory, paging, block IO, traps, disks and cpu activity.
vmstat報告有關進程,內存,頁面調度,塊IO,陷阱,磁盤和cpu活動的信息。
vmstat參數格式
vmstat [options] [delay [count]]
vmstat命令參數
-a:顯示活躍和非活躍內存
-f:顯示從系統啟動至今的fork數量 。
-m:顯示slabinfo
-n:只在開始時顯示一次各字段名稱。
-s:顯示內存相關統計信息及多種系統活動數量。
delay:刷新時間間隔。如果不指定,只顯示一條結果。
count:刷新次數。如果不指定刷新次數,但指定了刷新時間間隔,這時刷新次數為無窮。
-d:顯示磁盤相關統計信息。
-p:顯示指定磁盤分區統計信息
-S:使用指定單位顯示。參數有 k 、K 、m 、M ,分別代表1000、1024、1000000、1048576字節(byte)。默認單位為K(1024 bytes)
vmstat常用參數示例
#顯示虛擬內存情況
$ 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
free介紹
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參數格式
free [options]
free命令參數
-b 以Byte為單位顯示內存使用情況。
-k 以KB為單位顯示內存使用情況。
-m 以MB為單位顯示內存使用情況。
-g 以GB為單位顯示內存使用情況。
-o 不顯示緩沖區調節列。
-s<間隔秒數> 持續觀察內存使用狀況。
-t 顯示內存總和列。
free常用參數示例
#顯示內存使用情況
$ 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
top
top介紹
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參數格式
top -hv|-bcHiOSs -d secs -n max -u|U user -p pid -o fld -w [cols]
top命令參數
-b 批處理
-c 顯示完整的治命令
-I 忽略失效過程
-s 保密模式
-S 累積模式
-i<時間> 設置間隔時間
-u<用戶名> 指定用戶名
-p<進程號> 指定進程
-n<次數> 循環顯示的次數
top常用參數示例
#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
sar介紹
sar(System Activity Reporter系統活動情況報告)是目前 Linux 上最為全面的系統性能分析工具之一,可以從多方面對系統的活動進行報告,包括:文件的讀寫情況、 系統調用的使用情況、磁盤I/O、CPU效率、內存使用狀況、進程活動及IPC有關的活動等。
sar參數格式
sar [options] [-A] [-o file] t [n]
sar命令參數
-A:所有報告的總和
-u:輸出CPU使用情況的統計信息
-v:輸出inode、文件和其他內核表的統計信息
-d:輸出每一個塊設備的活動信息
-r:輸出內存和交換空間的統計信息
-b:顯示I/O和傳送速率的統計信息
-a:文件讀寫情況
-c:輸出進程統計信息,每秒創建的進程數
-R:輸出內存頁面的統計信息
-y:終端設備活動情況
-w:輸出系統交換活動信息