Linux系統運維與架構設計之系統基本使用

Linux系統運維與架構設計之系統基本使用

3.1 用戶登陸

3.1.1 CentOS6.10系統登陸

啓動虛擬機以後,第一件要作的事情就是登陸系統,只有在輸入正確的用戶名/密碼成功登陸以後才能在系統上進行相關的操做。html

圖形界面下的CentOS6.10和CentOS7.6的登陸界面不盡相同,以下圖所示展現了CentOS6.10的登陸界面。
CentOS6.10登陸界面
默認是推薦使用普通用戶(例如這裏的guanglei)登陸系統,若是想要使用其餘用戶登陸,能夠點擊Other...
root用戶登陸
而後輸入密碼,點擊登陸按鈕便可
登陸系統
由於root用戶的權限強大到幾乎能夠進行任何操做,在以root用戶登陸系統時,系統會給出提示,以下圖所示關閉了root登陸的提示
root登陸提示
root登陸成功以後的界面
root登陸以後的界面node

不過生產環境下通常不推薦直接使用root用戶,點擊右上角的root,而後點擊switch user切換用戶
切換用戶mysql

而後以普通用戶guanglei登陸系統
普通用戶guanglei登陸系統
輸入密碼,點擊Login In便可登陸系統
輸入密碼,點擊Login In便可登陸系統linux

登陸成功以後將會看到以下所示的系統界面
guanglei用戶的系統界面nginx

那麼系統如何區分登陸的用戶是普通用戶仍是管理員(超級)用戶呢?
CentOS7.6系統中可使用 id -u命令查看用戶的id,其中root用戶的id爲0,普通用戶id從1000開始編號,以下命令所示git

[root@centos7 ~]# id -u
0
[root@centos7 ~]# su guanglei
[guanglei@centos7 root]$ id -u
1000
[guanglei@centos7 root]$

而centOS6.10中的root用戶id爲0,可是普通用戶的id是從500開始編號,以下命令所示sql

[root@centOS6 ~]# id -u
0
[root@centOS6 ~]# id -u guanglei
500

3.1.2 CentOS7.6系統登陸

CentOS7.6系統的登陸和CentOS6.10的系統界面不一樣,可是功能是相似的,都默認是以普通用戶登陸系統,而後想要切換其餘用戶,能夠點擊Not Listed?
Not Listed?
而後輸入想要登陸的用戶名(這裏以root爲例),而後點擊Next
輸入用戶名
接下來輸入密碼,點擊Sign in即可以登陸系統
輸入密碼登陸系統
系統登陸成功以後會出現以前安裝CentOS7.6系統時須要完成對應的初始化操做,這裏再也不贅述。
登陸成功以後會看到以下所示的系統界面
centOS7.6系統界面shell

爲了安全性考慮,仍是註銷以後切換回普通用戶後登陸
註銷root用戶
確認註銷數據庫

而後選擇普通用戶guanglei
普通用戶guanglei
輸入密碼點擊Sign in後登陸系統
輸入密碼點擊Sign in 登陸系統
登陸成功以後會看到以下圖所示的系統界面
登陸成功apache

3.1.3 CentOS圖形界面系統自動登陸

學習環境使用CentOS圖形界面時,須要輸入用戶名/密碼登陸系統,那樣有時候不是太便捷,這裏提供一種方式,經過修改配置文件添加root用戶自動登陸。
首先鼠標右鍵打開終端,而後切換成root用戶(須要輸入密碼),再使用gedit命令修改/etc/gdm/custom.conf文件,以下圖所示是CentOS7.6的修改
只要在[daemon]下添加AutomaticLoginEnabled=true和AutomaticLogin=root,而後按Ctrl+s保存後重啓(使用reboot命令)系統便可。
CentOS7.6自動登錄配置修改
以下圖所示是CentOS6.10的修改
CentOS6.10自動登錄配置修改

3.1.4 實現登陸提示

若是想要在系統登陸成功後給用戶相關的提示(例如植入點廣告),能夠修改/etc目錄下的mtcd文件,該文件的默認內容爲空,能夠參考以下命令實現

[root@centos7 ~]#echo "歡迎跟光磊一塊兒學習Linux系統運維與架構設計" > /etc/motd

而後使用exit命令退出當前會話,再次登陸系統後,會看到以下提示內容(廣告植入)

Last login: Sun Jan 13 03:31:16 2019 from 192.168.190.1
歡迎跟光磊一塊兒學習Linux系統運維與架構設計
[root@centos7 ~]#

3.2 終端

3.2.1 爲何須要終端

咱們(開發者,普通用戶)日常使用的操做系統絕大多數都是Windows(Windows7或者Windows10) ,主要用它來完成聊天,購物,聽音樂,看電影等平常需求,並且Windows之因此廣受歡迎的緣由就是其圖形化界面簡單易懂,可以快速上手。

可是Linux(CentOS)通常都是運行在服務器端,提供後臺的各類服務(HTTP,SFTP,分佈式存儲,分佈式計算),一般都是沒有圖形化界面進行相關操做,並且以前提到過安裝系統時,生產環境通常都是選擇最小化安裝,這樣有利於系統瘦身,也可以減小問題的發生,提升系統運行性能。

並且通常特大型互聯網公司(谷歌,蘋果,亞馬遜)生產環境的服務器都是放置在世界各地的機房,如今國內的大部分中小型互聯網公司也已經將服務部署在阿里雲、騰訊雲,通常不會再單獨購買服務器。

那麼咱們(開發者、運維工程師)如何操做Linux呢?

這時候就能夠藉助終端來進行相關的操做了,以前在CentOS6.10上安裝過VMareTools,使用鼠標右鍵Open In Terminal,這時候就啓動了一個終端。
若是要將終端進行分類,經常使用的終端類型能夠分爲以下幾大類:

  • 設備終端
    • 鼠標鍵盤顯示器
  • 物理終端(/dev/console)
  • 虛擬終端(tty)
    • 虛擬終端能夠有N個,系統默認提供了6個虛擬終端,經過Ctrl+Alt+[F1-F6]切換
  • 圖形終端
    • CentOS6:Ctrl+Alt+F7
    • CentOS7:在哪一個虛擬終端啓動,即位於哪一個虛擬終端

3.2.2 虛擬終端的使用

在運維應用場景中最常使用的就是虛擬終端,在安裝CentOS系統以後,通常會自帶1個桌面終端和5個字符終端(字符終端也就意味着不能使用鼠標),在進入系統以後可使用Ctrl+Alt+F1切換圖形界面終端,Ctrl+Alt+[F2-F6]來切換不一樣的字符界面終端。
以下圖所示是使用Ctrl+Alt+F2切換的CentOS7.6的字符界面
字符界面終端
能夠經過輸入用戶名和密碼來登陸終端
登陸終端
若是想要切回圖形界面終端,只須要按Ctrl+Alt+F1便可。
若是在切換Ctrl+Alt+F2-Ctrl+Alt+F6之間的五個字符界面窗口時忘記是哪一個窗口,則可使用ttty命令查看,以下圖所示,若是是tty6則表示爲Ctrl+Alt+F6對應的字符界面。
tty命令的使用
在字符界面中同時還可使用chvt加上數字實現字符界面的切換,以下命令所示

[root@centos6 ~]#  chvt 5

在SecureCRT中登陸CentOS7.6系統以後,可使用who命令查看當前登陸的終端信息,以下命令輸出顯示tty爲本機終端登陸,而pts表示遠程終端登陸。

[root@centos7 ~]# who
root     :0           2019-01-11 07:53 (:0)
guanglei tty4         2019-01-11 08:08
guanglei tty2         2019-01-11 08:11
root     pts/0        2019-01-11 08:15 (192.168.190.1)

若是想要查看終端設備信息,可使用tty命令,以下命令輸出結果顯示終端的路徑

[root@centos7 ~]# tty
/dev/pts/0

還能夠經過whoami 查看當前登陸系統的用戶身份(命令)

[root@centos7 ~]# whoami
root

經過who am i 查看當前登陸用戶以及終端信息

root@centos7 ~]# who am i
root     pts/0        2019-01-11 08:15 (192.168.190.1)

經過w命令能夠查看到更多信息輸出,包含當前登陸的用戶及其正在運行的程序

[root@centos7 ~]# w
 08:20:21 up 26 min,  4 users,  load average: 0.00, 0.01, 0.02
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     :0       :0               07:53   ?xdm?  36.60s  0.30s /usr/libexec/gnome-session-bi
guanglei tty4                      08:08   11:57   0.02s  0.02s -bash
guanglei tty2                      08:11    8:21   0.02s  0.02s -bash
root     pts/0    192.168.190.1    08:15    5.00s  0.06s  0.03s w

平常運維工做中爲了提升系統運行性能,一般不會使用到圖形界面,若是想要關閉圖形界面,可使用init 3來切換系統的運行模式爲字符界面模式。

[root@centOS6 ~]# init 3

若是想要查看當前系統的運行模式,可使用runlevel查看,以下命令輸出
的結果展現從5切換到3,即init 5表示切換到圖形界面運行模式,init 3表示切換到字符界面運行模式

[root@centOS6 ~]# runlevel
5 3

還可使用who -r查看

[guanglei@centos7 ~]$who -r
         run-level 5  2019-02-11 10:26                   last=3

圖形界面和字符界面的區別是,字符界面的平常操做都是經過鍵盤來完成的,並且能夠實現自動化,批量化,自能化,相比圖形界面更加高效便捷,而圖形界面能夠藉助鼠標加鍵盤完成平常任務。

而Linux的圖形界面和Windows不一樣,Linux的圖形界面只是運行在內核之上的應用程序,能夠經過運行startx命令啓動圖形界面程序,固然前提條件是系統安裝時已經安裝了圖形界面,例如KDE,GNOME。

[root@centOS6 ~]# startx

當再次輸入runlevel(SecureCRT須要新開個會話)查看系統運行模式時,發現系統的運行模式依然是字符界面模式,只是額外開啓了一個圖形界面的程序而已,並且init 5和startx不一樣的是,它還會啓動一些額外的服務。

[root@centOS6 ~]# runlevel
5 3

若是想要關閉startx啓動的圖形界面,只須要按鍵盤ctrl+x便可退出圖形界面。
若是想要退出當前會話,可使用exit或者logout命令退出,退出以後會看到以下的效果

logout退出會話
logout退出會話

若是想要從新登陸系統,只須要選擇當前會話,使用SecureCRT提供的Reconnect從新鏈接便可。
從新鏈接會話
從新鏈接成功以後,就會看到以下的效果
從新鏈接會話成功

3.3 使用SecureCRT遠程鏈接CentOS

在平常運維的工做場景中一般都不會直接接觸機房的機器,都是使用SSH 客戶端經過網絡鏈接遠程的服務器。

3.3.1 ip查看以及網絡檢測

在使用SecureCRT鏈接CentOS以前,須要首先獲取CentOS6.10的ip地址,在登錄系統以後,經過右鍵Open in Terminal,打開CentOS系統的終端。
Open in Terminal
而後經過ifconfig命令來查看系統的ip地址,以下圖所示
查看ip地址
ip地址是192.168.0.107
而後在windows的dos窗口下使用ping命令檢測是否可以ping通,若是ping通就會看到以下圖所示的效果
ping

3.3.2 SecureCRT鏈接CentOS6.10

  1. 在啓動SecureCRT以後能夠點擊以下圖所示的加號建立會話
    建立會話
  2. 而後建立基於SSH2協議的會話
    基於SSH2協議的會話
  3. 輸入主機和登陸的用戶信息,默認的通信端口是22
    輸入主機和登陸的用戶信息
  4. 文件傳輸協議選擇SFTP
    文件傳輸協議選擇SFTP
  5. 設置會話名稱以及描述
    設置會話名稱以及描述
  6. 雙擊會話名稱
    雙擊會話名稱
  7. 贊成並保存host key
    贊成並保存host key
  8. 輸入帳號密碼登陸系統
    輸入帳號密碼登陸系統
    登陸成功以後的界面

3.3.3 SecureCRT鏈接CentOS7.6

首先在CentOS7.6的桌面鼠標右鍵,打開終端後輸入ifconfig命令查看CentOS7.6的ip地址
CentOS7.6 IP地址查看
而後將SecureCRT原來鏈接CentOS6.10的會話配置複製一份並重命名爲192.168.0.106@CentOS7.6,並將原來的會話改成192.168.0.107@CentOS6.10。
會話列表
固然若是想要登陸CentOS7.6,還須要在192.168.0.106@CentOS7.6的屬性中修改SSH2通信的主機IP地址以及登陸的用戶名(這裏是以root用戶登陸),以下圖所示
SSH2 通信的IP地址
登陸成功以後會看到以下圖所示的結果
登陸CentOS7.6

3.3.4 SecureCRT個性化設置

首先在SecureCRT的菜單欄中找到Options->Session Options,而後作相關的設置。

  1. 設置終端的外觀
    設置終端的外觀
    選擇Linux外觀
  2. 調整字體大小
    默認的字體大小是10,這裏改成14
    調整字體大小

3.4 人機交互方式

3.4.1 人機交互方式的發展史

隨着計算機的發展,其人機交互方式也是在不斷地演進,從最先出現的基於字符界面交互的Unix系統到後來的基於圖形界面交互的Windows,macOS系統以及藉助語音手勢,聲音觸控的交互方式的Android和IOS。

而絕大部分Linux都是做爲後臺服務器的系統,絕大部分操做都是由字符界面的命令行完成。

3.4.2 初識 Linux Shell

當用戶輸入命令時,Shell程序會負責將用戶輸入的命令提交給內核,並接收內核的執行結果返回給用戶,sHell仍是一種高級程序設計語言,能夠編寫Shell腳本完成複雜的任務,以下圖所示展現了Shell在系統中的結構圖。
Linux系統架構

Linux下的可用Shell有許多實現,能夠經過cat命令查看/etc/shells文件的輸出結果得知

[root@centOS6 ~]# cat /etc/shells 
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh

而系統啓動以後,默認啓動的shell是bash shell,可使用echo $SHELL查看當前使用的shell程序是什麼?以下命令輸出結果顯示默認的就是/bin目下的bash shell。

[root@centOS6 ~]# echo $SHELL
/bin/bash

那麼如何切換不一樣的shell呢?從以前的cat /etc/shells文件中能夠獲取各類shell程序的路徑,只要輸入它們的路徑即可以實現切換,以下命令所示

[root@centOS6 ~]# /bin/csh

而後再使用echo $SHELL查看當前使用的shell程序

[root@centOS6 ~]# echo  $SHELL
/bin/bash

並且每種shell所支持的命令是不盡相同的,例如咱們能夠在bash shell中使用重定向 > liuguanglei.txt建立一個文件

[root@centOS6 ~]# > guanglei.txt

而後使用ls -al |grep guanglei.txt查看以前建立的文件信息,以下命令執行輸出結果顯示

[root@centOS6 ~]# ls -al|grep guanglei.txt 
-rw-r--r--.  1 root root     0 Jan 12 10:40 guanglei.txt

可是若是切換到csh shell以後會發現重定向>變成了無效的命令,以下命令執行輸出結果顯示

[root@centOS6 ~]# cat /etc/shells # 查看可用的shell列表
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
[root@centOS6 ~]# /bin/csh
[root@centOS6 ~]# > guanglei.txt
Invalid null command.

若是想要從csh shell切換到bash shell,可使用exit命令實現,以下命令執行輸出結果顯示

[root@centOS6 ~]# exit
exit

若是想要查看命令的系統調用狀況,可使用strace查看,

[root@centos7 ~]# strace ls

3.4.3 命令提示符

當登陸系統以後,系統會提供一個命令提示符,用於展現一些系統的相關信息,例如使用普通用戶guanglei登陸CentOS6.10後會看到以下格式的命令提示符

[guanglei@centOS6 ~]$

使用管理員用戶root登陸CentOS6.10後會看到以下的格式命令提示符

[root@centOS6 ~]#

它們的不一樣之處在於普通用戶使用$表示,管理員用戶(root)使用#表示,並且命令提示符的固定格式爲[用戶名@主機名 路徑],主機名也只顯示部分,能夠經過hostname查看完整的主機名

[guanglei@centOS6 ~]$ hostname
centOS6.ittimeline.net

路徑只顯示最後一個目錄,經過pwd命令查看當前所處的目錄對比得出結論,~表示home目錄。

[root@centOS6 ~]# pwd #root用戶的目錄
/root

[guanglei@centOS6 ~]$ pwd #普通用戶的目錄
/home/guanglei

這裏咱們能夠定製命令提示符的格式,工做中能夠用來區分測試環境和生產環境,防止誤操做。
命令提示符的格式定義保存在$PS1變量中,可使用echo $PS1查看命令提示符的格式

[guanglei@centOS6 ~]$ echo $PS1
[\u@\h \W]\$

首先咱們使用vim編輯器在/etc/profile.d目錄下建立一個prompt.sh文件,

[root@centOS6 ~]# vim /etc/profile.d/prompt.sh

回車之後默認進入的是命令模式,此時咱們須要輸入i鍵進入插入模式,而後添加以下內容(建議直接複製該內容)

PS1="\[\e[1;32m\][\u@\h \W]\\$\[\e[0m\]"

添加完成後按鍵esc後按shift和冒號(:),再按wq保存退出。
再從新開啓一個會話後會看到以下格式的命令提示符
centOS6系統命令提示符
CentOS7.6系統可使用一樣的方式實現修改,首先使用vim編輯器建立一個prompt.sh文件

[root@centos7 ~]# vim /etc/profile.d/prompt.sh

而後在該文件中添加以下內容

PS1="\[\e[1;36m\][\u@\h \W]\\$\[\e[0m\]"

再關閉會話後,從新開啓一個會話窗口後會看到以下圖所示的效果
CentOS7.6命令提示符

3.5 Linux命令

3.5.1 Linux命令的執行流程

運維人員使用CentOS時,一般都是使用命令來完成平常任務,例如以前使用過的vim,cat,pwd等等。

當Bash Shell隨着系統啓動後,負責監聽用戶從鍵盤輸入的命令,而用戶輸入命令並回車之後,Bash Shell會判斷它是內部命令仍是外部命令,若是是內部命令,則直接從內存中緩存的內部命令列表查找後提交給內核執行,而後將返回結果返回給用戶,若是是外部命令,首先從$PATH環境變量中查找命令所對應的二進制程序,若是沒有找到則直接輸出 command not found...,若是找到會將命令的二進制程序提交給內核執行,而後將執行的結果返回給用戶,並會將外部命令緩存在內存中,下次執行時可以直接從內存中的緩存獲取,提升執行效率。

3.5.2 Linux命令的分類

在Linux Shell中能夠執行的命令分爲兩類,內部命令外部命令,若是想要查看運行的命令是內部命令或者是外部命令,可使用type命令查看,以下命令輸出顯示cd和pwd是內置命令,init是外部命令,若是是內部命令。輸出 comand is a shell builtin,若是是外部命令輸出命令對應的執行路徑。

[root@centos7 ~]#type cd
cd is a shell builtin
[root@centos7 ~]#type pwd
pwd is a shell builtin

[root@centos7 ~]#type init
init is /usr/sbin/init

內部命令是Shell(默認是bash shell)自帶的,內部命令在系統啓動後隨Shell加載到內存,所以相對於外部命令執行效率高,若是想要查看哪些可使用的內部命令,可使用enable命令實現,以下命令輸出顯示bash shell的內置命令。

[root@centos7 ~]#enable
enable .
enable :
enable [
enable alias
enable bg
enable bind
enable break
enable builtin
enable caller
enable cd
enable command
enable compgen
enable complete
enable compopt
enable continue
enable declare
enable dirs
enable disown
enable echo
enable enable
enable eval
enable exec
enable exit
enable export
enable false
enable fc
enable fg
enable getopts
enable hash
enable help
enable history
enable jobs
enable kill
enable let
enable local
enable logout
enable mapfile
enable popd
enable printf
enable pushd
enable pwd
enable read
enable readarray
enable readonly
enable return
enable set
enable shift
enable shopt
enable source
enable suspend
enable test
enable times
enable trap
enable true
enable type
enable typeset
enable ulimit
enable umask
enable unalias
enable unset
enable wait

若是想要禁用或者啓用某個內部命令可使用enable -n command命令實現。
當禁用以後再使用禁用的命令則會輸出command not found,使用enable命令也查不到對應的命令,若是命令輸出顯示禁用了type命令

[root@centos7 ~]#enable -n type
[root@centos7 ~]#type
bash: type: command not found...

若是想要再次啓用以前被禁用的內部命令,只須要使用enable command便可。

[root@centos7 ~]#enable type
[root@centos7 ~]#type mkdir #使用type查看mkdri的命令類型
mkdir is /usr/bin/mkdir

而外部命令是存放在磁盤路徑的可執行的二進制程序,Shell在首次執行外部命令時須要查找的目錄是根據$PATH環境變量的路徑順序去查找,而後將外部命令的路徑緩存在內存中,以下命令輸出顯示環境變量對應的路徑,Linux下多個路徑之間使用:分割。

[root@centos7 ~]#echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

若是在$PATH中查找不到命令對應的路徑,則會輸出 command not found...,以下命令輸出顯示

[root@centos7 ~]#xxx
bash: xxx: command not found...

若是想要查看內存中緩存的外部命令,可使用hash查看,以下命令輸出顯示。

[root@centos7 ~]#hash
hits    command
   2    /usr/bin/who
   3    /usr/bin/clear

若是想要刪除某個hash的緩存,可使用hash -d command實現,以下命令輸出顯示。其中hits表示緩存命中的次數。

[root@centos7 ~]#hash -d who
[root@centos7 ~]#hash
hits    command
   3    /usr/bin/clear

當退出會話以後hash的緩存會被清空,若是想要手動清除緩存,可使用hash -r實現,以下命令輸出顯示。

[root@centos7 ~]#hash -r
[root@centos7 ~]#hash
hash: hash table empty

若是想要查看執行外部命令的路徑,可使用which實現,以下命令輸出顯示。

[root@centos7 ~]#which pwd
/usr/bin/pwd

而whereis 命令不只能夠顯示外部命令的路徑,還能夠顯示命令對應的幫助文件,以下命令輸出顯示。

[root@centos7 ~]#whereis pwd
pwd: /usr/bin/pwd /usr/share/man/man1/pwd.1.gz /usr/share/man/man1p/pwd.1p.gz

3.5.3 Linux命令別名使用

在後續使用命令操做時,能夠經過命令的別名機制來簡化命令,例如在網絡管理中常常要進入到/etc/sysconfig/network-scripts/目錄下,若是未使用別名,經過以下命令實現

[root@centos7 ~]#cd /etc/sysconfig/network-scripts/
[root,就要使用alias 別名=命令 的格式實現
,以下命令所示
``` shell
alias cdns='cd /etc/sysconfig/network-scripts/

而後即可以使用cdns命令實現cd /etc/sysconfig/network-scripts/的功能了,以下命令輸出顯示

[root@centos7 network-scripts]#cdns
[root@centos7 network-scripts]#pwd
/etc/sysconfig/network-scripts

當咱們使用which查看ls的路徑時,根據命令的輸出實際上也能夠得知ls也建立了別名,即 ls='ls --color=auto',以下命令輸出顯示

[root@centos7 network-scripts]#which ls
alias ls='ls --color=auto'
        /usr/bin/ls

若是想要查看當前系統的內置別名列表,能夠直接使用alias命令查看,以下命令輸出顯示

[root@centos7 network-scripts]#alias
alias cdns='cd /etc/sysconfig/network-scripts/'
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

須要注意的是使用alias命令建立的別名只能在當前會話有效,若是退出會話(一般使用exit命令退出會話)後便沒法使用。

[root@centos7 network-scripts]#exit

退出以後可使用SecureCRT提供的重連菜單,從新創建一個會話。

當再次輸入alias命令查看別名時發現以前建立的別名cdns已經不存在

[root@centos7 ~]#alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

那麼系統內置的那些別名存儲在哪裏呢?
若是想要別名永遠生效,須要將別名配置在文件中,若是是普通用戶通常配置在/home/{user.name}/.bashrc文件中,咱們可使用ls -al |grep .bashrc查看,由於Linux系統中以.開頭的文件都是隱藏文件,而ls 命令的-a選項能夠查看隱藏文件,而後使用grep命令實現文件過濾,只看.bashrc的詳細信息。

[guanglei@centos7 ~]$ls -al|grep .bashrc
-rw-r--r--.  1 guanglei guanglei  124 Mar 23  2017 .bashrc

而後使用vim .bashrc編輯文件,將以前的別名添加到.bashrc中

添加別名
添加別名

當編輯完成之後,輸入alias命令會發現找不到添加的cdns別名

[guanglei@centos7 ~]$alias
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

這時咱們須要使用source .bashrc命令將修改的配置刷新到內存中

[guanglei@centos7 ~]$source .bashrc

當再次使用alias命令查看,就會看到cdns別名已經加入到命令的別名列表中

[guanglei@centos7 ~]$alias
alias cdns='cd /etc/sysconfig/network-scripts/'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

而後即可以使用cdns別名直接切換到/etc/sysconfig/network-scripts目錄中了,即便關閉會話或者重啓系統也不會失效。

[guanglei@centos7 ~]$cdns
[guanglei@centos7 network-scripts]$pwd
/etc/sysconfig/network-scripts

而別名和內部命令以及外部命令的優先級順序從高到低的優先級順序是
別名>內部命令>外部命令。

後期在學習其餘相關的命令時,能夠根據本身的喜愛添加別名到.bashrc文件中,以達到快速輸入命令的,實現快捷操做。

須要指出的是以前修改的/home/guanglei/.bashrc文件只會針對普通用戶guanglei生效,若是此時切換到root用戶,再運行cdns別名,系統會提示command not found

[root@centos7 ~]#cdns
-bash: cdns: command not found

若是想要普通用戶和管理員用戶均可以使用cdns這個別名,可使用root用戶登陸系統後,修改/etc目錄下的bashrc文件

[root@centos7 ~]#vim /etc/bashrc

在bashrc文件的最後一行添加alias cdns ='/etc/sysconfig/network-scripts',以下圖所示
bashrc添加別名
而後使用source命令將剛纔添加的命令刷新到內存中

[root@centos7 ~]#source /etc/bashrc

接下來就可使用cdns實現快速切換到/etc/sysconfig/network-scripts目錄下了

[root@centos7 ~]#cdns
[root@centos7 network-scripts]#pwd
/etc/sysconfig/network-scripts

若是別名和Linux命令相同,例如ls的別名就是ls,可使用alias ls查看

[root@centos7 network-scripts]#alias ls
alias ls='ls --color=auto'

那麼根據優先級,默認執行的是別名,那麼咱們想要執行ls的原始命令咋辦呢?
首先咱們能夠根據which --skip-alias ls 命令查看ls命令所在的路徑

[root@centos7 network-scripts]#which  --skip-alias ls  
/bin/ls

根據which命令的輸出結果得知ls命令位於/bin/ls路徑下,即咱們能夠輸入/bin/ls就能夠執行ls的原始命令,以下所示

[root@centOS6 network-scripts]#/bin/ls
ifcfg-eth0   ifdown-ippp    ifdown-sit     ifup-ib     ifup-post      init.ipv6-global
ifcfg-lo     ifdown-ipv6    ifdown-tunnel  ifup-ippp   ifup-ppp       net.hotplug
ifdown       ifdown-isdn    ifup           ifup-ipv6   ifup-routes    network-functions
ifdown-bnep  ifdown-post    ifup-aliases   ifup-isdn   ifup-sit       network-functions-ipv6
ifdown-eth   ifdown-ppp     ifup-bnep      ifup-plip   ifup-tunnel
ifdown-ib    ifdown-routes  ifup-eth       ifup-plusb  ifup-wireless

可是這種方式對於內部命令來講是無法使用的,還有另一種通用的方式,就是使用一對單引號('')將命令括起來,以下命令所示,便可使用ls的原始命令。

[root@centOS6 network-scripts]#'ls'
ifcfg-eth0   ifdown-ippp    ifdown-sit     ifup-ib     ifup-post      init.ipv6-global
ifcfg-lo     ifdown-ipv6    ifdown-tunnel  ifup-ippp   ifup-ppp       net.hotplug
ifdown       ifdown-isdn    ifup           ifup-ipv6   ifup-routes    network-functions
ifdown-bnep  ifdown-post    ifup-aliases   ifup-isdn   ifup-sit       network-functions-ipv6
ifdown-eth   ifdown-ppp     ifup-bnep      ifup-plip   ifup-tunnel
ifdown-ib    ifdown-routes  ifup-eth       ifup-plusb  ifup-wireless

若是想要取消別名可使用unalias alias_name實現,取消以後別名就沒法使用,固然該命令只在當前會話生效,由於從新開啓會話後系統會讀取以前在/etc/bashrc的配置文件中配置的別名。

[root@centOS6 network-scripts]#unalias cdns
[root@centOS6 network-scripts]#alias
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

若是想要禁用全部的別名,可使用unalias -a實現。

[root@centOS6 network-scripts]#unalias -a
[root@centOS6 network-scripts]#alias

3.5.4 Linux命令的組成

一般狀況下一個完整的Linux命令是由command [options] [arguments]三部分組成的,選項和參數都是可選的

  1. 命令(Command):即執行的命令,例如以前使用過的ls,which,cd等等
  2. 選項:用於啓動或者關閉命令的某些功能,選項能夠分爲短選項和長選項,短選項使用-開頭,例如以前使用過的ls -al,其中-al就是命令的短選項,多個短選項能夠同時使用。長選項使用 --表示,例如以前使用which --skip-alias ls 其中--skip-alias就是which命令的長選項,用於忽略別名。
  3. 參數:命令做用的對象,例如文件名,用戶名等等,例如id -u guanglei命令的guanglei就是id做用的用戶。

在使用命令時還須要注意如下注意事項

  1. 多個選項以及多個參數和命令之間使用空白符分隔
  2. 若是想要取消和結束命令,可使用Ctrl+c或者Ctrl+d實現
  3. 多個命令可使用管道符(|)隔開,完成複雜的功能
  4. 若是一條命令太長,一個命令可使用\分紅多行(每行都要使用)

3.5.5 TAB鍵補全

3.5.5.1 TAB鍵路徑補全

在運維工做場景中,常常會使用大量的命令以及操做文件系統的某些目錄,這時可使用TAB鍵來補全命令或者目錄的路徑。

TAB補全路徑:以下所示輸入cd /e而後按TAB鍵,會自動補全爲cd /etc,而後再輸入cd sys按TAB鍵,沒有任何結果由於以sys開頭的目錄不止一個,TAB沒法補全路徑,
若是此時再按TAB,則會輸出sys開頭的目錄列表。

[root@centos7 ~]#cd /etc
[root@centos7 etc]#cd sys
sysconfig/ sysctl.d/  systemd/

所以若是想要使用TAB補全目錄,輸入的目錄字符串通過TAB不全以後必須是惟一一個文件夾名,不然再次TAB會給出列表。

3.5.5.2 命令補全

不管是系統命令仍是外部命令,均可以使用TAB鍵補全,和路徑補全同樣,前提條件是輸入的字符串只有惟一一條對應的命令,不然再次TAB會給出命令列表,以下命令輸出顯示

[root@centos7 etc]#w ##TAB TAB 效果以下所示
w                     wc                    which                 wnck-urgency-monitor  wvdialconf
wait                  wdctl                 while                 wodim                 wvgain
wall                  weak-modules          whiptail              wpa_cli               wvunpack
watch                 wftopfa               who                   wpa_passphrase        
watchgnupg            wget                  whoami                wpa_supplicant/       
wavpack               whatis                wipefs                write                 
wayland-scanner       whereis               withsctp              wvdial

3.5.5.3 TAB鍵的常見應用

  1. 使用系統根路徑(/)+2次TAB鍵補全實現查看Linux系統根目錄的下一級目錄,包括隱藏目錄
[root@centos7 etc]#/
bin/   data/  etc/   lib/   media/ opt/   root/  sbin/  sys/   usr/   
boot/  dev/   home/  lib64/ mnt/   proc/  run/   srv/   tmp/   var/
  1. 使用$+2次TAB實現查看內置的變量(CentOS7.6不支持)
[root@centOS6 ~]#$
$_ $CVS_RSH $LINES $QTLIB
$BASH $DIRSTACK $LOGNAME $RANDOM
$BASH_ALIASES $EUID $LS_COLORS $SECONDS
$BASH_ARGC $G_BROKEN_FILENAMES $MACHTYPE $SELINUX_LEVEL_REQUESTED
$BASH_ARGV $GROUPS $MAIL $SELINUX_ROLE_REQUESTED
$BASH_CMDS $HISTCMD $MAILCHECK $SELINUX_USE_CURRENT_RANGE
$BASH_COMMAND $HISTCONTROL $OPTERR $SHELL
$BASH_LINENO $HISTFILE $OPTIND $SHELLOPTS
$BASHOPTS $HISTFILESIZE $OSTYPE $SHLVL
$BASHPID $HISTSIZE $PATH $SSH_ASKPASS
$BASH_SOURCE $HOME $PIPESTATUS $SSH_CLIENT
$BASH_SUBSHELL $HOSTNAME $PPID $SSH_CONNECTION
$BASH_VERSINFO $HOSTTYPE $PS1 $SSH_TTY
$BASH_VERSION $ID $PS2 $TERM
$colors $IFS $PS4 $UID
$COLORS $LANG $PWD $USER
$COLUMNS $LESSOPEN $QTDIR 
$COMP_WORDBREAKS $LINENO $QTINC 
  1. 使用~和2次TAB實現查看系統的全部用戶
[root@centOS6 ~]#~
~abrt/          ~daemon/        ~gopher         ~mail/          ~postfix/       ~rtkit/         ~tcpdump/       
~adm            ~dbus/          ~guanglei/      ~nfsnobody/     ~pulse          ~saslauth       ~usbmuxd/       
~apache/        ~ftp            ~haldaemon/     ~nobody/        ~root/          ~shutdown/      ~uucp           
~avahi-autoipd  ~games/         ~halt/          ~ntp/           ~rpc            ~sshd/          ~vcsa/          
~bin/           ~gdm/           ~lp/            ~operator/      ~rpcuser/       ~sync/
  1. 使用./和2次TAB實現查看當前目錄下的子目錄,包含隱藏目錄
[root@centOS6 ~]#./
.abrt/     .config/   Desktop/   Downloads/ .gnome2/   .gnupg/    .local/    .nautilus/ Public/    .ssh/      Videos/
.cache/    .dbus/     Documents/ .gconf/    .gnote/    .gvfs/     Music/     Pictures/  .pulse/    Templates/ 
[root@centOS6 ~]#./
.abrt/     .config/   Desktop/   Downloads/ .gnome2/   .gnupg/    .local/    .nautilus/ Public/    .ssh/      Videos/
.cache/    .dbus/     Documents/ .gconf/    .gnote/    .gvfs/     Music/     Pictures/  .pulse/    Templates/
  1. 使用*/和2次TAB實現查看當前目錄下的子目錄,不包含隱藏目錄
[root@centOS6 ~]#*/
Desktop/    Documents/  Downloads/  Music/      Pictures/   Public/     Templates/  Videos/

3.5.6 Linux命令歷史

在Linux系統中,系統會保存你輸入命令的歷史記錄,能夠用它來重複執行命令,而在登陸bash shell時,系統會讀取命令歷史文件.bash_history中記錄下來的命令,登陸進bash shell後新執行的命令只會緩存在內存中,這些命令在退出以後會追繳到歷史命令文件中。

若是想要查看命令歷史,可使用history命令實現

[root@centOS6 ~]#history #歷史命令輸出結果只截取了部分
    1  reboot
    2  tar -xvf VMwareTools-10.3.2-9925305.tar.gz 
    3  CLEAR
    4  CLS
    5  EXIT
    6  ./vmware-tools-distrib/vmware-install.pl 
    7  gedit /etc/gdm/custom.conf 
    8  reboot
    9  ifconfig
   10  tty
   11  tty
   12  whoami
   13  who am i
   14  pts

若是想要執行命令歷史中的命令,只須要使用!加上命令歷史的編號便可,以下命令所示

[root@centOS6 ~]#!9 #執行ifconfig命令
ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:18:1B:DE  
          inet addr:192.168.190.128  Bcast:192.168.190.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe18:1bde/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3053 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7588 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:313791 (306.4 KiB)  TX bytes:795539 (776.8 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:640 errors:0 dropped:0 overruns:0 frame:0
          TX packets:640 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:32120 (31.3 KiB)  TX bytes:32120 (31.3 KiB)

固然若是想要倒着執行history中的命令,只須要使用!加上負號開頭加上編號便可,以下命令所示

225  history
  226  clear
  227  vim /etc/profile
  228  source /etc/profile
  229  clear
  230  history
  231  ifconfig
  232  clear
  233  history
  234  clear
  235  history
  236  vim .bash_history 
  237  history
[root@centOS6 ~]#!-7
ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:18:1B:DE  
          inet addr:192.168.190.128  Bcast:192.168.190.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe18:1bde/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5452 errors:0 dropped:0 overruns:0 frame:0
          TX packets:19401 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:540056 (527.3 KiB)  TX bytes:1878467 (1.7 MiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:1808 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1808 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:90524 (88.4 KiB)  TX bytes:90524 (88.4 KiB)

還能夠經過鍵盤上的上下方向鍵快速切換以前輸入過的命令。
若是想要調用前一個命令的最後一個參數,可使用!$表示,以下命令輸出顯示

[root@centOS6 ~]#ll /etc/profile
-rw-r--r--. 1 root root 1841 Jan 12 22:21 /etc/profile
[root@centOS6 ~]#cat !$ #這裏會實現查看profile文件的內容

若是想要搜索歷史命令中的命令,可使用Ctrl+r實現模糊搜索,以下圖所示,當使用Ctrl+r搜索sys,系統會將sys關聯的命令顯示出來,而後回車便可執行。
搜索sys
若是想退出搜索,可使用Ctrl+g。

系統默認只會緩存最近的1000條歷史命令,而若是想要記錄更多的歷史命令,能夠經過修改系統配置文件/etc/profile文件中HISTSIZE的值,以下圖所示
HISTSIZE
若是想要清除history中存儲在內存中的命令歷史,可使用history -c實現,以下命令輸出所示

[root@centOS6 ~]#history -c #清除內存中存儲的命令歷史
[root@centOS6 ~]#history
    1  history

若是想要完全的刪除命令歷史,正確的姿式應該是首先刪除.bash_history文件,而後再使用history -c實現刪除內存中的命令歷史,以下命令所示

[root@centOS6 ~]#rm -rf .bash_history 
[root@centOS6 ~]#history -c

若是想要實現將history默認存儲在內存中的命令歷史存儲到.bash_history文件中,而不是等到退出會話後存儲到.bash_history文件,可使用history -a實現,以下命令所示

[root@centOS6 ~]#history -a           
[root@centOS6 ~]#cat .bash_history

若是不想要系統記錄歷史命令,可使用history -p command實現,以下命令輸出顯示

[root@centOS6 ~]#history -c
[root@centOS6 ~]#history
    1  history
[root@centOS6 ~]#history -p `ls`
anaconda-ks.cfg
Desktop
Documents
Downloads
guanglei.new
guanglei.txt
install.log
install.log.syslog
Music
Pictures
Public
Templates
Videos
[root@centOS6 ~]#history
    1  history

3.6 Linux基礎命令

3.6.1 Linux硬件配置信息查看

在系統安裝完成之後,能夠經過命令查看硬件(CPU,內存,磁盤信息)相關配置。

3.6.1.1 查看CPU配置信息

命令名稱:lscpu
命令功能:查看CPU配置信息

執行以下命令輸出結果顯示CentOS6.10系統的CPU配置信息

[root@centOS6 ~]#lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                12
On-line CPU(s) list:   0-11
Thread(s) per core:    1
Core(s) per socket:    6
Socket(s):             2
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 158
Model name:            Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz
Stepping:              10
CPU MHz:               2904.004
BogoMIPS:              5808.00
Hypervisor vendor:     VMware
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              12288K
NUMA node0 CPU(s):     0-11

執行以下命令輸出結果顯示CentOS7.6系統的CPU配置信息

[root@centos7 ~]#lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                12
On-line CPU(s) list:   0-11
Thread(s) per core:    1
Core(s) per socket:    6
Socket(s):             2
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 158
Model name:            Intel(R) Core(TM) i9-8950HK CPU @ 2.90GHz
Stepping:              10
CPU MHz:               2904.000
BogoMIPS:              5808.00
Hypervisor vendor:     VMware
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              12288K
NUMA node0 CPU(s):     0-11
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 invpcid rtm mpx rdseed adx smap clflushopt xsaveopt xsavec arat spec_ctrl intel_stibp flush_l1d arch_capabilities

3.6.1.2 內存配置查看

命令名稱:free
命令功能:查看內存,默認單位是字節
經常使用選項:

  • -m:內存存儲單位使用MB查看
  • -g:內存存儲單位使用GB查看,注意該選項顯示的內存偏差較大
    執行以下命令輸出結果顯示CentOS7.6系統的內存配置信息
[root@centos7 ~]#free -m
              total        used        free      shared  buff/cache   available
Mem:           7964         738        6294          42         930        6867
Swap:          4095           0        4095

更詳細的內存信息可使用cat /proc/meminfo查看,以下命令執行結果輸出顯示

[root@centos7 ~]#cat /proc/meminfo 
MemTotal:        8155144 kB
MemFree:         6443356 kB
MemAvailable:    7030460 kB
Buffers:            2124 kB
Cached:           827496 kB
SwapCached:            0 kB
Active:           790976 kB
Inactive:         603604 kB
Active(anon):     566180 kB
Inactive(anon):    42576 kB
Active(file):     224796 kB
Inactive(file):   561028 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       4194300 kB
SwapFree:        4194300 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:        565000 kB
Mapped:           166484 kB
Shmem:             43796 kB
Slab:             123504 kB
SReclaimable:      45424 kB
SUnreclaim:        78080 kB
KernelStack:       11504 kB
PageTables:        34984 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     8271872 kB
Committed_AS:    4242784 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      191876 kB
VmallocChunk:   34359310332 kB
HardwareCorrupted:     0 kB
AnonHugePages:    258048 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      190272 kB
DirectMap2M:     2955264 kB
DirectMap1G:     7340032 kB

3.6.1.3 磁盤配置信息查看

命令名稱:lsblk
命令功能:列出系統上全部的磁盤

執行以下命令輸出結果顯示CentOS7.6系統的磁盤配置信息
當前只有一塊硬盤(sda)以及一個鏡像CentOS 7 x86_64

[root@centos7 ~]#lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  200G  0 disk 
├─sda1   8:1    0  500M  0 part /boot
├─sda2   8:2    0   50G  0 part /
├─sda3   8:3    0   30G  0 part /data
├─sda4   8:4    0    1K  0 part 
└─sda5   8:5    0    4G  0 part [SWAP]
sr0     11:0    1   10G  0 rom  /run/media/root/CentOS 7 x86_64

3.6.1.4 ip查看

CentOS中可使用ifconfig或者ip add查看網絡的ip信息,在CentOS7.6中,ens33表示默認的網卡名稱,其ip地址是192.168.0.106。

[root@centos7 ~]#ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.106  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::483f:14a3:763e:2f4b  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:cd:a5:0a  txqueuelen 1000  (Ethernet)
        RX packets 3813  bytes 1449499 (1.3 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1587  bytes 219797 (214.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 216  bytes 22416 (21.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 216  bytes 22416 (21.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:28:7e:9d  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ip add查看ip

[root@centOS6 ~]#ip add 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:9f:c5:52 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.107/24 brd 192.168.0.255 scope global eth0
    inet6 fe80::20c:29ff:fe9f:c552/64 scope link 
       valid_lft forever preferred_lft forever

3.6.2 查看系統版本

一般咱們所說的Linux都是指的Linux內核,目前CentOS7.6使用的Linux 3.10版本的內核,而CentOS6.10使用的是Linux2.6的內核。

CenOS6.10內核版本查看

[root@centOS6 ~]#uname -r
2.6.32-754.el6.x86_64

CentOS7.6內核版本查看

[root@centos7 ~]#uname -r
3.10.0-957.el7.x86_64

而若是想要查看Linux的發行版CentOS,可使用cat命令查看/etc/redhat-release文件便可。

CentOS7版本信息查看

[root@centos7 ~]#cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core)

CentOS6.10版本信息查看

[root@centOS6 ~]#cat /etc/redhat-release 
CentOS release 6.10 (Final)

在CentOS6.10中還可使用lsb_release -a查看系統版本信息

[root@centOS6 ~]#lsb_release -a
LSB Version:    :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: CentOS
Description:    CentOS release 6.10 (Final)
Release:        6.10
Codename:       Final

3.6.3 Linux系統日期和時間

3.6.3.1 Linux系統時鐘和硬件時鐘

在Linux中有硬件時鐘與系統時鐘等兩種時鐘。硬件時鐘是指主機板上的時鐘設備,也就是一般可在BIOS畫面設定的時鐘。系統時鐘則是指kernel中的時鐘。當Linux啓動時,系統時鐘會去讀取硬件時鐘的設定,以後系統時鐘即獨立運做。全部Linux相關指令與函數都是讀取系統時鐘的設定,並且硬件時鐘和系統時鐘可能不同。

3.6.3.2 系統時間和硬件時間顯示與同步

咱們可使用date命令查看當前系統時間,以下命令輸出顯示。

[root@centOS6 ~]#date --date=now
Sun Jan 13 16:11:18 CST 2019

[root@centOS6 ~]#date
Sun Jan 13 16:11:46 CST 2019

還能夠經過clock命令查看當前硬件時鐘,以下命令輸出顯示

[root@centOS6 ~]#clock
Sat 12 Jan 2019 01:50:07 PM CST  -0.688997 seconds

在有些狀況下硬件時鐘和系統時鐘可能不一致,例如這裏使用date命令來修改系統時間,修改的日期格式爲月日小時分年.秒,以下命令所示

[root@centOS6 ~]#date 123112302019.45
Tue Dec 31 12:30:45 CST 2019

[root@centOS6 ~]#date #修改以後再次使用date命令查看當前系統日期
Tue Dec 31 12:30:45 CST 2019

[root@centOS6 ~]#clock #查看硬件時鐘
Sat 12 Jan 2019 01:57:21 PM CST  -1.298448 seconds

修改以後此時系統時鐘和硬件時鐘就會不一致,那麼如何讓系統時間和硬件保持一致呢?可使用clock -s實現將系統時間同步硬件時間,而後再使用date查看系統時間,發現系統時間和硬件時間已經保持一致了。

[root@centOS6 ~]#clock -s
[root@centOS6 ~]#date
Sat Jan 12 14:01:47 CST 2019
[root@centOS6 ~]#clock
Sat 12 Jan 2019 02:01:51 PM CST  -1.187966 seconds

若是想要硬件時間同步系統時間,可使用clock -w實現,以下所示

[root@centOS6 ~]#clock -w

3.6.3.3 date命令

date命令主要用來顯示或者修改系統日期時間,而一般只有超級用戶可以修改時間,普通用戶只可以查看系統時間,date的命令語法以下所示
date [選項] 顯示時間的格式(以加號開頭,後面接對應的時間格式)
date命令的選項及其說明以下所示

  • -s --set:設置系統時間
  • -d --date 顯示描述的日期

經常使用時間格式以下表格所示

格式 表示含義
%Z 顯示時區
%Y 顯示完全年份
%m 顯示月份,表示格式從0~12
%d 顯示一個月的第幾天
%H 顯示小時,表示範圍00~23
%M 顯示分鐘,表示格式從00~59
%S 顯示秒鐘,顯示格式爲00~59
%A 顯示星期幾,例如Sunday表示星期日
%F 等同於%Y-%m-%d
%T 等同於%H:%M:%S
%s 計算自1970-01-01 00:00:00到當前時間的秒數

關於date命令的完整日期格式說明,可使用date --help查看對應的幫助文檔獲取,以下命令所示

[root@centOS6 ~]#date --help

在沒有網絡鏈接的工做環境中,學習查幫助是獲取知識的最佳方式。

date經常使用案例1:顯示當前日期,使用年-月-日表示,例如2019-01-15,以下命令輸出顯示

[root@centos7 ~]#date +%F
2019-01-15

date經常使用案案例2:顯示當前日期時間,使用年月日 時分秒錶示,例如2019-01-15 14:05:26

[root@centOS6 ~]#date +'%F %T'
2019-01-15 14:05:26

date經常使用案例3:計算自1970-01-01 00:00:00到當前時間的秒數

[root@centos7 ~]#date +%s
1547534021

date案例4:計算指定的秒數對應的日期時間

[root@centOS6 ~]#date -d @1547534021
Sat Jan 12 14:04:24 CST 2019

date經常使用案例5:顯示昨天的時間日期

[root@centos7 ~]#date -d "-1 day" +"%F %T"
2019-01-14 14:41:13

date經常使用案例6:顯示兩天前是星期幾

[root@centos7 ~]#date -d "-2 day" +%A
Sunday

3.6.3.4 系統時區

CentOS7.6系統中提供了timedatectl用來查看時區,以下命令輸出結果所示
Local time顯示當前的時間日期,Universal time顯示的是格林威治時間,Time zone顯示當前的時區是亞洲/上海。而UTC時間和本地時間相比恰好相差八個小時。

[root@centos7 ~]#timedatectl
      Local time: Sat 2019-01-12 14:20:23 CST
  Universal time: Sat 2019-01-12 06:20:23 UTC
        RTC time: Sat 2019-01-12 14:20:22
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

若是想要獲取當前系統可用的時區,可使用timedatectl list-timezones命令列出
系統失去列表

[root@centos7 ~]#timedatectl list-timezones

若是想要修改系統的時區,可使用timedatectl set-timezone實現,以下命令所示,將當前的系統時區改成歐洲/柏林,而後使用timedatectl能夠查看修改後的結果

[root@centos7 ~]#timedatectl set-timezone Europe/Berlin
[root@centos7 ~]#timedatectl
      Local time: Sat 2019-01-12 07:32:03 CET
  Universal time: Sat 2019-01-12 06:32:03 UTC
        RTC time: Sat 2019-01-12 14:32:02
       Time zone: Europe/Berlin (CET, +0100)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: no
 Last DST change: DST ended at
                  Sun 2018-10-28 02:59:59 CEST
                  Sun 2018-10-28 02:00:00 CET
 Next DST change: DST begins (the clock jumps one hour forward) at
                  Sun 2019-03-31 01:59:59 CET
                  Sun 2019-03-31 03:00:00 CEST

時區修改完成之後,當再次使用date命令查看當前系統日期時,會發現系統日期也會隨着改變。並且命令輸出的結果顯示柏林時間比北京時間晚七個小時

[root@centos7 ~]#date
Sat Jan 12 07:34:54 CET 2019

由於本人目前所處的位置正是亞洲/上海,因此再次將系統的時區修改成亞洲/上海

[root@centos7 ~]#timedatectl set-timezone Asia/Shanghai
[root@centos7 ~]#timedatectl
      Local time: Sat 2019-01-12 14:37:30 CST
  Universal time: Sat 2019-01-12 06:37:30 UTC
        RTC time: Sat 2019-01-12 14:37:29
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a
[root@centos7 ~]#

3.6.3.5 日曆

若是想要查看日曆,可使用cal命令實現,該命令默認只顯示當月的命令,以下輸出結果顯示

[guanglei@centOS6 network-scripts]$cal
    January 2019    
Su Mo Tu We Th Fr Sa
       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

若是想要顯示一全年的日曆,能夠加上- y選項實現以下命令輸出結果。

[guanglei@centOS6 network-scripts]$cal -y
                               2019                               

       January               February                 March       
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
       1  2  3  4  5                   1  2                   1  2
 6  7  8  9 10 11 12    3  4  5  6  7  8  9    3  4  5  6  7  8  9
13 14 15 16 17 18 19   10 11 12 13 14 15 16   10 11 12 13 14 15 16
20 21 22 23 24 25 26   17 18 19 20 21 22 23   17 18 19 20 21 22 23
27 28 29 30 31         24 25 26 27 28         24 25 26 27 28 29 30
                                              31
        April                   May                   June        
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
    1  2  3  4  5  6             1  2  3  4                      1
 7  8  9 10 11 12 13    5  6  7  8  9 10 11    2  3  4  5  6  7  8
14 15 16 17 18 19 20   12 13 14 15 16 17 18    9 10 11 12 13 14 15
21 22 23 24 25 26 27   19 20 21 22 23 24 25   16 17 18 19 20 21 22
28 29 30               26 27 28 29 30 31      23 24 25 26 27 28 29
                                              30
        July                  August                September     
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
    1  2  3  4  5  6                1  2  3    1  2  3  4  5  6  7
 7  8  9 10 11 12 13    4  5  6  7  8  9 10    8  9 10 11 12 13 14
14 15 16 17 18 19 20   11 12 13 14 15 16 17   15 16 17 18 19 20 21
21 22 23 24 25 26 27   18 19 20 21 22 23 24   22 23 24 25 26 27 28
28 29 30 31            25 26 27 28 29 30 31   29 30

       October               November               December      
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
       1  2  3  4  5                   1  2    1  2  3  4  5  6  7
 6  7  8  9 10 11 12    3  4  5  6  7  8  9    8  9 10 11 12 13 14
13 14 15 16 17 18 19   10 11 12 13 14 15 16   15 16 17 18 19 20 21
20 21 22 23 24 25 26   17 18 19 20 21 22 23   22 23 24 25 26 27 28
27 28 29 30 31         24 25 26 27 28 29 30   29 30 31

3.6.4 Linux系統的關機和重啓

3.6.4.1 Linux系統的關機

服務器通常都是要保證7*24小時服務高可用,若是關機,會致使服務不可用,
一般只有在測試環境會使用關機來關閉系統,關機通常用於,遷移,停服,硬件升級。
若是想要關機,可使用halt或者poweroff命令來實現,以下命令是使用poweroff命令實現關機的輸出效果,使用poweroff關機時它會發送一個關閉電源的信號。

[guanglei@centOS6 ~]$poweroff

Broadcast message from guanglei@centOS6.ittimeline.net
        (/dev/pts/1) at 14:42 ...

The system is going down for power off NOW!

VMware WorkStation中也能夠查看到CentOS6.10是處於關機狀態,以下圖所示

CentOS6.10處於關機狀態
CentOS6.10處於關機狀態

當關機以後,SecureCRT須要從新鏈接CentOS6.10才能正常訪問。

若是想要正常開啓系統,須要點擊開啓虛擬機菜單。
開啓虛擬機
而halt命令也能夠實現關機,可是和poweroff執行的結果是不同的,halt只是關閉系統,而不會切斷電源,能夠從VMware WorkStation中看出
客戶機系統已經禁用CPU,請關閉或者重置虛擬機

當嘗試關閉虛擬機時,VMWare WorkStation會提示系統仍然處於開啓狀態
CentOS7.6仍然處於開啓狀態
若是想要再次啓動CentOS7.6,能夠選擇以下圖所示的菜單
從新啓動虛擬機

Linux下關於關機的操做還提供了一個showdown的命令,它提供了一些經常使用的選項,能夠實現一些特定的功能,以下表格所示

選項名稱 選項功能
-r 重啓系統
-h 關機
-c 取消正在執行的shutdown指令

應用案例1:在指定的時間下關機,例如我想要在十分鐘以後關機,可使用以下命令實現

[root@centOS6 ~]#shutdown -h +10

應用案例2:若是想要取消關機可使用Ctrl+c中斷程序或者使用shutdown -c實現取消關機

[root@centOS6 ~]#shutdown -c

應用案例3:若是想要使用重啓系統,可使用shutdown -r now 實現,以下命令執行結果所示

[root@centOS6 ~]#shutdown -r now

Broadcast message from root@centOS6.ittimeline.net
        (/dev/pts/0) at 10:59 ...

The system is going down for reboot NOW!

3.6.4.2 Linux系統的重啓

當咱們在使用Linux系統的過程當中,可能會遇到某些問題沒法解決,這時候重啓系統變成了一個解決辦法,固然服務器系統不能隨便重啓,由於重啓會致使服務器上的服務不可用,影響用戶體驗,因此重啓最好在半夜或者訪問用戶量少的時候進行。
Linux系統的重啓可使用reboot命令實現,以下所示

[root@centOS6 ~]#reboot

Broadcast message from root@centOS6.ittimeline.net
        (/dev/pts/2) at 15:05 ...

The system is going down for reboot NOW!

重啓以後當前會話也會自動關閉,當重啓完成之後,可使用SecureCRT提供的重連功能快速鏈接,而後進行後續操做
從新鏈接CentOS

3.6.5 桌面共享

3.6.5.1 screen的安裝

在工做或者學習的過程當中,可能會遇到一些本身沒法解決的問題,而迫切須要尋求別別人的幫助,而有些問題沒法用語言描述清楚,這時候就須要使用到桌面共享的功能了,經過遠程鏈接,讓大神看到你的屏幕來解決問題。

Windows下能夠經過Teamviewer或者QQ能夠實現遠程桌面共享
Linux下經過screen命令來實現桌面共享,當在系統中執行screen命令時發現Shell告訴咱們該命令找不到,所以咱們須要安裝screen。

[guanglei@centos7 ~]$screen
bash: screen: command not found...

那麼CentOS下如何安裝軟件呢?
首先咱們在VMware WorkStation中找到CentOS7.6的虛擬機設置,確保CD/DVD的設置項中配置了使用ISO鏡像文件,以下圖所示
使用ISO鏡像文件
而且光盤已是鏈接狀態
光盤已是鏈接狀態
而後在SecureCRT終端中使用df命令查看該ISO文件掛在的路徑

[root@centos7 ~]#df
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda2       52403200  3671724  48731476   8% /
devtmpfs         3979308        0   3979308   0% /dev
tmpfs            3995144        0   3995144   0% /dev/shm
tmpfs            3995144    12888   3982256   1% /run
tmpfs            3995144        0   3995144   0% /sys/fs/cgroup
/dev/sda3       31441920    32992  31408928   1% /data
/dev/sda1        1038336   178052    860284  18% /boot
tmpfs             799032       20    799012   1% /run/user/0
/dev/sr0        10491772 10491772         0 100% /run/media/root/CentOS 7 x86_64
tmpfs             799032        0    799032   0% /run/user/1000

根據命令輸出結果顯示ISO鏡像文件的掛載目錄是/run/media/root/CentOS\ 7\ x86_64/,而後使用rpm -ivh命令即可安裝screen

[root@centos7 ~]#rpm -ivh /run/media/root/CentOS\ 7\ x86_64/Packages/screen-4.1.0-0.25.20120314git3c2946.el7.x86_64.rpm 
warning: /run/media/root/CentOS 7 x86_64/Packages/screen-4.1.0-0.25.20120314git3c2946.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:screen-4.1.0-0.25.20120314git3c29################################# [100%]

CentOS6.10和CentOS7.6同樣,首先要保證虛擬機的設置中的CD/DVD的設置項中配置了使用ISO鏡像文件,而且是已經鏈接的狀態,而後使用以下命令即可安裝。

[root@centOS6 ~]#rpm -ivh /media/CentOS_6.10_Final/Packages/screen-4.0.3-19.el6.x86_64.rpm 
warning: /media/CentOS_6.10_Final/Packages/screen-4.0.3-19.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Preparing...                ########################################### [100%]
   1:screen                 ########################################### [100%]

3.6.5.2 screen的使用

首先必須保持有同一用戶(例如root)的兩個SecureCRT客戶端已經鏈接上了同一臺CentOS,這裏以CentOS6.10爲例。
準備兩個鏈接Linux系統的SecureCRT終端

而後在左邊(小白)的窗口中輸入screen -S helpme回車後開啓一個會話

[root@centOS6 ~]#screen -S helpme

而後再右邊的窗口(大神)輸入screen -x helpme加入一個會話,其中helpme是會話名稱。

[root@centOS6 ~]#screen -x helpme

而後左右兩邊的操做就能夠同步了,這時就實現了桌面共享,以下圖所示

screen實現桌面共享
screen實現桌面共享

若是大神想要退出桌面共享,只須要Ctrl+a,d就能夠實現。
而小白想要退出桌面共享,也可使用Ctrl+a,d能夠實現,若是想要再次加如會話,只須要使用screen -r即可從新加入會話,以下命令所示

[root@centOS6 ~]#screen -r helpme

3.6.6 使用echo顯示字符串

3.6.6.1 echo命令概述

echo默認是顯示字符串並完成換行,以前使用過echo查看環境變量,以下命令所示

[root@centos7 ~]#echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

也使用過echo查看命令提示符的格式

[root@centos7 ~]#echo $PS1
\[\e[1;36m\][\u@\h \W]\$\[\e[0m\]

而後可使用-e選項控制輸出內容的格式,以下命令所示輸出字符串並在換行的基礎之上再換行一次

[root@centos7 ~]#echo -e "hello\n"
hello

若是想要取消echo的默認換行,可使用-e選項,而後在輸出的內容後面加\c,以下命令輸出顯示

[root@centos7 ~]#echo -e "hello\c"
hello[root@centos7 ~]#

若是想要輸出的內容實現tab的效果,可使用-e選項,而後在輸出的內容中間加上\t,以下命令所示

[root@centos7 ~]#echo -e "hello\tworld"
hello   world

若是想要實現聲音提示(前提是系統的聲音已經打開),可使用-e選項後加上'\a'實現,以下命令所示

[root@centos7 ~]#echo -e "\a"

若是想要在輸出的內容中插入\,須要使用\,以下命令所示

[root@centos7 ~]#echo -e 'hello\\world'
hello\world

3.6.6.2 文本是如何存儲的

計算機中的數據(文本、圖片,音頻、視頻)都是以二進制的格式存儲數據的,那麼如何來驗證這一點呢?
首先使用touch命令建立一個文件hello,和Windows不一樣的是Linux的文件不須要後綴名來判斷格式。

[root@centos7 ~]#touch hello

而後使用echo 結合重定向將a字符輸入到hello.txt中。

[root@centos7 ~]#echo "a" > hello

再使用cat命令查看hello的內容

[root@centos7 ~]#cat hello 
a

而後使用hexdump -C命令查看hello文件中的a存儲對應的十六進制的值

[root@centos7 ~]#hexdump -C hello 
00000000  61 0a                                             |a.|
00000002

輸出結果恰好是十六進制的61,換算成十進制就是97,字符和數字的對應關係由ASC||碼規定。

而97轉換爲8進製爲141,可使用echo -e輸出8進制141對應的字符,命令以下所示

[root@centos7 ~]#echo -e '\0141'
a

3.6.6.3 echo的特殊符號

在使用echo命令輸出文本內容是,能夠藉助``(反向單引號,數字1左邊的那個鍵) 實現命令擴展:把一個命令的輸出當成另一個命令參數,以下命令所示

[root@centos7 ~]#echo my host name is `hostname`
my host name is centos7.ittimeline.net

[root@centos7 ~]#echo my name is `whoami`
my name is root

``的應用場景1:以下命令輸出顯示,使用當前日期建立日誌文件

[root@centos7 ~]#touch `date +%F`.log
[root@centos7 ~]#ll
total 12
-rw-r--r--. 1 root root    0 Jan 13 04:08 2019-01-13.log

``的應用場景2:以下命令實現將ls命令對應的文件複製到/data目錄下

[root@centos7 ~]#which --skip-alias ls #查看ls命令的路徑
/usr/bin/ls
[root@centos7 ~]#cp `which --skip-alis ls` /data
[root@centos7 ~]#ls -la /data #查看複製的文件
total 116
drwxr-xr-x.  2 root root     16 Jan 13 04:14 .
dr-xr-xr-x. 18 root root    236 Jan 10 10:08 ..
-rwxr-xr-x.  1 root root 117680 Jan 13 04:14 ls

echo默認會將命令後面的內容以字符串("包含起來的內容")的形式輸出,若是輸出的內容中包含了變量(例如這裏的$PATH),會順便將變量的值輸出,以下命令輸出結果所示。

[root@centos7 ~]#echo env path is $PATH
env path is /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

即便輸出的內容加上雙引號(""),也不會影響輸出的結果,以下命令輸出結果所示。

[root@centos7 ~]#echo "env path is $PATH"
env path is /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

若是不想echo在執行時輸出變量的值,可使用單引號(''),以下命令所示

[root@centos7 ~]#echo 'env path is $PATH'
env path is $PATH

echo還能夠結合{}實現打印重複字符串的簡化形式,以下命令所示

[root@centos7 ~]#echo {1..10} #輸出1-10
1 2 3 4 5 6 7 8 9 10
[root@centos7 ~]#echo {a..z} #輸出a-z的26個小寫字母
a b c d e f g h i j k l m n o p q r s t u v w x y z
[root@centos7 ~]#echo {A..Z} #輸出A-Z的26個大寫字母
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
[root@centos7 ~]#echo file{1..10}.log #輸出10個文件名
file1.log file2.log file3.log file4.log file5.log file6.log file7.log file8.log file9.log file10.log

3.7 獲取幫助

3.7.1 獲取幫助的幾種方式

在平常學習和生產環境使用Linux的過程當中,可能須要使用到的命令以及相關的服務有幾百個之多,咱們不可能記得住全部的命令以及選項的對應的功能,這時咱們就須要經過查看幫助來了解他們的使用,以下列表所示,列出了可能用到的查看幫助的方法,平時也不用刻意去記,使用熟練以後天然就記住了。

  1. whatis查看命令的功能說明
  2. 內部命令使用help command查看
  3. 外部命令使用command --help或者command -h查看
  4. 外部命令也可使用幫助手冊(也就是man命令)
  5. 官方站點,例如MySQLNginx等等
  6. 搜索引擎:百度,谷歌

3.7.2 whatis

whatis命令是用來查看命令簡要的功能說明,其應用場景就是首次使用一個陌生的命令時,可使用它來了解命令的功能,以下命令輸入顯示

[root@centOS6 ~]#whatis ls #查看ls命令的說明
ls                   (1)  - list directory contents
ls                   (1p)  - list directory contents

[root@centOS6 ~]#whatis rm
rm                   (1p)  - remove directory entries
rm                   (1)  - remove files or directories

須要注意的是whatis命令可能在剛剛裝完系統以後不能當即使用,whatis是從數據庫中獲取命令的功能說明,咱們能夠手動使用相關的命令來建立whatis的數據庫,CentOS6.10可使用makewhatis命令建立,

[root@centOS6 ~]#makewhatis

而CentOS7.6可使用mandb命令建立。

[root@centos7 etc]#mandb

3.7.3 內部命令幫助查看

若是是想要查看內部命令,能夠直接使用help command便可查看,以下命令輸出所示。

[root@centOS6 ~]#help cd
cd: cd [-L|-P] [dir]
    Change the shell working directory.
    
    Change the current directory to DIR.  The default DIR is the value of the
    HOME shell variable.
    
    The variable CDPATH defines the search path for the directory containing
    DIR.  Alternative directory names in CDPATH are separated by a colon (:).
    A null directory name is the same as the current directory.  If DIR begins
    with a slash (/), then CDPATH is not used.
    
    If the directory is not found, and the shell option `cdable_vars' is set,
    the word is assumed to be  a variable name.  If that variable has a value,
    its value is used for DIR.
    
    Options:
        -L      force symbolic links to be followed
        -P      use the physical directory structure without following symbolic
        links
    
    The default is to follow symbolic links, as if `-L' were specified.
    
    Exit Status:
    Returns 0 if the directory is changed; non-zero otherwise.

3.7.4 外部命令查看幫助

外部命令可使用--help或者-h選項查看幫助,例如以前使用過的date --help就是典型的例子。

以下命令顯示,使用date --help查看date命令的幫助信息

[root@centOS6 ~]#date --help

須要注意的是否是每一個外部命令都支持--help或者-h選項,以下命令輸出顯示date不支持-h選項

[root@centOS6 ~]#date -h
date: invalid option -- 'h'
Try `date --help' for more information.

3.7.5 man命令的使用

3.7.5.1 man命令概述

在平常運維場景中,一般都是使用man命令(對應的是manual手冊)查看外部命令的幫助手冊,其使用格式爲man 參數選項 命令/文件

在安裝軟件時,系統會將軟件的幫助手冊存放在/usr/share/man路徑下,以下命令輸出顯示能夠查看幫助手冊列表

[root@centos7 man]#ls -al /usr/share/man
total 616
drwxr-xr-x.  48 root root   4096 Jan 10 10:06 .
drwxr-xr-x. 235 root root   8192 Jan 13 01:16 ..
drwxr-xr-x.   3 root root     18 Jan 10 10:05 ca
drwxr-xr-x.   7 root root     66 Jan 10 10:05 cs
drwxr-xr-x.   5 root root     42 Jan 10 10:03 da
drwxr-xr-x.   6 root root     54 Jan 10 10:03 de
drwxr-xr-x.   7 root root     66 Jan 10 10:06 en
drwxr-xr-x.   5 root root     42 Jan 10 10:05 es
drwxr-xr-x.   6 root root     54 Jan 10 10:03 fr
drwxr-xr-x.   5 root root     42 Jan 10 10:03 hu
drwxr-xr-x.   5 root root     42 Jan 10 10:05 id
drwxr-xr-x.   6 root root     54 Jan 10 10:03 it
drwxr-xr-x.   5 root root     42 Jan 10 10:03 ja
drwxr-xr-x.   3 root root     18 Jan 10 10:03 ko
drwxr-xr-x.   2 root root   4096 Jan 10 10:06 man0p
drwxr-xr-x.   2 root root  53248 Jan 13 01:16 man1
drwxr-xr-x.   2 root root   8192 Jan 10 10:06 man1p
drwxr-xr-x.   2 root root      6 Apr 11  2018 man1x
drwxr-xr-x.   2 root root  16384 Jan 10 10:06 man2
drwxr-xr-x.   2 root root      6 Apr 11  2018 man2x
drwxr-xr-x.   2 root root 237568 Jan 10 10:06 man3
drwxr-xr-x.   2 root root  40960 Jan 10 10:06 man3p
drwxr-xr-x.   2 root root      6 Apr 11  2018 man3x
drwxr-xr-x.   2 root root   4096 Jan 10 10:06 man4
drwxr-xr-x.   2 root root      6 Apr 11  2018 man4x
drwxr-xr-x.   2 root root  20480 Jan 10 10:06 man5
drwxr-xr-x.   2 root root      6 Apr 11  2018 man5x
drwxr-xr-x.   2 root root     24 Jan 10 10:06 man6
drwxr-xr-x.   2 root root      6 Apr 11  2018 man6x
drwxr-xr-x.   2 root root   8192 Jan 10 10:06 man7
drwxr-xr-x.   2 root root      6 Apr 11  2018 man7x
drwxr-xr-x.   2 root root  40960 Jan 10 10:06 man8
drwxr-xr-x.   2 root root      6 Apr 11  2018 man8x
drwxr-xr-x.   2 root root      6 Apr 11  2018 man9
drwxr-xr-x.   2 root root      6 Apr 11  2018 man9x
drwxr-xr-x.   2 root root      6 Apr 11  2018 mann
drwxr-xr-x.   5 root root     42 Jan 10 10:05 nl
drwxr-xr-x.  17 root root    173 Jan 10 10:06 overrides
drwxr-xr-x.   6 root root     54 Jan 10 10:05 pl
drwxr-xr-x.   3 root root     18 Jan 10 10:05 pt
drwxr-xr-x.   5 root root     42 Jan 10 10:03 pt_BR
drwxr-xr-x.   6 root root     54 Jan 10 10:03 ru
drwxr-xr-x.   3 root root     18 Jan 10 10:03 sk
drwxr-xr-x.   6 root root     54 Jan 10 10:03 sv
drwxr-xr-x.   5 root root     42 Jan 10 10:03 tr
drwxr-xr-x.   3 root root     18 Jan 10 10:05 uk
drwxr-xr-x.   6 root root     54 Jan 10 10:03 zh_CN
drwxr-xr-x.   4 root root     30 Jan 10 10:03 zh_TW

這裏可使用whereis命令查看命令對應的幫助文件的路徑,以ls爲例,以下命令輸出顯示,即ls命令的幫助文件對應的是/usr/share/man/man1/ls.1.gz,以.gz爲後綴的一般是壓縮文件,可是咱們在查看命令幫助時不須要去解壓該文件

[root@centos7 man]#whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

只須要使用man 1 ls便可,以下命令所示,其中1表示查看第一章節(即用戶命令)
的幫助手冊。

[root@centos7 man]#man 1 ls

幾乎每一個命令都有man的"頁面",以便使用man命令查看幫助手冊,並且不一樣的命令,函數的幫助手冊是按照不一樣的章節存放的,以下列表所示

章節名稱 章節功能
章節1 用戶命令
章節2 系統調用
章節3 C庫調用
章節4 設備文件以及特殊文件
章節5 配置文件格式
章節6 遊戲
章節7 雜項
章節8 管理類命令
章節9 Linux內核API

一般運維人員只須要關注章節1,章節4,章節5和章節8便可,而開發人員須要關注章節2,章節3和章節9。

在使用man命令查看幫助時,須要加上對應的章節,用於區分查看幫助的類型,由於同一個命令可能對應的既是用戶命令,又是配置文件格式,例如passwd

咱們可使用whatis passwd命令查看對應的章節,以下命令輸出顯示

[root@centos7 man]#whatis passwd
passwd (1)           - update user's authentication tokens
sslpasswd (1ssl)     - compute password hashes
passwd (5)           - password file

passwd(1) 表示用戶命令,用於更新用戶的密碼
passwd(5)表示配置文件格式,用於存儲密碼。

所以若是咱們若是要查看passwd命令的幫助,須要使用以下命令

[root@centos7 man]#man 1 passwd

咱們若是要查看passwd配配置文件幫助,須要使用以下命令

[root@centos7 man]#man 5 passwd

3.7.5.2 man幫助段落說明

當咱們在使用man command查看對應命令的幫助時,幫助內容中的標題格式對應的含義以下表格所示

man幫助中的標題 功能說明
NAME 命令說明及介紹
SYNOPSIS 命令的基本用法 []表示可選,<>表示必選內容,a
DESCRIPTION 命令使用詳細描述,以及相關參數選項說明
OPTIONS 命令相關參數選項說明(有的命令幫助沒有此選項)
EXAMPLES 示例
FILES 相關文件
AUTHOR 做者
COPYRIGHT 版本信息
REPORTING BUGS bug信息
SEE ALSO 和命令相關的說明

3.10.5.3 man幫助頁面快捷功能使用

執行man command查看命令的幫助信息時,實際上就是至關於瀏覽一個文件,能夠利用以下列表所示的快捷鍵查閱相關功能。

功能鍵 功能說明
PgDn 向下翻頁(可使用空格代替)
PgUp 向上翻頁
Home 調到第一頁
End 調到最後一頁
/keyword 向下依次查找關鍵字
?keyword 向上依次查找關鍵字
n/N n: 向下查找下一個關鍵字 N:向上查找上一個關鍵字
q 退出man幫助

若是想要了解更多man命令使用的信息,可使用man man來查看,以下命令所示

[root@centos7 man]#man man

使用man查看bash幫助

[root@centos7 man]#man bash

3.8 bash shell的快捷方式

在使用bash shell訪問linux時,它提供了一些快捷鍵,用於實現特定的功能,在工做和學習的過程當中可使用這些快捷鍵提升效率,以下列表所示展現了最經常使用的快捷鍵。

快捷鍵 功能
Ctrl+l 清屏
Ctrl+o 執行當前命令,而且從新顯示當前命令
Ctrl+s 阻止屏幕輸出,鎖定
Ctrl+q 解除屏幕鎖定
Ctrl+c 終止命令,強行退出
Ctrl+z 掛起命令
Ctrl+a 光標移到命令行首
Ctrl+e 光標移動到命令行尾
Ctrl+u 從光標處刪除至命令行首
Ctrl+k 從光標刪除至命令行尾
Alt+r 刪除當前整行

1.使用ctrl+l清除屏幕,以下圖所示
清除屏幕
2.使用ctrl+o執行當前命令而且顯示當前命令,效果以下命令輸出所示

[root@centos7 man]#hostname
centos7.ittimeline.net
[root@centos7 man]#hostname

3.使用ctrl+s阻止屏幕輸出,保持鎖定
當屏幕鎖定以後,再次輸入其餘內容沒有顯示

當屏幕鎖定以後,再次輸入其餘內容沒有顯示
當屏幕鎖定以後,再次輸入其餘內容沒有顯示

4.使用ctrl+q解鎖屏幕
解鎖屏幕以後就能夠看到以前鎖定時輸入的內容
解鎖屏幕以後就能夠看到以前鎖定時輸入的內容

5.使用Alt+r刪除整行內容時須要在SecureCRT中設置以下快捷鍵
Use ALT as meta key

相關文章
相關標籤/搜索