前言
面試說自己平時在 Linux 系統進行開發,瞭解一些 Linux 常用命令,然後就開始問,但是不會問常用的一些簡單命令,都是結合應用場景來進行提問。而且基本上是和程式管理結合的。抽時間進行一個全面的總結
應用場景
主要就是如果你使用 Linux 作業系統,那麼伺服器如果是個很忙碌的系統,你肯定要知道如何定位最耗資源的那個程式,然後能夠將其殺死;此外,如果某個程式產生了一個有問題的程式在記憶體中,你又該如何找出並將其刪除;如果有五六項工作在系統中執行,但其中有一項工作才是最重要的,你怎麼定位並使其優先執行?
- 檢視所有執行中的程式
- 檢視程式消耗資源
- 定位個別程式並且對其執行指定操作
- 改變程式優先順序
- 殺死指定程式
- 限制程式可用的系統資源等
命令介紹
1. ps
指將某個時間點的程式執行情況選取下來
ps -ef |grep ^ 列出需要程式
ps -aux 顯示程式資訊,包括無終端的(x)和針對使用者(u)的程式
-e 顯示所有程式。
-f 全格式。
-a 顯示終端上的所有程式,包括其他使用者的程式。
-r 只顯示正在執行的程式。
-u 以使用者為主的格式來顯示程式狀況。
-h 不顯示標題。
-l 長格式。
-w 寬輸出。
複製程式碼
- ps -l 僅檢視自己的 bash 相關程式
- ps aux
檢視系統所有程式
例項:找出與 cron 與 syslog 這兩個服務相關的 PID 號碼
leader@leader:~$ ps aux | egrep '(cron|syslog)'
複製程式碼
2. pstree
- 用於尋找程式之間的相關性
- 查詢 PID 與所屬使用者,加上 -p 和 -u 兩個引數即可
範例一: 列出目前系統上所有程式樹的相關性
leader@leader:/tmp$ pstree -A
複製程式碼
範例二:同時顯示 PID 和 users
leader@leader:/tmp$ pstree -Aup
複製程式碼
3. top
動態檢視程式的變化
範例一:每兩秒更新依次 top,檢視整體資訊
leader@leader:~$ top -d 2
複製程式碼
範例二:將 top 的資訊進行 2 次,然後將結果寫入到 /tmp/top.txt
leader@leader:~$ top -b -n 2 > /tmp/top.txt
複製程式碼
4. htop
htop 與 top 類似,但是 htop 是互動式的文字模式的程式檢視器。它通過文字圖形化地顯示每一個程式的 CPU 和記憶體使用量、swap 使用量。 使用上下游標鍵選擇程式,F7 和 F8 改變優先順序,F9 殺死程式
5. nice
用於設定和改變程式的優先順序。(提高一個程式的優先順序,核心會分配更多CPU時間片給這個程式。) 預設情況下,程式以 0 的優先順序啟動。程式優先順序可以通過top命令顯示的 NI(nice value)列檢視。
程式優先順序值的範圍從-20到19。值越低,優先順序越高。 (sudo)nice <優先值> <程式名> 通過給定的優先值啟動一個程式
6. renice
renice命令可以改變正在執行的程式優先值,使用者只能改變屬於他們自己的程式的優先值。
renice -n 4 -p 3806 改變指定程式的優先值
//初始優先值為0的3806號程式優先值已經變成了 4 .
sudo renice -3 -u/-g mint 通過指定使用者和組來改變程式優先值
//使用者為 mint 的所有程式優先值變為 -3。
複製程式碼
7. kill
強制殺死程式,使用-9引數。
如果不知道程式PID(程式 ID 號)或者打算用名字殺死程式時候,使用 killall。
kill <pid>
kill -9 <pid>
killall -9    殺死所有擁有同樣名字的程式
如果你使用kill,你需要知道程式ID號。pkill是類似的命令,但使用模式匹配,如程式名,程式擁有者等。
複製程式碼
8.fg,bg
使用‘bg’命令可以將任務放在後臺執行,而用‘fg’可以調到前臺來使用。
我們可以通過‘&’在後臺啟動一個程式:
find .-name *iso >/tmp/res.txt &
正在執行的程式,可以通過“CTRL+Z”和“bg”命令組合放到後臺執行。
可以使用‘jobs’命令列出所有後臺程式。
使用‘fg’命令可以將後臺程式調到前臺執行。
fg %程式id
複製程式碼