1. 程式人生 > >Linux系統學習之 一:新手必須掌握的Linux命令1

Linux系統學習之 一:新手必須掌握的Linux命令1

網絡設備 agents daemon gen boot 3.0 media license bubuko

2018-10-03 16:04:12

一、常用系統工作命令


1、wget 命令

作用:用於在終端中下載網絡文件。

格式:wget [參數] 下載地址

參數及作用:

-b : 後臺下載模式

-d:顯示調試信息

-N:該參數指定wget只下載更新的文件

-S:顯示服務器響應

-P:下載到指定目錄

-t:最大嘗試次數

-c:斷點續傳

-p:下載頁面內所有資源,包括圖片、視頻等

-r:遞歸下載

-T timeout:超時時間設置(單位秒)

-w time:重試延時(單位秒)

-Q quota=number :重試次數

-nc:不覆蓋已有的文件

-nd:不下載目錄結構,把從服務器所有指定目錄下載的文件都堆到當前目錄裏

-nH:不創建以目標主機域名為目錄名的目錄,將目標主機的目錄結構直接下到當前目錄下

-np:只下載目標站點指定目錄及其子目錄的內容

-l [depth]:下載遠程服務器目錄結構的深度

2、RPM(紅帽軟件包管理器)

RPM 有點像 Windows 系統中的控制面板,會建立統一的數據庫文件,詳細記錄軟件信息並能夠自動分析依賴關系。目前 RPM 的優勢已經被公眾所認可,使用範圍也已不局限在紅帽系統中了。

常見的RPM軟件包命令

rpm -ivh filename.rpm  #安裝軟件的命令格式

rpm -Uvh filename.rpm  #升級軟件的命令格式

rpm -e filename.rpm  #卸載軟件的命令格式

rpm -qpi filename.rpm  #查詢軟件描述信息的命令格式

rpm -qpl filename.rpm  #列出軟件文件信息的命令格式

rpm -qf filename.rpm  #查詢文件屬於哪個RPM的命令格式

3、yum命令

yum repolist all  #列出所有倉庫

yum list all  #列出倉庫中所有軟件包

yum info 軟件包名稱  #查看軟件包信息

yum install 軟件包名稱  #安裝軟件包

yum reinstall 軟件包名稱  #重新安裝軟件包

yum update 軟件包名稱  #升級軟件包

yum remove 軟件包  #移除軟件包

yum clean all  #清除所有倉庫緩存

yum check-update  #檢查課更新的軟件包

yum grouplist  #查看系統中已經安裝的軟件包組

yum groupinstall 軟件包組  #安裝指定的軟件包組

yum groupremove 軟件包組  #移除指定的軟件包組

yum groupinfo 軟件包組  #查詢指定的軟件包組信息

4、ps 命令

PS命令用於查看系統中的進程狀態,格式為 ps [參數]。

-a:顯示所有進程(包括其他用戶的進程)

-u:用戶以及其他詳細信息

-x:顯示沒有控制終端的進程

在Linux系統中,有5種常見的進程狀態,分別為運行、中斷、不可中斷、僵死與停止,其各自含義如下所示:

R(運行):進程正在運行或在運行隊列中等待。

S(中斷):進程處於休眠中,當某個條件形成後或者收到信號時,則脫離該狀態。

D(不可中斷):進程不響應系統異步信號,即使用kill命令也不能將其中斷。

Z(僵死):進程已經終止,但進程描述符依然存在,直到父進程調用wait4()系統函數後將進程釋放。

T(停止):進程收到停止信號後停止運行。

5、top 命令

top命令用於動態地監視進程活動與系統負載等信息,格式為top。

top命令相當強大,能夠動態地查看系統運維狀態,完全可將它看作Linux中的“強化版的Windows任務管理器”。top命令的運行界面如下圖示:

技術分享圖片

上圖中,top命令執行結果的前5行為系統整體的統計信息,其代表的含義如下:

第1行:系統時間、運行時間、登錄終端數、系統負載(三個數值分別為1分鐘、5分鐘、15分鐘內的平均值,數值越小意味著負載越低)。

第2行:進程總數、運行中的進程數、睡眠中的進程數、停止的進程數、僵死的進程數。

第3行:用戶占用資源百分比、系統內核占用資源百分比、改變過優先級的進程資源百分比、空閑的資源百分比等。

第4行:物流內存總數、內存使用量、內存空閑量、作為內核緩存的 內存量。

第5行:虛擬內存總量、虛擬內存使用量、虛擬內存空閑量、已被提前加載的內存量。

6、pidof 命令

pidof命令用於查詢某個指定服務進程的PID值,格式為“pifof [參數] [服務名稱]”。

1 [root@rhel_10 ~]# pidof sshd
2 36764 1588
3 
4 [root@rhel_10 ~]# ps -aux | grep sshd
5 root 1588 0.0 0.1 82956 3600 ? Ss 14:10 0:00 /usr/sbin/sshd -D
6 root 36764 0.0 0.2 136012 5376 ? Ss 17:36 0:02 sshd: root@pts/2
7 root 40539 0.0 0.0 112640 976 pts/2 R+ 22:31 0:00 grep --color=auto sshd

7、kill命令

kill命令用於終止某個指定PID的服務進程,格式為kill [參數] [進程PID]。

8、killall命令

killall命令用於終止某個指定名稱的服務所對應的全部進程,格式為“killall [參數] [進程名稱]”。

二、系統狀態檢測命令


接下來逐個講解與網卡網絡、系統內核、系統負載、內存使用情況、當前啟用終端數量、歷史登錄記錄、命令執行記錄以及救援診斷等相關命令的使用方法,這些命令都超級實用。

1、ifconfig命令

ifconfig命令用於獲取網卡配置與網絡狀態等信息,格式為“ifconfig [網絡設備] [參數]”。

使用ifconfig命令其實主要是查看網卡名稱、inet參數後的IP地址、ether參數後面的網卡物理地址(又稱MAC地址)以及RX、TX的接收數據包與發送數據包的個數及累計流量:

 1 [root@centos110 ~]# ifconfig
 2 ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
 3         inet 192.168.1.110  netmask 255.255.255.0  broadcast 192.168.1.255
 4         inet6 fe80::20c:29ff:fe5f:b39f  prefixlen 64  scopeid 0x20<link>
 5         ether 00:0c:29:5f:b3:9f  txqueuelen 1000  (Ethernet)
 6         RX packets 4183  bytes 415355 (405.6 KiB)
 7         RX errors 0  dropped 0  overruns 0  frame 0
 8         TX packets 941  bytes 81789 (79.8 KiB)
 9         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
10 
11 lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
12         inet 127.0.0.1  netmask 255.0.0.0
13         inet6 ::1  prefixlen 128  scopeid 0x10<host>
14         loop  txqueuelen 1000  (Local Loopback)
15         RX packets 72  bytes 8088 (7.8 KiB)
16         RX errors 0  dropped 0  overruns 0  frame 0
17         TX packets 72  bytes 8088 (7.8 KiB)
18         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

2、uname命令

uname命令用於查看系統內核與系統版本等信息,格式為“uname [-a]”。

在使用uname命令時,一般會固定搭配上 -a 參數來完整地查看當前系統的內核名稱、主機名、內核發行版本、節點名、系統時間、硬件名稱、硬件平臺、處理器類型以及操作系統名稱等信息。

1 [root@centos110 ~]# uname -a
2 Linux centos110 3.10.0-862.14.4.el7.x86_64 #1 SMP Wed Sep 26 15:12:11 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

查看當前系統版本的詳細信息,需要查看redhat-release文件,命令及相應的結果如下:

1 [root@centos110 ~]# cat /etc/redhat-release
2 CentOS Linux release 7.5.1804 (Core)

3、uptime命令

作用:查看系統的負載信息,格式為uptime。

uptime命令可以顯示當前系統時間、系統已運行時間、啟用終端數量以及平均負載值等信息。

平均負載值指的是系統在最近1分鐘、5分鐘、15分鐘內的壓力情況;

負載值越低越好,盡量不要長期超過1,在生產環境中不要超過5。

1 [root@centos110 ~]# uptime
2  14:04:46 up  4:35,  2 users,  load average: 0.00, 0.01, 0.05

4、free命令

作用:顯示當前系統中內存的使用量信息,格式為“free [-h]”。

為保證Linux系統不會因資源耗盡而突然宕機,運維人員需要時刻關註內存的使用量。

1 [root@centos110 ~]# free -h
內存總量 已用量 可用量 進程共享的 硬盤緩存的 可用內存量
內存量 內存量
2 total used free shared buff/cache available 3 Mem: 1.9G 742M 755M 10M 484M 1.0G 4 Swap: 2.0G 0B 2.0G

5、who命令

作用:查看當前登入主機的用戶終端信息,格式為“who [參數]”。

who命令可以快速顯示出所有正在登陸本機的用戶的名稱及他們正在開啟的終端信息。

1 [root@centos110 ~]# who
登陸用戶名 終端設備 登陸到系統的時間
2 root :0 2018-10-03 09:56 (:0) 3 root pts/0 2018-10-03 09:56 (192.168.1.118)

6、last命令

作用:查看所有系統的登陸記錄,格式為“last [參數]”。

本機的登陸信息以日誌文件的形式保存在系統中,可以很容易進行修改。

千萬不要單純以該命令的輸出信息而判斷系統有無被惡意入侵!

 1 [root@centos110 ~]# last
 2 root     pts/0        192.168.1.118    Wed Oct  3 09:56   still logged in   
 3 root     :0           :0               Wed Oct  3 09:56   still logged in   
 4 reboot   system boot  3.10.0-862.14.4. Wed Oct  3 09:29 - 14:18  (04:49)    
 5 reboot   system boot  3.10.0-862.el7.x Wed Oct  3 09:14 - 14:18  (05:04)    
 6 root     pts/3        192.168.1.118    Tue Oct  2 17:40 - 00:05  (06:25)    
 7 root     pts/2        :0               Tue Oct  2 17:39 - 09:12  (15:32)    
 8 root     pts/1        192.168.1.118    Tue Oct  2 16:54 - 19:37  (02:42)    
 9 root     pts/0        192.168.1.118    Tue Oct  2 15:38 - 19:34  (03:55)    
10 root     pts/0        192.168.1.118    Tue Oct  2 12:05 - 15:38  (03:33)    
11 root     :0           :0               Tue Oct  2 12:04 - 09:12  (21:07)    
12 reboot   system boot  3.10.0-862.el7.x Tue Oct  2 11:56 - 14:18 (1+02:22)   

7、history命令

作用:顯示歷史執行過的命令,格式為“history [-c]”。

默認顯示出當前用戶在本地計算機中執行過的最近1000條命令記錄。

如果覺得1000不夠用,可以自定義/etc/profile文件中的HISTSIZE變量值

參數 -c : 清除所有的命令歷史記錄。

“!編碼數字”:重復執行某一次的命令。

歷史命令會被保存到用戶家目錄中的 .bash_history 隱藏文件中,可用cat命令查看。

8、sosreport 命令(記為sos-report)

作用:收集系統配置及架構信息並輸出診斷文檔,格式為sosreport。

[root@centos110 ~]# sosreport

sosreport (version 3.5)

This command will collect diagnostic and configuration information from
this CentOS Linux system and installed applications.

An archive containing the collected information will be generated in
/var/tmp/sos.cx0Fud and may be provided to a CentOS support
representative.

Any information provided to CentOS will be treated in accordance with
the published support policies at:

  https://wiki.centos.org/

The generated archive may contain data considered sensitive and its
content should be reviewed by the originating organization before being
passed to any third party.

No changes will be made to system configuration.

Press ENTER to continue, or CTRL-C to quit. 此處單擊回車鍵確認收集信息

Please enter your first initial and last name [centos110]:此處單擊回車鍵確認主機編號
Please enter the case id that you are generating this report for []:此處單擊回車鍵來確認主機編號

Setting up archive ...
Setting up plugins ...
Running plugins. Please wait ...

Running 97/97: yum...
Creating compressed archive...

Your sosreport has been generated and saved in:
/var/tmp/sosreport-centos110-20181003144212.tar.xz

The checksum is: fe27be034c15d8a9eba22b3e3e30f0cc

Please send this file to your support representative.

[root@centos110 sosreport-centos110-20181003144212]# pwd
/var/tmp/sosreport-centos110-20181003144212
[root@centos110 sosreport-centos110-20181003144212]# ls
boot       dmidecode  installed-rpms  lib          lspci    ps      sos_commands  sys     var
chkconfig  etc        ip_addr         lsb-release  mount    pstree  sos_logs      uname   version.txt
date       free       java            lsmod        netstat  root    sos_reports   uptime  vgdisplay
df         hostname   last            lsof         proc     route   sos_strings   usr

三、文本文件編輯命令


1、cat命令

用於查看純文本文件(內容較少的),格式為“cat [選項] [文件]”。

-n:查看文本內容時顯示行號。

2、more命令

用於查看純文本文件(內容較多的),格式為“more [選項] 文件”。

3、head命令

用於查看純文本文檔的前n行,格式為“head [選項] [文件]”。

-n:默認查看前10行

[root@centos110 ~]# head -n 20 initial-setup-ks.cfg #查看前20行內容
#version=DEVEL
# X Window System configuration information
xconfig  --startxonboot
# License agreement
eula --agreed
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
cdrom
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
# System services
services --disabled="chronyd"
# Keyboard layouts
keyboard --vckeymap=us --xlayouts=us
# System language
lang en_US.UTF-8 --addsupport=zh_CN.UTF-8

4、tail命令

查看純文本文檔的後N行或持續刷新內容,格式為“tail [選項] [文件]”。

[root@centos110 ~]# tail -n 10 initial-setup-ks.cfg  #查看文檔的後10行內容
%end

%addon com_redhat_kdump --disable --reserve-mb=128M
%end

%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end

想要實時查看最新日誌文件時,使用“tail -f 文件名”。

[root@centos110 ~]# tail -f /var/log/messages
Oct  3 14:45:02 centos110 systemd: Started Session 61 of user root.
Oct  3 14:45:02 centos110 systemd: Starting Session 61 of user root.
Oct  3 14:50:01 centos110 systemd: Started Session 62 of user root.
Oct  3 14:50:01 centos110 systemd: Starting Session 62 of user root.
Oct  3 15:00:01 centos110 systemd: Started Session 64 of user root.
Oct  3 15:00:01 centos110 systemd: Starting Session 64 of user root.
Oct  3 15:00:01 centos110 systemd: Started Session 63 of user root.

5、tr 命令

tr 命令用於替換文本文件中的字符,格式為“tr [原始字符] [目標字符]”。

把某個文本內容中的英文全部替換為大寫:

[root@centos110 ~]# cat anaconda-ks.cfg | tr [a-z] [A-Z]
#VERSION=DEVEL
# SYSTEM AUTHORIZATION INFORMATION
AUTH --ENABLESHADOW --PASSALGO=SHA512
# USE CDROM INSTALLATION MEDIA
CDROM
# USE GRAPHICAL INSTALL
GRAPHICAL
# RUN THE SETUP AGENT ON FIRST BOOT
FIRSTBOOT --ENABLE
IGNOREDISK --ONLY-USE=SDA
# KEYBOARD LAYOUTS
KEYBOARD --VCKEYMAP=US --XLAYOUTS=US
# SYSTEM LANGUAGE
LANG EN_US.UTF-8 --ADDSUPPORT=ZH_CN.UTF-8

# NETWORK INFORMATION
NETWORK  --BOOTPROTO=DHCP --DEVICE=ENS33 --IPV6=AUTO --ACTIVATE
NETWORK  --HOSTNAME=LOCALHOST.LOCALDOMAIN

# ROOT PASSWORD
ROOTPW --ISCRYPTED $6$PRYAXLTWB.T81ZGW$DESITA1QMAYTL/TPSMXDP9HESK9PB8VQTBPMSVURB4GP2XPH9CRAN8NRRPWNBMHT4MIH4NT7SCLEXBN2HRI5Y0
# SYSTEM SERVICES
SERVICES --DISABLED="CHRONYD"
# SYSTEM TIMEZONE
TIMEZONE ASIA/SHANGHAI --ISUTC --NONTP
# X WINDOW SYSTEM CONFIGURATION INFORMATION
XCONFIG  --STARTXONBOOT
# SYSTEM BOOTLOADER CONFIGURATION
BOOTLOADER --LOCATION=MBR --BOOT-DRIVE=SDA
# PARTITION CLEARING INFORMATION
CLEARPART --NONE --INITLABEL
# DISK PARTITIONING INFORMATION
PART /BOOT --FSTYPE="XFS" --ONDISK=SDA --SIZE=300
PART SWAP --FSTYPE="SWAP" --ONDISK=SDA --SIZE=2048
PART PV.969 --FSTYPE="LVMPV" --ONDISK=SDA --SIZE=15058
PART /VAR --FSTYPE="XFS" --ONDISK=SDA --SIZE=3072
VOLGROUP CENTOS --PESIZE=4096 PV.969
LOGVOL /  --FSTYPE="XFS" --SIZE=15056 --NAME=ROOT --VGNAME=CENTOS

%PACKAGES
@^GRAPHICAL-SERVER-ENVIRONMENT
@BASE
@CORE
@DESKTOP-DEBUGGING
@DEVELOPMENT
@DIAL-UP
@FONTS
@GNOME-DESKTOP
@GUEST-AGENTS
@GUEST-DESKTOP-AGENTS
@HARDWARE-MONITORING
@INPUT-METHODS
@INTERNET-BROWSER
@MULTIMEDIA
@PRINT-CLIENT
@X11

%END

%ADDON COM_REDHAT_KDUMP --DISABLE --RESERVE-MB=128M

%END

%ANACONDA
PWPOLICY ROOT --MINLEN=6 --MINQUALITY=1 --NOTSTRICT --NOCHANGES --NOTEMPTY
PWPOLICY USER --MINLEN=6 --MINQUALITY=1 --NOTSTRICT --NOCHANGES --EMPTYOK
PWPOLICY LUKS --MINLEN=6 --MINQUALITY=1 --NOTSTRICT --NOCHANGES --NOTEMPTY
%END

6、wc 命令

用於統計指定文本的行數、字數、字節數,格式為“wc [參數] 文本”。

wc 參數:
-l:只顯示行數
-w:只顯示單詞數
-c:只顯示字節數

在Linux系統中,passwd是用來保存系統賬戶信息的文件,要統計當前系統中有多少個用戶,可以使用以下命令進行查詢:

[root@centos110 ~]# wc -l /etc/passwd
42 /etc/passwd 

7、stat 命令

用於查看文件的具體存儲信息和時間等信息,格式為“stat 文件名稱”。

[root@centos110 ~]# stat anaconda-ks.cfg 
  File: ‘anaconda-ks.cfg’
  Size: 1828          Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 26145971    Links: 1
Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-10-03 14:42:14.819234069 +0800    #讀取時間
Modify: 2018-09-23 15:42:17.364869932 +0800    #修改時間
Change: 2018-09-23 15:42:17.364869932 +0800    #更改時間
 Birth: -

8、cut 命令

用於按“列”提取文本字符,格式為“cut [參數] 文本”。

在Linux系統中,如何準確地提取出最想要的數據,是我們應該重點學習的內容。

按列搜索,不僅要使用 -f 參數來設置需要看的列數,還需要使用 -d 參數來設置間隔符號:

使用以下命令提取出passwd文件中的用戶名信息,即提取以冒號(:)為間隔符號的第一列內容:

 1 [root@centos110 ~]# head -n 2 /etc/passwd
 2 root:x:0:0:root:/root:/bin/bash
 3 bin:x:1:1:bin:/bin:/sbin/nologin
 4 
 5 [root@centos110 ~]# cut -d : -f 1 /etc/passwd
 6 root
 7 bin
 8 daemon
 9 adm
10 lp
11 sync
12 shutdown
13 halt
14 mail

9、diff 命令

用於比較多個文本文件的差異,格式為“diff [參數] 文件”。

--brief:判斷兩個文件是否不同

-c:描述文件內容具體的不同地方

[root@centos110 ~]# cat diff_A.txt
Welcome to linuxprobe.com
Red Hat certified
Free Linux Lessons
Professional guidance
Linux Course

[root@centos110 ~]# cat diff_B.txt
Welcome tooo linuxprobe.com

Red Hat certified
Free Linux LeSSonS
////////......///////
Professional guideance
Linux Course
[root@centos110 ~]# diff --brief diff_A.txt diff_B.txt    #判斷兩個文件是否不同
Files diff_A.txt and diff_B.txt differ
[root@centos110 ~]# diff -c diff_A.txt diff_B.txt    #描述文件內容具體的不同地方
*** diff_A.txt    2018-10-03 15:46:43.434378118 +0800
--- diff_B.txt    2018-10-03 15:48:53.087375053 +0800
***************
*** 1,6 ****
! Welcome to linuxprobe.com
  Red Hat certified
! Free Linux Lessons
! Professional guidance
  Linux Course
- 
--- 1,7 ----
! Welcome tooo linuxprobe.com
! 
  Red Hat certified
! Free Linux LeSSonS
! ////////......///////
! Professional guideance
  Linux Course

Linux系統學習之 一:新手必須掌握的Linux命令1