2.3 常用系統(tǒng)工作命令

2023-05-11 14:08 更新

您現(xiàn)在閱讀的這本書(shū)是劉遄老師在經(jīng)歷了十多年的運(yùn)維學(xué)習(xí)以及數(shù)十期的培訓(xùn)授課后總結(jié)而成的,您可能無(wú)法在本節(jié)中找到某些之前見(jiàn)過(guò)的命令。但不用擔(dān)心,之所以這樣安排,原因是劉遄老師努力地將Linux命令與實(shí)戰(zhàn)相結(jié)合,真正讓讀者在實(shí)操中理解技術(shù),而不是單純地把命令堆砌到書(shū)中讓讀者去硬背。

劉遄老師用了近一年的時(shí)間把最常用的Linux命令進(jìn)行匯總、歸納、整理、分類(lèi)后,把這些常用的命令合理安排到了后續(xù)章節(jié)中,然后采用以練代學(xué)的方式來(lái)加深讀者的理解和掌握。從數(shù)年的培訓(xùn)成果反饋來(lái)看,這種方式相當(dāng)有效,因此也相信這種方式肯定適合您的學(xué)習(xí)。

1.echo命令

echo命令用于在終端輸出字符串或變量提取后的值,格式為“echo [字符串 | $變量]”。

例如,把指定字符串“Linuxprobe.com”輸出到終端屏幕的命令為:

[root@linuxprobe ~]# echo Linuxprobe.Com

該命令會(huì)在終端屏幕上顯示如下信息:

Linuxprobe.Com

下面,我們使用$變量的方式提取變量SHELL的值,并將其輸出到屏幕上:

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

2.date命令

date命令用于顯示及設(shè)置系統(tǒng)的時(shí)間或日期,格式為“date [選項(xiàng)] [+指定的格式]”。

只需在強(qiáng)大的date命令中輸入以“+”號(hào)開(kāi)頭的參數(shù),即可按照指定格式來(lái)輸出系統(tǒng)的時(shí)間或日期,這樣在日常工作時(shí)便可以把備份數(shù)據(jù)的命令與指定格式輸出的時(shí)間信息結(jié)合到一起。例如,把打包后的文件自動(dòng)按照“年-月-日”的格式打包成“backup-2017-9-1.tar.gz”,用戶(hù)只需要看一眼文件名稱(chēng)就能大概了解到每個(gè)文件的備份時(shí)間了。date命令中常見(jiàn)的參數(shù)格式及作用如表2-4所示。

表2-4 ate命令中的參數(shù)以及作用

參數(shù) 作用
%S 秒(00~59)
%M 分鐘(00~59)
%H 小時(shí)(00~23)
%I 小時(shí)(00~12)
%m 月份(1~12)
%p 顯示出AM或PM
%a 縮寫(xiě)的工作日名稱(chēng)(例如:Sun)
%A 完整的工作日名稱(chēng)(例如:Sunday)
%b 縮寫(xiě)的月份名稱(chēng)(例如:Jan)
%B 完整的月份名稱(chēng)(例如:January)
%q 季度(1~4)
%y 簡(jiǎn)寫(xiě)年份(例如:20)
%Y 完整年份(例如:2020)
%d 本月中的第幾天
%j 今年中的第幾天
%n 換行符(相當(dāng)于按下回車(chē)鍵)
%t 跳格(相當(dāng)于按下Tab鍵)

按照默認(rèn)格式查看當(dāng)前系統(tǒng)時(shí)間的date命令如下所示:

[root@linuxprobe ~]# date
Mon Aug 24 16:11:23 CST 2017

按照“年-月-日 小時(shí):分鐘:秒”的格式查看當(dāng)前系統(tǒng)時(shí)間的date命令如下所示:

[root@linuxprobe ~]# date "+%Y-%m-%d %H:%M:%S"
2017-08-24 16:29:12

將系統(tǒng)的當(dāng)前時(shí)間設(shè)置為2017年9月1日8點(diǎn)30分的date命令如下所示:

[root@linuxprobe ~]# date -s "20170901 8:30:00"
Fri Sep 1 08:30:00 CST 2017

再次使用date命令并按照默認(rèn)的格式查看當(dāng)前的系統(tǒng)時(shí)間,如下所示:

[root@linuxprobe ~]# date
Fri Sep 1 08:30:01 CST 2017

date命令中的參數(shù)%j可用來(lái)查看今天是當(dāng)年中的第幾天。這個(gè)參數(shù)能夠很好地區(qū)分備份時(shí)間的新舊,即數(shù)字越大,越靠近當(dāng)前時(shí)間。該參數(shù)的使用方式以及顯示結(jié)果如下所示。

[root@linuxprobe ~]# date "+%j"
244

3.reboot命令

reboot命令用于重啟系統(tǒng),其格式為reboot。

由于重啟計(jì)算機(jī)這種操作會(huì)涉及硬件資源的管理權(quán)限,因此默認(rèn)只能使用root管理員來(lái)重啟,其命令如下:

[root@linuxprobe ~]# reboot

4.poweroff命令

poweroff命令用于關(guān)閉系統(tǒng),其格式為poweroff。

該命令與reboot命令相同,都會(huì)涉及硬件資源的管理權(quán)限,因此默認(rèn)只有root管理員才可以關(guān)閉電腦,其命令如下:

[root@linuxprobe ~]# poweroff

5.wget命令

wget命令用于在終端中下載網(wǎng)絡(luò)文件,格式為“wget [參數(shù)] 下載地址”。

如果您沒(méi)有Linux系統(tǒng)的管理經(jīng)驗(yàn),當(dāng)前只需了解一下wget命令的參數(shù)以及作用,然后看一下下面的演示實(shí)驗(yàn)即可,切記不要急于求成。后面章節(jié)將逐步講解Linux系統(tǒng)的配置管理方法,可以等您掌握了網(wǎng)卡的配置方法后再來(lái)進(jìn)行這個(gè)實(shí)驗(yàn)操作。表2-5所示為wget命令的參數(shù)以及參數(shù)的作用。

表2-5 wget命令的參數(shù)以及作用

參數(shù) 作用
-b 后臺(tái)下載模式
-P 下載到指定目錄
-t 最大嘗試次數(shù)
-c 斷點(diǎn)續(xù)傳
-p 下載頁(yè)面內(nèi)所有資源,包括圖片、視頻等
-r 遞歸下載

嘗試使用wget命令從本書(shū)的配套站點(diǎn)中下載本書(shū)的最新pdf格式電子文檔,這個(gè)文件的完整路徑為https://www.linuxprobe.com/docs/LinuxProbe.pdf,執(zhí)行該命令后的下載效果如下:

[root@linuxprobe ~]# wget https://www.linuxprobe.com/docs/LinuxProbe.pdf
--2017-08-24 19:30:12 -- https://www.linuxprobe.com/docs/LinuxProbe.pdf
Resolving www.linuxprobe.com (www.linuxprobe.com)... 220.181.105.185
Connecting to www.linuxprobe.com (www.linuxprobe.com)|220.181.105.185|:80...connected.
HTTP request sent, awaiting response... 200 OK
Length: 45948568 (44M) [application/pdf]
Saving to: ‘LinuxProbe.pdf’
100%[===========================================>] 45,948,568 32.9MB/s in 1.3s
2017-08-24 19:30:14 (32.9 MB/s) - ‘LinuxProbe.pdf’ saved [45948568/45948568]

接下來(lái),我們使用wget命令遞歸下載www.linuxprobe.com網(wǎng)站內(nèi)的所有頁(yè)面數(shù)據(jù)以及文件,下載完后會(huì)自動(dòng)保存到當(dāng)前路徑下一個(gè)名為www.linuxprobe.com的目錄中。執(zhí)行該操作的命令為wget -r -p https://www.linuxprobe.com ,該命令的執(zhí)行結(jié)果如下。

[root@linuxprobe ~]# wget -r -p https://www.linuxprobe.com
--2017-08-24 19:31:41-- https://www.linuxprobe.com/
Resolving www.linuxprobe.com... 106.185.25.197
Connecting to www.linuxprobe.com|106.185.25.197|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: 'www.linuxprobe.com/index.html'
………………省略下載過(guò)程………………

6.ps命令

ps命令用于查看系統(tǒng)中的進(jìn)程狀態(tài),格式為“ps [參數(shù)]”。

估計(jì)讀者在第一次執(zhí)行這個(gè)命令時(shí)都要驚呆一下—怎么會(huì)有這么多輸出值,這可怎么看得過(guò)來(lái)?其實(shí),劉遄老師通常會(huì)將ps命令與第3章的管道符技術(shù)搭配使用,用來(lái)抓取與某個(gè)指定服務(wù)進(jìn)程相對(duì)應(yīng)的PID號(hào)碼。ps命令的常見(jiàn)參數(shù)以及作用如表2-6所示。

表2-6 ps命令的參數(shù)以及作用

參數(shù) 作用
-a 顯示所有進(jìn)程(包括其他用戶(hù)的進(jìn)程)
-u 用戶(hù)以及其他詳細(xì)信息
-x 顯示沒(méi)有控制終端的進(jìn)程

Linux系統(tǒng)中時(shí)刻運(yùn)行著許多進(jìn)程,如果能夠合理地管理它們,則可以?xún)?yōu)化系統(tǒng)的性能。在Linux系統(tǒng)中,有5種常見(jiàn)的進(jìn)程狀態(tài),分別為運(yùn)行、中斷、不可中斷、僵死與停止,其各自含義如下所示。

R(運(yùn)行):進(jìn)程正在運(yùn)行或在運(yùn)行隊(duì)列中等待。

S(中斷):進(jìn)程處于休眠中,當(dāng)某個(gè)條件形成后或者接收到信號(hào)時(shí),則脫離該 狀態(tài)。

D(不可中斷):進(jìn)程不響應(yīng)系統(tǒng)異步信號(hào),即便用kill命令也不能將其中斷。

Z(僵死):進(jìn)程已經(jīng)終止,但進(jìn)程描述符依然存在, 直到父進(jìn)程調(diào)用wait4()系統(tǒng)函數(shù)后將進(jìn)程釋放。

T(停止):進(jìn)程收到停止信號(hào)后停止運(yùn)行。

當(dāng)執(zhí)行ps aux命令后通常會(huì)看到如表2-7所示的進(jìn)程狀態(tài),表2-7中只是列舉了部分輸出值,而且正常的輸出值中不包括中文注釋。

表2-7 進(jìn)程狀態(tài)

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
進(jìn)程的所有者 進(jìn)程ID號(hào) 運(yùn)算器占用率 內(nèi)存占用率 虛擬內(nèi)存使用量(單位是KB) 占用的固定內(nèi)存量(單位是KB) 所在終端 進(jìn)程狀態(tài) 被啟動(dòng)的時(shí)間 實(shí)際使用CPU的時(shí)間 命令名稱(chēng)與參數(shù)
root 1 0.0 0.5 244740 10636 ? Ss 07:54 0:02 /usr/lib/systemd/ systemd --switched-root --system --deserialize 18
root 2 0.0 0.0 0 0 ? S 07:54 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? I< 07:54 0:00 [rcu_gp]
root 4 0.0 0.0 0 0 ? I< 07:54 0:00 [rcu_par_gp]
root 5 0.0 0.0 0 0 ? I< 07:54 0:00 [kworker/0:0H-kbl
root 6 0.0 0.0 0 0 ? I< 07:54 0:00 [mm_percpu_wq]
root 7 0.0 0.0 0 0 ? S 07:54 0:00 [ksoftirqd/0]
root 8 0.0 0.0 0 0 ? I 07:54 0:00 [rcu_sched]
root 9 0.0 0.0 0 0 ? S 07:54 0:00 [migration/0]

……………… 省略部分輸出信息 ………………

如前面所提到的,在Linux系統(tǒng)中的命令參數(shù)有長(zhǎng)短格式之分,長(zhǎng)格式和長(zhǎng)格式之間不能合并,長(zhǎng)格式和短格式之間也不能合并,但短格式和短格式之間是可以合并的,合并后僅保留一個(gè)-(減號(hào))即可。另外ps命令可允許參數(shù)不加減號(hào)(-),因此可直接寫(xiě)成ps aux的樣子。

7.top命令

top命令用于動(dòng)態(tài)地監(jiān)視進(jìn)程活動(dòng)與系統(tǒng)負(fù)載等信息,其格式為top。

top命令相當(dāng)強(qiáng)大,能夠動(dòng)態(tài)地查看系統(tǒng)運(yùn)維狀態(tài),完全將它看作Linux中的“強(qiáng)化版的Windows任務(wù)管理器”。top命令的運(yùn)行界面如圖2-6所示。

圖2-6 top命令的運(yùn)行界面

在圖2-6中,top命令執(zhí)行結(jié)果的前5行為系統(tǒng)整體的統(tǒng)計(jì)信息,其所代表的含義如下。

第1行:系統(tǒng)時(shí)間、運(yùn)行時(shí)間、登錄終端數(shù)、系統(tǒng)負(fù)載(三個(gè)數(shù)值分別為1分鐘、5分鐘、15分鐘內(nèi)的平均值,數(shù)值越小意味著負(fù)載越低)。

第2行:進(jìn)程總數(shù)、運(yùn)行中的進(jìn)程數(shù)、睡眠中的進(jìn)程數(shù)、停止的進(jìn)程數(shù)、僵死的進(jìn)程數(shù)。

第3行:用戶(hù)占用資源百分比、系統(tǒng)內(nèi)核占用資源百分比、改變過(guò)優(yōu)先級(jí)的進(jìn)程資源百分比、空閑的資源百分比等。其中數(shù)據(jù)均為CPU數(shù)據(jù)并以百分比格式顯示,例如“97.1 id”意味著有97.1%的CPU處理器資源處于空閑。

第4行:物理內(nèi)存總量、內(nèi)存使用量、內(nèi)存空閑量、作為內(nèi)核緩存的內(nèi)存量。

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

8.pidof命令

pidof命令用于查詢(xún)某個(gè)指定服務(wù)進(jìn)程的PID值,格式為“pidof [參數(shù)] [服務(wù)名稱(chēng)]”。

每個(gè)進(jìn)程的進(jìn)程號(hào)碼值(PID)是唯一的,因此可以通過(guò)PID來(lái)區(qū)分不同的進(jìn)程。例如,可以使用如下命令來(lái)查詢(xún)本機(jī)上sshd服務(wù)程序的PID:

[root@linuxprobe ~]# pidof sshd
2156

9.kill命令

kill命令用于終止某個(gè)指定PID的服務(wù)進(jìn)程,格式為“kill [參數(shù)] [進(jìn)程PID]”。

接下來(lái),我們使用kill命令把上面用pidof命令查詢(xún)到的PID所代表的進(jìn)程終止掉,其命令如下所示。這種操作的效果等同于強(qiáng)制停止sshd服務(wù)。

[root@linuxprobe ~]# kill 2156

10.killall命令

killall命令用于終止某個(gè)指定名稱(chēng)的服務(wù)所對(duì)應(yīng)的全部進(jìn)程,格式為:“killall [參數(shù)] [服務(wù)名稱(chēng)]”。

通常來(lái)講,復(fù)雜軟件的服務(wù)程序會(huì)有多個(gè)進(jìn)程協(xié)同為用戶(hù)提供服務(wù),如果逐個(gè)去結(jié)束這些進(jìn)程會(huì)比較麻煩,此時(shí)可以使用killall命令來(lái)批量結(jié)束某個(gè)服務(wù)程序帶有的全部進(jìn)程。下面以httpd服務(wù)程序?yàn)槔?,?lái)結(jié)束其全部進(jìn)程。由于RHEL7系統(tǒng)默認(rèn)沒(méi)有安裝httpd服務(wù)程序,因此大家此時(shí)只需看操作過(guò)程和輸出結(jié)果即可,等學(xué)習(xí)了相關(guān)內(nèi)容之后再來(lái)實(shí)踐。

[root@linuxprobe ~]# pidof httpd
13581 13580 13579 13578 13577 13576
[root@linuxprobe ~]# killall httpd
[root@linuxprobe ~]# pidof httpd
[root@linuxprobe ~]# 

如果我們?cè)谙到y(tǒng)終端中執(zhí)行一個(gè)命令后想立即停止它,可以同時(shí)按下Ctrl + C組合鍵(生產(chǎn)環(huán)境中比較常用的一個(gè)快捷鍵),這樣將立即終止該命令的進(jìn)程。或者,如果有些命令在執(zhí)行時(shí)不斷地在屏幕上輸出信息,影響到后續(xù)命令的輸入,則可以在執(zhí)行命令時(shí)在末尾添加上一個(gè)&符號(hào),這樣命令將進(jìn)入系統(tǒng)后臺(tái)來(lái)執(zhí)行。

很多同學(xué)在報(bào)名劉遄老師培訓(xùn)課程時(shí)會(huì)提到自己的英語(yǔ)基礎(chǔ)不好,其實(shí)大可不必?fù)?dān)心,因?yàn)樵蹅兊臅?shū)籍、培訓(xùn)課程甚至紅帽考題都是中文的。而接下來(lái)您也就會(huì)發(fā)現(xiàn),原來(lái)一直使用的是Linux命令,而絕不是純粹的英語(yǔ)單詞,即便它們的拼寫(xiě)100%相同,最終用處肯定也是不一樣的。因此在學(xué)習(xí)Linux系統(tǒng)技術(shù)的這件事上,您跟英語(yǔ)達(dá)人絕對(duì)都是站在同一起跑線(xiàn)上的,更何況還正確的選擇了一本適合您的Linux教材,放心開(kāi)始學(xué)習(xí)吧!

劉遄老師主講的Linux技術(shù)培訓(xùn)課程介紹:https://www.linuxprobe.com/training

以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)