linux入門系列5--新手必會的linux命令

上一篇文章「linux入門系列4--vi/vim編輯器」咱們討論了在linux下如何快速高效對文本文件進行編輯和管理,本文將進一步學習必須掌握的linux命令,掌握這些命令才能讓計算機更懂你。node

就咱們前文已經裝好的centos操做系統而言,咱們操做一般有2種方式:第一種就是經過桌面圖形化操做;另一種則是經過終端輸入命令。linux

針對服務器而言咱們一般是採用遠程鏈接工具鏈接到服務器,而後以命令的方式進行管理。咱們輸入命令後計算機怎麼就知道該作什麼呢?那就得靠命令行工具(也稱終端)進行翻譯解釋,而後調用相應的接口服務完成特定的功能。shell

用戶與linux系統的交互是經過shell終端,下文講先分析shell命令行工具,再講解最基礎的linux命令。數據庫

1、shell簡介

計算機硬件是由運算器、控制器、存儲器、輸入/輸出設備等共同組成的,而讓各類硬件設備各司其職且又能協同運行的東西就是系統內核。Linux 系統的內核負責完成對硬件資源的分配、調度等管理任務。所以,系統內核對計算機的正常運行相當重要,通常不建議直接去編輯內核中的參數,而是讓用戶經過基於系統調用接口開發出的程序或服務來管理計算機,以知足平常工做的須要。而shell就是這樣一個客戶端命令行工具,充當用戶與系統內核溝通的橋樑。編程

file

Shell也稱「終端」、「殼」,是一種用c語言寫的命令行工具, 充當人與內核(硬件)之間的翻譯官,用戶把一些命令「告訴」終端,它就會調用相應的程序服務去完成某些工做。vim

1.1 shell版本

如下列舉幾種shell版本windows

  • sh(Bourne Shell): 是UNIX最初使用的 shell,並且在每種 UNIX 上均可以使用 。在shell編程方面作的很優秀,可是在處理與用戶的交互方面作得不如其餘幾種shell。
  • bash(Bourne Again Shell):Linux默認,是Bourne Shell的擴展。徹底兼容Bourne Shell,並在他基礎上增長了不少特性如命令補全、命令歷史等。它還包含了不少C Shell和Korn Shell中的優勢,有靈活和強大的編輯接口,同時有很友好的用戶界面。
  • csh(C Shell):一種比Bourne Shell更適合的變種Shell,語法與C語言很類似。
  • Tcsh:Linux提供的C Shell的一個擴展版本。 包括命令行編輯,可編程單詞補全,拼寫校訂,歷史命令替換,做業控制和相似 C 語言的語法,他不只和 Bash Shell 提示符兼容,並且還提供比 Bash Shell 更多的提示符參數 。
  • ksh(Korn Shell): 集合了 C Shell 和 Bourne Shell 的優勢而且和 Bourne Shell 徹底兼容。
  • pdksh: Linux 系統提供的 ksh 的擴展。 支持人物控制,能夠在命令行上掛起,後臺執行,喚醒或終止程序。

如今包括紅帽系統在內的許多主流 Linux 系統默認使用的終端是 Bash(Bourne-Again SHell)解釋器 。 主流 Linux 系統選擇 Bash 解釋器做爲命令行終端主要有如下 4 項優點 :centos

經過上下方向鍵來調取過往執行過的 Linux 命令;緩存

命令或參數僅需輸入前幾位就能夠用 Tab 鍵補全;安全

具備強大的批處理腳本;

具備實用的環境變量功能。

咱們裝好的centos7默認也是採用的bash終端,當採用遠程鏈接工具鏈接到centos7,默認開啓的終端就是bash,能夠經過在終端中輸入命令:echo $SHELL 進行查看,獲得的結果爲:/bin/bash。

  • 如何判斷當前終端的類型?

​ 經過"echo $SHELL" 命令或經過"evn"終端命令

  • 如何更改登陸的終端類型?

​ 經過終端命令chsh,如:chsh -s /bin/bash將登陸終端改成bash

1.2 shell命令類型

shell是一個程序,用於用戶和操做系統進行交互,至關因而一個命令解析器。

做爲用戶和內核交互的接口,既是一種命令語言又是一種程序設計語言。shell命令又分爲內置命令和外部命令。

  • 內置命令

    內部命令其實是shell程序的一部分,其中包含的是一些比較簡單的linux系統命令,這些命令由shell程序識別並在shell程序內部完成運行,一般在linux系統加載運行時shell就被加載並駐留在系統內存中。內部命令是寫在bashy源碼裏面的,其執行速度比外部命令快,由於解析內部命令shell不須要建立子進程。好比:exit,history,cd,echo等 。

  • 外部命令

    外部命令是linux系統中的實用程序部分,由於實用程序的功能一般都比較強大,因此其包含的程序量也會很大,在系統加載時並不隨系統一塊兒被加載到內存中,而是在須要時纔將其調用內存。一般外部命令的實體並不包含在shell中,可是其命令執行過程是由shell程序控制的。shell程序管理外部命令執行的路徑查找、加載存放,並控制命令的執行。外部命令是在bash以外額外安裝的,一般放在/bin,/usr/bin,/sbin,/usr/sbin......等等。可經過「echo $PATH」命令查看外部命令的存儲路徑,好比:ls、vi等

如何區分是內部命令仍是外部命令?

  • 經過type命令,如:type cd 能夠看到是內部命令;type mkdir能夠看到是外部命令。

  • 經過man命令,如:man cd,會提示是bash的內置命令;man ls,會提示是外部命令。

​ 內部命令和外部命令最大的區別之處就是性能。內部命令因爲構建在shell中而沒必要建立多餘的進程,要比外部命令執行快得多。所以和執行更大的腳本道理同樣,執行包含不少外部命令的腳本會損害腳本的性能。

2、最經常使用命令

既然 Linux 系統中已經有了 Bash 這麼好用的「翻譯官」,那麼接下來就有必要好好學習怎麼跟它溝通了。要想準確、高效地完成各類任務,僅依賴於命令自己是不夠的,還應該根 據實際狀況來靈活調整各類命令的參數 。

linux執行命令通常格式:命令名稱 [命令參數] [命令對象]

命令名稱、命令參數、命令對象之間用空格鍵分隔。命令對象通常是指要處理的文件、目錄、用戶等資源 ,命令參數則能夠用長格式(--)或短格式(-)。

長格式:man --help

短格式:man -h

linux命令不少,最重要的是各類參數的搭配使用,新手記住全部參數是不可能的,須要常常經過幫助命令進行查閱。

特別說明:在終端中,有時候顯示的內容不少,能夠經過快捷鍵進行翻看。

shift+PgUp:向上翻頁

shift+PgDn:向下翻頁

2.1 幫助命令

幫助命令主要有2個:man、help。平時要多於幫助命令,遇到不清楚的命令就用幫助命令查看,無須死記硬背,熟能生巧。

2.1.1 man命令

語法:man [命令或配置文件]

做用:獲取幫助信息

案例:

[root@heimatengyun ~]# man date

好比欲查看date命令的用法,輸入命令man date以後出現下圖信息

file

因爲幫助信息比較多,須要翻頁才能看完,所以先說明一下本界面可能須要用到按鍵及用途。

按鍵 用途
空格鍵 向下翻頁
PgDn (page down) 向下翻頁
PgUp (page up) 向上翻頁
home 前往首頁
end 前往頁尾
/ 從上至下搜索關鍵字,如「/linux」
從下至上搜索關鍵字,如「?linux」
n 定位到下一個搜索到的關鍵詞
N 定位到上一個搜索到的關鍵詞
q 退出幫助文檔

初學者一看,這麼多的幫助信息反而感到困惑了,其實很簡單的,咱們來理一下幫助信息的結構(上圖中圈紅線的部分)。

結構名稱 說明
NAME 命令的名稱
SYNOPSIS 命令的基本語法格式
DESCRIPTION 詳細說明語法格式對應的選項和參數的用法
EXAMPLES 如何使用命令的示例
OVERVIEW 概述
DEFAULTS 默認功能
OPTIONS 具體的可用選項
ENVIRONMENT 環境變量
SEE ALSO 相關的資料,一般是手冊頁

經過這些幫助信息,就能夠輕鬆的掌握各個命令的用法。

2.1.2 help命令

語法:help 命令

做用:獲取shell內置命令的幫助信息

案例:

[root@heimatengyun ~]# help cd

在正式進入命令學習以前,再介紹幾個linux經常使用的快捷鍵

快捷鍵 做用
ctrl+l 清屏
ctrl+q 退出
ctrl+c 中止進程
上下鍵 查找曾今執行過的命令
tab 命令補全,多用不只提升效率還能防止敲錯

既然linux一切皆文件,瞭解萬能的幫助命令後,咱們就從目錄文件命令開始學習。

2.2 目錄相關命令

目錄能夠對文件進行分類管理,所以在講解文件命令以前先講解目錄相關命令。

2.2.1 pwd

語法:pwd

功能描述:顯示當前工做目錄的絕對路徑

案例:

[root@heimatengyun ~]# pwd
/root
2.2.2 ls

語法:ls [選項] [目錄或文件]

功能描述:列出目錄下的文件

選項:

​ -a(--all):顯示所有文件,包括隱藏文件(以.開頭的文件)

-d:directory,列出目錄自己

​ -l:long長數據串列出,包含文件的屬性和權限等。每行列出的信息依次爲:文件類型與權限、連接數、文件屬性、文件屬組、文件大小(byte)、建立或最近修改時間、名字

案例:

[root@heimatengyun test]# ls -al
total 12
drwxr-xr-x.  2 root root   37 Nov 24 10:43 .
dr-xr-x---. 16 root root 4096 Nov 24 00:02 ..
-rw-r--r--.  1 root root   26 Nov 23 20:40 test1.txt
-rw-r--r--.  1 root root   66 Nov 23 21:56 test.txt
2.2.3 cd

語法:cd [選項][目錄名稱]

功能描述:切換到指定目錄

案例:

​ cd 絕對路徑或相對路徑 (跳轉到指定目錄)

​ cd 或cd ~ (返回當前用戶家目錄)

​ cd - (返回上一次所在的目錄)

​ cd .. (返回當前目錄的上一級目錄)

2.2.4 mkdir

語法:mkdir [選項] 目錄名稱

功能描述:建立指定目錄

選項:

​ -p :parents,建立多層目錄

案例:

​ [root@heimatengyun ~]# mkdir test

​ [root@heimatengyun ~]# mkdir -p test1/test1

2.2.5 rmdir

語法: rmdir [選項] 目錄名稱

功能描述:刪除空目錄

選項:

​ -p:刪除多級目錄

案例:

​ [root@heimatengyun ~]# rmdir test

​ [root@heimatengyun ~]# rmdir -p test1/test1/ (若是不指定-p參數,則只刪除最後一級不爲空的目錄)

2.2.6 cp

語法:cp 源目錄或文件 目標目錄或文件

功能描述:複製目錄或文件

選項:

​ -r:recursive,遞歸複製整個文件夾

案例:

將test複製爲test.txt,複製時重命名

[root@heimatengyun ~]# cp test test.txt

將全部test目錄內容複製到test1目錄(自動建立test1目錄)

[root@heimatengyun ~]# cp -r test test1
2.2.7 mv

語法:mv [選項] 源 目標

功能描述:移動文件或重命名文件

案例:

將test文件重命名爲test.txt

[root@heimatengyun test]# mv test test.txt

將test目錄及其裏邊全部內容移動到test2目錄,自動建立test2目錄(能夠理解爲將test文件夾重命名爲test2)

[root@heimatengyun ~]# mv test/ test2
2.2.8 rm

語法:rm [選項] 文件

功能描述:刪除文件及目錄

選項:

​ -f:force強制執行

​ -r:recursive遞歸執行

案例:

遞歸刪除目錄及其下全部內容

[root@heimatengyun ~]# rm -rf test2/

2.3 文件相關命令

linux一切皆文件,在鏈接目錄相關命令後,本節學習文件相關命令。

2.3.1 touch

語法:touch [選項] 文件名

功能描述:建立空文件

案例:

[root@heimatengyun test]# touch test.txt

echo

語法:echo 字符串或變量

功能描述:輸出字符串或變量值,還能夠搭配從定向符將內容存儲到文件

案例:

[root@heimatengyun test]# echo hello
hello
[root@heimatengyun test]# echo $SHELL
/bin/bash
[root@heimatengyun test]# echo linux >> test.txt
2.3.2 cat

語法:cat [選項] 文件名

功能描述:查看文件內容,從第一行開始顯示

選項:

​ -A:列出特殊字符而非空白

​ -b:列出行號,空白行不算行號

​ -n:列出行號,空白行也會有行號

​ -v:列出一些看不出來的特殊字符

案例:

[root@heimatengyun test]# cat test.txt 
 hello
 who are you
 
 where are you from
 [root@heimatengyun test]# cat -A test.txt 
 hello$
 who are you$
 $
 where are you from$
 [root@heimatengyun test]# cat -b test.txt 
      1  hello
      2  who are you
 
      3  where are you from
 [root@heimatengyun test]# cat -n test.txt 
      1  hello
      2  who are you
      3
      4  where are you from
2.3.3 more

語法:more [選項] 文件

功能描述:查看文件內容,一頁一頁的顯示

使用說明:

​ 空格鍵(space):向下翻一頁

​ enter:向下翻一行

​ q:退出more,不在顯示文件內容

​ ctrl+f:向下滾動一屏

​ ctrl+b:返回上一屏

​ =:輸出當前行的行號

​ :f:輸出文件名和當前行號

語法:head [選項] 文件

功能描述:查看文件內容,只看頭幾行

選項:

​ -n:查看頭n行

案例:

​ [root@heimatengyun test]# head -n 2 test.txt

2.3.5 tail

語法:tail [選項] 文件

功能描述:查看文件內容,只查看文件末尾幾行

選項:

​ -n:末尾幾行

​ -f:follow輸出文件修改的內容,用於追蹤文件修改

案例:

​ [root@heimatengyun test]# tail -n 2 test.txt

2.3.6 wc

語法:wc [選項] 文本

功能描述:統計指定文本的行數、字數、字節數

選項:

​ -l:lines顯示行數

​ -w:顯示單詞數

​ -c:顯示字節數

案例:

[root@heimatengyun test]# cat test.txt 
hello

who are you
where are you form?

wellcome
hahah
test
[root@heimatengyun test]# wc -l test.txt 
8 test.txt
[root@heimatengyun test]# wc -c test.txt 
60 test.txt
[root@heimatengyun test]# wc -w test.txt 
11 test.txt
2.3.7 stat

語法:stat [選項] 文件

功能描述:查看文件的具體存儲信息和時間等信息

案例:

[root@heimatengyun test]# stat test.txt 
  File: ‘test.txt’
  Size: 60              Blocks: 8          IO Block: 4096   regular file
Device: fd01h/64769d    Inode: 2160373     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2019-11-23 18:27:02.153101936 +0800
Modify: 2019-11-23 18:26:56.254259870 +0800
Change: 2019-11-23 18:26:56.254259870 +0800
 Birth: -
2.3.8 cut

語法:cut [選項] 文件

功能描述:按列提取文本字符

選項:

​ -d:delimiter分隔符

​ -f:fields要提取的列

案例:

查詢系統全部用戶名

[root@heimatengyun test]# cut -d: -f1 /etc/passwd
root
bin
daemon
adm
lp
sync
...省略部份內容
2.3.9 diff

語法:diff [選項] 文件1,文件2

功能描述:比較多個文本的差別

選項:

​ --brief: 顯示比較文件是否相同

​ -c:context標記顯示不一樣的內容

2.3.10 dd

語法:dd [參數或選項]

功能描述:按照指定大小或個數的數據庫來複制文件或轉換文件

參數:

​ if:輸入的文件名稱

​ of:輸出的文件名稱

​ count:設置要複製的塊的個數

​ bs:bytes文件塊大小

案例:

建立指定大小爲10M的文件

[root@heimatengyun test]# dd if=/dev/zero of=10_file count=1 bs=10M
1+0 records in
1+0 records out
10485760 bytes (10 MB) copied, 0.0102506 s, 1.0 GB/s
[root@heimatengyun test]# ll
total 10248
-rw-r--r--. 1 root root 10485760 Nov 23 21:05 10_file
2.3.11 file

語法:file 文件名

功能描述:查看文件類型

案例:

[root@heimatengyun test]# file test.txt 
test.txt: ASCII text
2.3.12 wget

語法:wget [參數] [url地址]

功能:下載網絡文件

參數:

​ -b:background後臺下載

​ -P:directory-prefix下載到指定目錄

​ -t:tries 最大嘗試次數

​ -c:continue斷點續傳

​ -p:page-requisites下載頁面全部內容,包括圖片、視頻等

​ -r:recursive遞歸下載

案例:

下載百度logo圖片

[root@heimatengyun test]# wget https://www.baidu.com/img/bd_logo1.png
--2019-11-23 22:29:45--  https://www.baidu.com/img/bd_logo1.png
Resolving www.baidu.com (www.baidu.com)... 14.215.177.38, 14.215.177.39
Connecting to www.baidu.com (www.baidu.com)|14.215.177.38|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7877 (7.7K) [image/png]
Saving to: ‘bd_logo1.png’

100%[======================>] 7,877       --.-K/s   in 0.002s  

2019-11-23 22:29:45 (4.43 MB/s) - ‘bd_logo1.png’ saved [7877/7877]

2.4 查找命令

有時候須要從大量文件中找出須要的文件或者從指定文件中查找特定內容,這就須要用到查找相關的命令。

2.4.1 find

語法:find [搜索範圍] [匹配條件]

功能描述:查找文件或目錄

參數說明

​ -name:按文件名稱查找

​ -user:按文件擁有者查找

​ -size:根按文件大小查找文件(+n大於,-n小於,n等於)

案例

在test目錄下查找test1.txt文件

[root@heimatengyun ~]# find test/ -name test1.txt
test/test1.txt

查找test目錄下查找用戶root的文件

[root@heimatengyun ~]# find test/ -user root
test/
test/test.txt

在test目錄下查找小於100M的文件

[root@heimatengyun ~]# find test/ -size -102400
test/
test/test.txt
2.4.2 grep

語法:grep [參數] 查找內容 源文件

功能描述:在文件內搜索字符串匹配的行並輸出

參數:

​ -c:count只輸出匹配行的計數

​ -n:line-number顯示匹配行及行號

案例:

[root@heimatengyun test]# grep -n who test.txt 
3:who are you
[root@heimatengyun test]# grep -c who test.txt 
1
2.4.3 which

語法:which [選項] 命令

功能描述:搜索命令所在目錄及別名信息

案例:

搜索cd命令所在的目錄

[root@heimatengyun test]# which cd
/usr/bin/cd

2.5 壓縮解壓

爲了便於傳輸或節省存儲空間有時候文件是以壓縮包的形式存在,所以就須要瞭解壓縮與解壓相關命令。

2.5.1 tar

語法:tar [參數] 包名.tar.gz 待打包的內容

功能描述:打包目錄,壓縮後的文件格式爲.tar.gz

參數:

​ -c:create生成.tar打包文件

​ -x:extract解包.tar文件

​ -v:verbose顯示詳細信息

​ -f:file指定壓縮後的文件名

​ -z:打包同時壓縮

​ -C:解壓到指定目錄

案例:

壓縮多個文件,將test.txt和test1.txt壓縮爲test.tar.gz

[root@heimatengyun test]# tar -zcvf test.tar.gz test.txt test1.txt 
test.txt
test1.txt
[root@heimatengyun test]# ll
total 10252
-rw-r--r--. 1 root root       26 Nov 23 20:40 test1.txt
-rw-r--r--. 1 root root      210 Nov 23 23:57 test.tar.gz
-rw-r--r--. 1 root root       66 Nov 23 21:56 test.txt

壓縮目錄

[root@heimatengyun ~]# tar -zcvf test.tar.gz test/

解壓到當前目錄

[root@heimatengyun test]# tar -zxvf test.tar.gz
2.5.2 zip和unzip

語法:

​ 壓縮:zip [參數] 包名.zip 待壓縮內容

​ 解壓:uzip 包名.zip

功能描述:壓縮文件和目錄,windows和linux通用且能夠壓縮目錄並保留源文件

參數:

​ -r:recurse-paths遞歸壓縮目錄

案例:

壓縮test.txt或test1.txt爲test.zip

[root@heimatengyun test]# zip test.zip test.txt test1.txt 
  adding: test.txt (deflated 15%)
  adding: test1.txt (stored 0%)

解壓test.zip

[root@heimatengyun test]# unzip test.zip 
Archive:  test.zip
  inflating: test.txt                
 extracting: test1.txt
2.5.3 gzip和gunzip

語法:

​ 壓縮:gzip [參數] 文件

​ 解壓:gzip [參數] 文件.gz

功能描述:

​ 壓縮:壓縮文件,只能將文件壓縮爲*.gz文件。只能壓縮文件不能壓縮目錄,壓縮解壓後不保留原來的文件。對單個文件壓縮

​ 解壓:解壓文件

​ 案例:

壓縮文件

[root@heimatengyun test]# ll
total 8
-rw-r--r--. 1 root root 26 Nov 23 20:40 test1.txt
-rw-r--r--. 1 root root 66 Nov 23 21:56 test.txt
[root@heimatengyun test]# gzip test1.txt 
[root@heimatengyun test]# ll
total 8
-rw-r--r--. 1 root root 54 Nov 23 20:40 test1.txt.gz
-rw-r--r--. 1 root root 66 Nov 23 21:56 test.txt

解壓文件

[root@heimatengyun test]# ll
total 8
-rw-r--r--. 1 root root 54 Nov 23 20:40 test1.txt.gz
-rw-r--r--. 1 root root 66 Nov 23 21:56 test.txt
[root@heimatengyun test]# gunzip test1.txt.gz 
[root@heimatengyun test]# ll
total 8
-rw-r--r--. 1 root root 26 Nov 23 20:40 test1.txt
-rw-r--r--. 1 root root 66 Nov 23 21:56 test.txt

2.6 日期命令

日期相關命令用於設置或獲取系統日期。

2.6.1 date

語法:date [選項] [格式]

功能描述:顯示或設置時間

參數:

​ -s:set 以字符串格式設置時間

格式:(注意區分大小寫)

​ +%Y:顯示當前年份

​ +%m:顯示當前月份

​ +%d:顯示當前是哪一天

​ +%H:顯示當前小時

​ +%M:顯示當前分鐘

​ +%S:顯示當前秒數

​ +%Y%m%d:顯示當前年月日

​ "+%Y-%m-%d %H:%M:%S":顯示當前年月日時分秒 (用引號括起來)

案例:

設置時間

[root@heimatengyun test]# date -s "2019-11-24 11:05:10"
Sun Nov 24 11:05:10 CST 2019

顯示時間

[root@heimatengyun test]# date
Sun Nov 24 11:02:21 CST 2019
[root@heimatengyun test]# date +%Y%m%d
20191124
[root@heimatengyun test]# date "+%Y-%m-%d %H:%M:%S"
2019-11-24 11:02:55

date查看非當前時間(好比前一天,後一天、取下週週一等等)以及cal查看日曆命令暫時不作討論,之後有機會在討論。

2.7 進程線程命令

任務都以進程或線程的形式存在,所以須要隨時關注系統的進程,查看是否有異常進程以及各進程佔用系統資源的狀況並使用不一樣的進程管理命令對進程管理和控制。

2.7.1 ps

語法:ps [選項]

功能描述:查看系統中全部進程

參數:

​ -a:all 顯示現行終端機下的全部程序,包括其餘用戶的程序(好比多克隆幾個會話執行不一樣命令,也會列出來)

​ -u:userlist 以用戶爲主的格式來顯示程序情況

​ -x: 顯示全部程序,不以終端機來區分 (前面講過終端有不少類型,不只顯示當前終端)

案例:

[root@heimatengyun test]# ps -aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root       2966  0.0  0.1 116340  3192 pts/0    Ss   Nov22   0:03 -bash
...省略部份內容

每一項內容的解釋

含義
USER 進程是由哪一個用戶產生的
PID 進程ID
%CPU 該進程佔用CPU的百分比,佔用越高,進程越耗費資源
%MEM 該進程佔用內存的百分比,佔用越高,進程越耗費資源
VSZ 佔用虛擬內存的大小,單位KB
RSS 佔用實際物理內存的大小,單位KB
TTY 表示該進程在哪一個終端中運行,tty1-tty7表明本地控制檯終端(tty1-tty6是本地的字符界面終端,tty7是圖形終端),pts/0-255表明虛擬終端
STAT 進程狀態,經常使用狀態有:R(運行)、S(睡眠)、T(中止狀態)、s(包含子進程)、+(位於後臺)
START 進程啓動時間
TIME 進程執行時間,即佔用cpu的運算時間,不是系統時間
COMMAND 產生此進程的命令名
2.7.2 top

語法:top [選項]

功能描述:查看系統健康狀態

參數:

​ -d 秒數:Delay-time,指定top命令每隔幾秒更新,默認是3秒。

​ -i:Idle-process,使top命令不顯示任何閒置或者僵死進程

​ -p:Monitor-PIDs ,經過指定監控進程ID來僅僅監控某個進程的狀態

​ -s:Secure-mode,使top在安全模式運行,去除交互命令所帶來的潛在危險

案例:

查看非僵死進程,一秒鐘刷新一次

[root@heimatengyun test]# top -i -d 1
top - 12:39:19 up 1 day, 14:31,  3 users,  load average: 0.04, 0.04, 0.05
Tasks: 395 total,   1 running, 391 sleeping,   3 stopped,   0 zombie
%Cpu(s):  0.0 us,  1.0 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:   1870784 total,   720520 used,  1150264 free,      880 buffers
KiB Swap:  2097148 total,        0 used,  2097148 free.   238616 cached Mem

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND              
 29987 root      20   0  123936   1868   1160 R   2.0  0.1   0:08.32 top 
 ...省略部份內容

在此界面能夠經過以下相應按鍵進行排序操做

操做鍵 說明
shift+n 以PID排序
shift+m 之內存排序
shift+p 以cpu使用率排序,默認選項
q 退出top

命令結果解釋

第一行:任務隊列信息

內容 說明
12:20:42 當前系統時間
up 1 day, 14:12 系統運行時間
3 users 當前登陸用戶數
load average: 0.08,0.01, 0.05 系統在以前1分鐘、5分鐘、15分鐘的平均負載,通常認爲小於1時,負載較小,若是大於1說明系統已經超出負載

第二行:進程信息

內容 說明
Tasks: 395 total 系統中的總進程數
1 running 正在運行的進程數
391 sleeping 睡眠的進程
3 stopped 正在中止的進程
0 zombie 殭屍進程,若是不是0,須要手工檢查殭屍進程

第三行:cpu信息

內容 說明
%Cpu(s): 0.0 us 用戶模式佔用的cpu百分比
1.0 sy 系統模式佔用的cpu百分比
0.0 ni 改變過優先級的用戶進程佔用的cpu百分比
99.0 id 空閒cpu的百分比
0.0 wa 等待輸入、輸出的進程佔用cpu的百分比
0.0 hi 硬中斷請求服務佔用的cpu百分比
0.0 si 軟中斷請求服務佔用的cpu百分比
0.0 st steal time虛擬世界百分比,當有虛擬機時,虛擬cpu等待時機cpu的時間百分比

ps:若是服務器有多個cpu,將顯示多行

第四行:物理內存信息

內容 說明
KiB Mem: 1870784 total 物理內存的總量,單位KB
720520 used 已使用的物理內存數量
1150264 free 空閒的物理內存數量
880 buffers 做爲緩衝的內存數量

第五行:交換分區信息

內存 說明
KiB Swap: 2097148 total 交換分區(虛擬內存)的總大小
0 used 已經使用的交換分區的大小
2097148 free 空閒交換分區的大小
238616 cached Mem 做爲緩存的交換分區的大小

第六行:空行

第七行:表頭信息

內容 說明
PID 進程id
USER 進程全部者
PR 進程優先級
NI 負值表示高優先級,正值表示低優先級
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 進程名稱(命令名/命令行)
2.7.3 pidof

語法:pidof [參數] 服務名稱

功能描述:查詢某個指定服務進程的pid值

案例:

查看sshd服務的進程id

[root@heimatengyun test]# pidof sshd
2962 2247
2.7.4 pstree

語法:pstree [選項]

功能描述:查看進程樹

選項:

​ -p:顯示進程的PID

案例:

[root@heimatengyun test]# pstree -p
systemd(1)─┬─ModemManager(948)─┬─{ModemManager}(1004)
           │                   └─{ModemManager}(1031)
           ├─NetworkManager(1123)─┬─{NetworkManager}(1284)
           │                      └─{NetworkManager}(1312)
           ...省略部份內容
2.7.5 kill

語法:kill [選項] 進程id

功能描述:終止某個指定pid的服務進程

選項:

​ -9:強迫進程當即中止

案例:

[root@heimatengyun test]# kill -9 20385
2.7.6 killall

語法:killall [選項] 服務名

功能描述:終止某個指定名稱的服務對應的全部進程

案例:

終止httpd服務的全部進程

[root@heimatengyun test]# killall httpd

2.8 系統狀態檢測命令

經過相關命令檢查系統狀態以及資源耗用狀況,保證系統健康穩定運行。

2.8.1 ifconfig

語法:ifconfig [網絡設備] [參數]

功能描述:獲取網卡配置和網絡狀態信息

案例:

[root@heimatengyun test]# ifconfig
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.78.100  netmask 255.255.255.0  broadcast 192.168.78.255
        inet6 fe80::20c:29ff:febc:5eef  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:bc:5e:ef  txqueuelen 1000  (Ethernet)
        RX packets 143336  bytes 103106029 (98.3 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 92576  bytes 143399144 (136.7 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

主要查看內容:網卡名稱(eno16777736 )、ip地址(inet以後)物理網卡地址即mac地址(ether)、TX和TX接收和發送數據包的個數和累計流量

2.8.2 netstat

語法:netstat [參數]

功能描述:顯示整個系統目前網絡狀況,好比目前的連接、數據包傳遞數據、路由表內容等

案例:

[root@heimatengyun test]# netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0     96 192.168.78.100:ssh      192.168.78.1:59688      ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ]         DGRAM                    13149    /run/systemd/shutdownd
...省略部份內容
2.8.3 uname

語法:uname [選項]

功能描述:查看系統內核和系統版本等信息

參數:

​ -a:all顯示系統完整信息

​ -s:kernel-name系統內核名稱

​ -n:nodename節點名稱

​ -r:kernel-release內核發行版

​ -v:kernel-version內核版本

​ -m:machine硬件名稱

​ -i:hardware-platform硬件平臺

​ -p:processor處理器類型

​ -o:operating-system操做系統名稱

案例:

[root@heimatengyun test]# uname
Linux
[root@heimatengyun test]# uname -a
Linux heimatengyun 3.10.0-123.el7.x86_64 #1 SMP Mon Jun 30 12:09:22 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

顯示信息依次爲:內核名稱(Linux)、主機名(heimatengyun)、內核發行版(3.10.0-123.el7.x86_64)、內核版本(#1 SMP Mon Jun 30 12:09:22 UTC 2014)、硬件名稱(x86_64)、硬件平臺(x86_64)、處理器類型(x86_64)及操做系統名稱(GNU/Linux)。

若是要查看單籤系統版本的詳細信息,經過查看/etc/redhat-release文件

[root@heimatengyun test]# cat /etc/redhat-release 
CentOS Linux release 7.0.1406 (Core)
2.8.4 uptime

語法:uptime [選項]

功能描述:查看系統的負載信息,能夠顯示當前系統時間、系統已運行時間、啓用終端數量以及平均負載值等信息。平均負載值指系統在最近1分鐘、5分鐘、15分鐘內的壓力狀況,負載值越低越好,儘可能不要長期超過1,生產環境不要超過5.

案例:

[root@heimatengyun test]# uptime
 21:30:44 up 1 day, 23:23,  3 users,  load average: 0.00, 0.01, 0.05
2.8.5 free

語法:free [選項]

功能描述:顯示當前系統中內存的使用信息

選項:

​ -m:megabytes以兆字節顯示

​ -h:human帶單位輸出

案例:

[root@heimatengyun test]# free -h
             total       used       free     shared    buffers     cached
Mem:          1.8G       702M       1.1G       8.9M       880K       233M
-/+ buffers/cache:       468M       1.3G
Swap:         2.0G         0B       2.0G

字段說明:total(內存總量)、used(已用量)、free(可用量)、shared(進程共享的內存量)、buffers(磁盤緩存的內存量)、cached(緩存的內存量)

2.8.5 who

語法:who [參數]

功能描述:查看當前登入主機的用戶終端信息

案例:

[root@heimatengyun test]# who
root     pts/0        2019-11-22 22:10 (192.168.78.1)
root     pts/1        2019-11-23 11:53 (192.168.78.1)
2.8.6 last

語法:last [參數]

功能描述:查看全部的系統登陸記錄。可是要注意,這些信息是以日誌文件保存的,所以黑客能夠很容易進行修改,因此不能單純以該命令來判斷是否有黑客入侵。

案例:

[root@heimatengyun test]# last
root     pts/2        192.168.78.1     Sun Nov 24 13:09 - 13:36  (00:26) 
root     pts/1        192.168.78.1     Sat Nov 23 11:53   still logged in 
... 省略部份內容
2.8.7 history

語法:history [參數]

功能描述:顯示歷史執行過的命令

選項:

​ -c:清除全部歷史記錄,可是.bash_history文件內容不會刪除

案例:

[root@heimatengyun test]# history
    1  history
    2  ll
    3  ls
    4  history
[root@heimatengyun test]# !2
ll
total 8
-rw-r--r--. 1 root root 26 Nov 23 20:40 test1.txt
-rw-r--r--. 1 root root 66 Nov 23 21:56 test.txt

能夠用「!編號」執行某一次曾經執行過的命令

默承認以查看1000條歷史記錄,但能夠在/etc/profile中修改HISTSIZE的值

歷史命令保存在一個農戶家目錄的.bash_history文件中(.開頭爲隱藏文件經過ls或ll -a列出),能夠用cat命令查看

2.9關機命令

linux通常用在服務器上,不多遇到關機的狀況,畢竟關機服務就會中斷,除非特殊狀況不得已纔會關閉。

正確的關機流程:sync>shutdown或reboot或halt

不管重啓仍是關機,都須要先sync將內存數據同步到硬盤中,避免數據丟失

2.9.1 reboot

語法:reboot [ 選項]

功能描述:重啓系統,等同於shutdown -r now

案例:

[root@heimatengyun ~]# reboot
2.9.2 poweroff

語法:poweroff [選項]

功能描述:關閉系統

案例:

[root@heimatengyun ~]# poweroff
2.9.3 halt

語法:halt [選項]

功能描述:關閉系統,等同於shutdown -h now和poweroff

案例:

[root@heimatengyun ~]# halt
2.9.4 shutdown

語法:shutdown [選項] [關機時間] [提示內容]

功能描述:關機

選項:

​ -h:關機

​ -r:重啓

關機時間:

​ hh:mm:指定24小時制的小時和分鐘後關機

​ +m:m分鐘後關機(+1:默認值,1分鐘後關機; +0:now,馬上關機)

案例:

1分鐘後關機並提示全部已登陸系統的用戶

[root@heimatengyun ~]# shutdown -h 1 "this server will shutdown after 1min"
this server will shutdown after 1min
The system is going down for power-off at Sun 2019-11-24 22:25:55 CST!

用戶及文件相關權限命令將在之後的文章中講解,還有不少其餘的命令,因爲篇幅所限不在此討論。下一篇文章文章將分享「linux入門系列6--軟件包管理之rpm和yum倉庫」。

相關文章
相關標籤/搜索