主頁 > 作業系統 > 手冊

手冊

2020-10-01 08:00:32 作業系統

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還可以列出指定目錄下的檔案串列,

image-20191221161638964image-20191221161638964

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 finalcharacter 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結尾的檔案

image-20191225235202419image-20191225235202419

-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/nmoo/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:輸出系統交換活動資訊

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

標籤:Linux

上一篇:Nginx配置location與rewrite規則教程

下一篇:無法正常進入系統,疑似升級程式導致,求教。

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • CA和證書

    1、在 CentOS7 中使用 gpg 創建 RSA 非對稱密鑰對 gpg --gen-key #Centos上生成公鑰/密鑰對(存放在家目錄.gnupg/) 2、將 CentOS7 匯出的公鑰,拷貝到 CentOS8 中,在 CentOS8 中使用 CentOS7 的公鑰加密一個檔案 gpg -a ......

    uj5u.com 2020-09-10 00:09:53 more
  • Kubernetes K8S之資源控制器Job和CronJob詳解

    Kubernetes的資源控制器Job和CronJob詳解與示例 ......

    uj5u.com 2020-09-10 00:10:45 more
  • VMware下安裝CentOS

    VMware下安裝CentOS 一、軟硬體準備 1 Centos鏡像準備 1.1 CentOS鏡像下載地址 下載地址 1.2 CentOS鏡像下載程序 點擊下載地址進入如下圖的網站,選擇需要下載的版本,這里選擇的是Centos8,點擊如圖所示。 決定選擇Centos8后,選擇想要的鏡像源進行下載,此 ......

    uj5u.com 2020-09-10 00:12:10 more
  • 如何使用Grep命令查找多個字串

    如何使用Grep 命令查找多個字串 大家好,我是良許! 今天向大家介紹一個非常有用的技巧,那就是使用 grep 命令查找多個字串。 簡單介紹一下,grep 命令可以理解為是一個功能強大的命令列工具,可以用它在一個或多個輸入檔案中搜索與正則運算式相匹配的文本,然后再將每個匹配的文本用標準輸出的格式 ......

    uj5u.com 2020-09-10 00:12:28 more
  • git配置http代理

    git配置http代理 經常遇到克隆 github 慢的問題,這里記錄一下幾種配置 git 代理的方法,解決 clone github 過慢。 目錄 git配置代理 git單獨配置github代理 git配置全域代理 配置終端環境變數 git配置代理 主要使用 git config 命令 git單獨 ......

    uj5u.com 2020-09-10 00:12:33 more
  • Linux npm install 裝包時提示Error EACCES permission denied解

    npm install 裝包時提示Error EACCES permission denied解決辦法 ......

    uj5u.com 2020-09-10 00:12:53 more
  • Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包

    Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包。 18 (flaskApi) [root@67 flaskDemo]# yum -y install nginx 19 已加載插件:fastestmirror, langpacks 20 Loading ......

    uj5u.com 2020-09-10 00:13:13 more
  • Linux查看服務器暴力破解ssh IP

    在公網的服務器上經常遇到別人爆破你服務器的22埠,用來挖礦或者干其他嘿嘿嘿的事情~ 這種情況下正確的做法是: 修改默認ssh的22埠 使用設定密鑰登錄或者白名單ip登錄 建議服務器密碼為復雜密碼 創建普通用戶登錄服務器(root權限過大) 建立堡壘機,實作統一管理服務器 統計爆破IP [root ......

    uj5u.com 2020-09-10 00:13:17 more
  • CentOS 7系統常見快捷鍵操作方式

    Linux系統中一些常見的快捷方式,可有效提高操作效率,在某些時刻也能避免操作失誤帶來的問題。 ......

    uj5u.com 2020-09-10 00:13:31 more
  • CentOS 7作業系統目錄結構介紹

    作業系統存在著大量的資料檔案資訊,相應檔案資訊會存在于系統相應目錄中,為了更好的管理資料資訊,會將系統進行一些目錄規劃,不同目錄存放不同的資源。 ......

    uj5u.com 2020-09-10 00:13:35 more
最新发布
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:43:21 more
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:42:36 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:26:53 more
  • 設定Windows主機的瀏覽器為wls2的默認瀏覽器

    這里以Chrome為例。 1. 準備作業 wsl是可以使用Windows主機上安裝的exe程式,出于安全考慮,默認情況下改功能是無法使用。要使用的話,終端需要以管理員權限啟動。 我這里以Windows Terminal為例,介紹如何默認使用管理員權限打開終端,具體操作如下圖所示: 2. 操作 wsl ......

    uj5u.com 2023-04-19 09:25:49 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:19:04 more
  • Linux學習筆記

    IP地址和主機名 IP地址 ifconfig可以用來查詢本機的IP地址,如果不能使用,可以通過install net-tools安裝。 Centos系統下ens33表示主網卡;inet后表示IP地址;lo表示本地回環網卡; 127.0.0.1表示代指本機;0.0.0.0可以用于代指本機,同時在放行設 ......

    uj5u.com 2023-04-18 06:52:01 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:50 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:01 more
  • 你是不是暴露了?

    作者:袁首京 原創文章,轉載時請保留此宣告,并給出原文連接。 如果您是計算機相關從業人員,那么應該經歷不止一次網路安全專項檢查了,你肯定是收到過資訊系統技術檢測報告,要求你加強風險監測,確保你提供的系統服務堅實可靠了。 沒檢測到問題還好,檢測到問題的話,有些處理起來還是挺麻煩的,尤其是線上正在運行的 ......

    uj5u.com 2023-04-05 16:52:56 more
  • 細節拉滿,80 張圖帶你一步一步推演 slab 記憶體池的設計與實作

    1. 前文回顧 在之前的幾篇記憶體管理系列文章中,筆者帶大家從宏觀角度完整地梳理了一遍 Linux 記憶體分配的整個鏈路,本文的主題依然是記憶體分配,這一次我們會從微觀的角度來探秘一下 Linux 內核中用于零散小記憶體塊分配的記憶體池 —— slab 分配器。 在本小節中,筆者還是按照以往的風格先帶大家簡單 ......

    uj5u.com 2023-04-05 16:44:11 more