Linux 程式管理常用命令總結

南望山下磚瓦工發表於2019-03-28

前言

面試說自己平時在 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  &ensp;&ensp; 殺死所有擁有同樣名字的程式
如果你使用kill,你需要知道程式ID號。pkill是類似的命令,但使用模式匹配,如程式名,程式擁有者等。
複製程式碼

8.fg,bg

使用‘bg’命令可以將任務放在後臺執行,而用‘fg’可以調到前臺來使用。

我們可以通過‘&’在後臺啟動一個程式: 
    find .-name *iso >/tmp/res.txt & 
正在執行的程式,可以通過“CTRL+Z”和“bg”命令組合放到後臺執行。

可以使用‘jobs’命令列出所有後臺程式。 
使用‘fg’命令可以將後臺程式調到前臺執行。 
   fg  %程式id
複製程式碼

相關文章