用心分享,共同成長
沒有什么比每天進步一點點更重要了
本文已收錄到我的github:https://github.com/midou-tech/articles/tree/master/docs/linux ,歡迎star和issues,
序言
?本篇文章主要講解了一些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 <=='' whereXXX'' 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'' andoperands'' 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=https://www.cnblogs.com/zhonglongbo/p/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:輸出系統交換活動資訊
微信搜索 DC952721 或者掃描二維碼,即可訂閱,

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/144535.html
標籤:Linux
