Linux 常用的系統工作命令
1、echo 命令
echo命令用於在終端輸出字符串或變量提取後的值,格式為“echo [字符串 | $變量]”。
例如,把指定字符串“Linuxprobe.com”輸出到終端屏幕的命令為:
[root@linuxprobe ~]# echo Linuxprobe.Com
該命令會在終端屏幕上顯示如下信息:
Linuxprobe.Com
下面,我們使用$變量的方式提取變量SHELL的值,並將其輸出到屏幕上:
[root@linuxprobe ~]# echo $SHELL /bin/bash
2、date 命令
date命令用於顯示及設置系統的時間或日期,格式為“date [選項] [+指定的格式]”。
只需在強大的date命令中輸入以“+”號開頭的參數,即可按照指定格式來輸出系統的時間或日期,這樣在日常工作時便可以把備份數據的命令與指定格式輸出的時間信息結合到一起。例如,把打包後的文件自動按照“年-月-日”的格式打包成“backup-2017-9-1.tar.gz”,用戶只需要看一眼文件名稱就能大概了解到每個文件的備份時間了。date命令中常見的參數格式及作用如表1 所示。
表1 date命令中的參數以及作用
參數 |
作用 |
%t |
跳格[Tab鍵] |
%H |
小時(00~23) |
%I |
小時(00~12) |
%M |
分鐘(00~59) |
%S |
秒(00~59) |
%j |
今年中的第幾天 |
按照默認格式查看當前系統時間的date命令如下所示:
[root@linuxprobe ~]# date Sat Aug 4 22:25:46 EDT 2018
按照“年-月-日 小時:分鐘:秒”的格式查看當前系統時間的date命令如下所示:
[root@linuxprobe ~]# date "+%Y-%m-%d %H:%M:%S"
2018-08-04 22:28:50
[root@linuxprobe ~]# date "+%Y-%m-%d %I:%M:%S"
2018-08-04 10:29:11
將系統的當前時間設置為2018年8月5日10點30分的date命令如下所示:
[root@linuxprobe ~]# date -s "20180805 10:30:00" Sun Aug 5 10:30:00 EDT 2018
再次使用date命令並按照默認的格式查看當前的系統時間,如下所示:
[root@linuxprobe ~]# date Sun Aug 5 10:30:09 EDT 2018
date命令中的參數%j可用來查看今天是當年中的第幾天。這個參數能夠很好地區分備份時間的新舊,即數字越大,越靠近當前時間。該參數的使用方式以及顯示結果如下所示。
[root@linuxprobe ~]# date "+%j" 217
3、reboot 命令
reboot命令用於重啟系統,其格式為reboot。
由於重啟計算機這種操作會涉及硬件資源的管理權限,因此默認只能使用root管理員來重啟,其命令如下:
[root@linuxprobe ~]# reboot
4、poweroff 命令
poweroff命令用於關閉系統,其格式為poweroff。
該命令與reboot命令相同,都會涉及硬件資源的管理權限,因此默認只有root管理員才可以關閉電腦,其命令如下:
[root@linuxprobe ~]# poweroff
5、wget 命令
wget命令用於在終端中下載網絡文件,格式為“wget [參數] 下載地址”,表2 所示為wget命令的參數以及參數的作用。
表2 wget命令的參數以及作用
參數 |
作用 |
-b |
後臺下載模式 |
-P |
下載到指定目錄 |
-t |
最大嘗試次數 |
-c |
斷點續傳 |
-p |
下載頁面內所有資源,包括圖片、視頻等 |
-r |
遞歸下載 |
嘗試使用wget命令下載最新的Python3.7文檔,這個文件的完整路徑為https://docs.python.org/3/archives/python-3.7.0-docs-pdf-letter.tar.bz2,執行該命令後的下載效果如下:
[root@linuxprobe ~]# wget https://docs.python.org/3/archives/python-3.7.0-docs-pdf-letter.tar.bz2
--2018-08-05 07:51:25-- https://docs.python.org/3/archives/python-3.7.0-docs-pdf-letter.tar.bz2
Resolving docs.python.org (docs.python.org)... 151.101.72.223, 2a04:4e42:36::223
Connecting to docs.python.org (docs.python.org)|151.101.72.223|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 13984044 (13M) [application/octet-stream]
Saving to: ‘python-3.7.0-docs-pdf-letter.tar.bz2’
100%[======================================>] 13,984,044 864KB/s in 17s
2018-08-05 07:51:43 (804 KB/s) - ‘python-3.7.0-docs-pdf-letter.tar.bz2’ saved [13984044/13984044]
[root@linuxprobe ~]#
接下來,我們使用wget命令遞歸下載https://docs.python.org網站內的所有頁面數據以及文件,下載完後會自動保存到當前路徑下一個名為docs.python.org的目錄中。執行該操作的命令為wget -r -p https://docs.python.org,該命令的執行結果如下。
[root@linuxprobe ~]# wget -r -p https://docs.python.org --2018-08-05 08:00:01-- https://docs.python.org/ Resolving docs.python.org (docs.python.org)... 151.101.72.223, 2a04:4e42:36::223 Connecting to docs.python.org (docs.python.org)|151.101.72.223|:443... connected. HTTP request sent, awaiting response... 302 Moved Temporarily Location: https://docs.python.org/3/ [following] --2018-08-05 08:00:02-- https://docs.python.org/3/ Reusing existing connection to docs.python.org:443. HTTP request sent, awaiting response... 200 OK Length: 9875 (9.6K) [text/html] Saving to: ‘docs.python.org/index.html’ 100%[======================================>] 9,875 --.-K/s in 0.001s 2018-08-05 08:00:02 (17.0 MB/s) - ‘docs.python.org/index.html’ saved [9875/9875] Loading robots.txt; please ignore errors. --2018-08-05 08:00:02-- https://docs.python.org/robots.txt Reusing existing connection to docs.python.org:443. HTTP request sent, awaiting response... 200 OK Length: 129 [text/plain] Saving to: ‘docs.python.org/robots.txt’ 100%[======================================>] 129 --.-K/s in 0s 2018-08-05 08:00:02 (13.0 MB/s) - ‘docs.python.org/robots.txt’ saved [129/129]
....................省略下載過程....................
6、ps 命令
ps 命令用於查看系統中的進程狀態,格式為“ps [參數]”。
估計讀者在第一次執行這個命令時都要驚呆一下—怎麽會有這麽多輸出值,這可怎麽看得過來?其實,我們通常會將ps命令與管道符技術搭配使用,用來抓取與某個指定服務進程相對應的PID號碼。ps命令的常見參數以及作用如表3 所示。
表3 ps命令的參數以及作用
參數 |
作用 |
-a |
顯示所有進程(包括其他用戶的進程) |
-u |
用戶以及其他詳細信息 |
-x |
顯示沒有控制終端的進程 |
Linux系統中時刻運行著許多進程,如果能夠合理地管理它們,則可以優化系統的性能。在Linux系統中,有5種常見的進程狀態,分別為運行、中斷、不可中斷、僵死與停止,其各自含義如下所示。
- R(運行):進程正在運行或在運行隊列中等待。
- S(中斷):進程處於休眠中,當某個條件形成後或者接收到信號時,則脫離該 狀態。
- D(不可中斷):進程不響應系統異步信號,即便用kill命令也不能將其中斷。
- Z(僵死):進程已經終止,但進程描述符依然存在, 直到父進程調用wait4()系統函數後將進程釋放。
- T(停止):進程收到停止信號後停止運行。
當執行ps aux命令後通常會看到如表7 所示的進程狀態,表4 中只是列舉了部分輸出值,而且正常的輸出值中不包括中文註釋。
表 4 進程狀態
USER |
PID |
%CPU |
%MEM |
VSZ |
RSS |
TTY |
STAT |
START |
TIME |
COMMAND |
進程的所有者 |
進程ID號 |
運算器占用率 |
內存占用率 |
虛擬內存使用量(單位是KB) |
占用的固定內存量(單位是KB) |
所在終端 |
進程 狀態 |
被啟動 的時間 |
實際使用 |
命令名稱與參數 |
root |
1 |
0.0 |
0.4 |
53684 |
7628 |
? |
Ss |
07 :22 |
0:02 |
/usr/lib/systemd/systemd |
root |
2 |
0.0 |
0.0 |
0 |
0 |
? |
S |
07:22 |
0:00 |
[kthreadd] |
root |
3 |
0.0 |
0.0 |
0 |
0 |
? |
S |
07:22 |
0:00 |
[ksoftirqd/0] |
root |
5 |
0.0 |
0.0 |
0 |
0 |
? |
S< |
07:22 |
0:00 |
[kworker/0:0H] |
root |
7 |
0.0 |
0.0 |
0 |
0 |
? |
S |
07:22 |
0:00 |
[migration/0] |
………………省略部分輸出信息……………… |
註:如前面所提到的,在Linux系統中的命令參數有長短格式之分,長格式和長格式之間不能合並,長格式和短格式之間也不能合並,但短格式和短格式之間是可以合並的,合並後僅保留一個-(減號)即可。另外ps命令可允許參數不加減號(-),因此可直接寫成ps aux的樣子。
7、top 命令
top命令用於動態地監視進程活動與系統負載等信息,其格式為 top。
top命令相當強大,能夠動態地查看系統運維狀態,完全將它看作Linux中的“強化版的Windows任務管理器”。top命令的運行界面如圖 1 所示:
圖 1 top命令的運行界面
在圖1中,top命令執行結果的前5行為系統整體的統計信息,其所代表的含義如下。
- 第1行:系統時間、運行時間、登錄終端數、系統負載(三個數值分別為1分鐘、5分鐘、15分鐘內的平均值,數值越小意味著負載越低)。
- 第2行:進程總數、運行中的進程數、睡眠中的進程數、停止的進程數、僵死的進程數。
- 第3行:用戶占用資源百分比、系統內核占用資源百分比、改變過優先級的進程資源百分比、空閑的資源百分比等。
- 第4行:物理內存總量、內存使用量、內存空閑量、作為內核緩存的內存量。
- 第5行:虛擬內存總量、虛擬內存使用量、虛擬內存空閑量、已被提前加載的內存量。
註:第3行中的數據均為CPU數據並以百分比格式顯示,例如“54.0 id”意味著有54.0%的CPU處理器資源處於空閑。
8、pidof 命令
pidof命令用於查詢某個指定服務進程的PID值,格式為“pidof [參數] [服務名稱]”。
每個進程的進程號碼值(PID)是唯一的,因此可以通過PID來區分不同的進程。例如,可以使用如下命令來查詢本機上sshd服務程序的PID:
[root@linuxprobe ~]# pidof sshd 1657
9、kill 命令
kill命令用於終止某個指定PID的服務進程,格式為“kill [參數] [進程PID]”。
接下來,我們使用kill命令把上面用pidof命令查詢到的PID所代表的進程終止掉,其命令如下所示。這種操作的效果等同於強制停止sshd服務。
[root@linuxprobe ~]# kill 1657
10、killall 命令
killall命令用於終止某個指定名稱的服務所對應的全部進程,格式為:“killall [參數] [服務名稱]”。
通常來講,復雜軟件的服務程序會有多個進程協同為用戶提供服務,如果逐個去結束這些進程會比較麻煩,此時可以使用killall命令來批量結束某個服務程序帶有的全部進程。下面以httpd服務程序為例,來結束其全部進程。由於RHEL7系統默認沒有安裝httpd服務程序,因此大家此時只需看操作過程和輸出結果即可,等學習了相關內容之後再來實踐。
[root@linuxprobe ~]# pidof httpd
13581 13580 13579 13578 13577 13576
[root@linuxprobe ~]# killall httpd
[root@linuxprobe ~]# pidof httpd
[root@linuxprobe ~]#
註:如果我們在系統終端中執行一個命令後想立即停止它,可以同時按下Ctrl + C組合鍵(生產環境中比較常用的一個快捷鍵),這樣將立即終止該命令的進程。或者,如果有些命令在執行時不斷地在屏幕上輸出信息,影響到後續命令的輸入,則可以在執行命令時在末尾添加上一個&符號,這樣命令將進入系統後臺來執行。
Linux 常用的系統工作命令