linux之程序管理
執行中的程式稱作程序。當程式可以執行檔案存放在儲存中,並且執行的時候,每個程序會被動態得分配系統資源、記憶體、安全屬性和與之相關的狀態。可以有多個程序關聯到同一個程式,並同時執行不會互相干擾。作業系統會有效地管理和追蹤所有執行著的程序。
程序管理
程序 process
某應用程式開啟的程序
PID Process ID
型別:
使用者空間程序
核心空間程序
使用者空間程序:通過執行使用者程式、應用程式或核心之外的系統程式而產生的程序,此類程序可以在使用者的控制下執行或關閉。
核心空間程序:可以執行記憶體資源分配和程序切換等管理工作;而且,該程序的執行不受使用者的干預,即使是root使用者也不能干預系統程序的執行
靜態檢視程序狀態
# ps
[root@wei csdn]# ps >>>>檢視本終端的程序
PID TTY TIME CMD
1806 pts/1 00:00:00 bash
2805 pts/1 00:00:00 ps
選項的使用方式:
BSD風格:選項沒有橫線- ps aux
SysV風格:選項需要帶有橫線- ps -elf
BSD風格:
a :顯示與終端相關的程序
u : 顯示啟動程序的使用者
x :顯示與終端無關的程式
# ps a
# ps u
# ps x
[root@wei csdn]# ps u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1343 0.0 0.2 115436 2032 pts/0 Ss+ 19:59 0:00 -bash
root 1674 0.0 0.2 115432 2032 tty1 Ss+ 20:01 0:00 -bash
USER | 執行程序的使用者 |
%CPU | 程序所佔歐諾個的CPU百分比 |
%MEM | 程序所佔用的MEM百分比 |
VSZ | 虛擬記憶體集,程序獨有的記憶體+共享存在 |
PSS | 程序獨有的記憶體 |
STAT 程序的狀態
D: 不可中斷的睡眠(等待磁碟IO完成)
S:可中斷的睡眠(不需要等待磁碟IO完成)
R:執行或就緒
T: 停止
Z:僵死 Zombie
< :高優先順序程序
會被CPU優先執行
會獲取更多的CPU執行時間
N:低優先順序程序
+:前臺程序組中的程序
l:多執行緒程序(Thread)
s:會話程序首程序,某一個連線的父程序
[root@wei csdn]# ps aux |less
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.1 0.6 127940 6580 ? Ss 19:58 0:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S 19:58 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 19:58 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 19:58 0:00 [kworker/0:0H]
帶有方括號為系統程序(Linux核心啟動)
無方括號的(使用者程序)
SysV風格選項:
-e 顯示所有程序
-l 詳細資訊
-f 以長格式顯示(更多欄位類容)
[root@wei csdn]# ps -elf | less
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 S root 1 0 0 80 0 - 31985 ep_pol 19:58 ? 00:00:04 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
1 S root 2 0 0 80 0 - 0 kthrea 19:58 ? 00:00:00 [kthreadd]
1 S root 3 2 0 80 0 - 0 smpboo 19:58 ? 00:00:01 [ksoftirqd/0]
程序優先順序:
0---139
資料越小,越先級越高
高優先順序程序:
會獲取CPU更多的執行時間
會被CPU優先執行
nice值:
新優先順序=舊優先順序——nice值
-20----19
普通使用者僅能夠調大nice值,既降低程序優先順序
root使用者可以隨意調整nice值
顯示程序樹
[root@wei csdn]# yum install psmisc # 安裝顯示pstree的命令包
[root@wei csdn]# pstree
systemd─┬─NetworkManager───2*[{NetworkManager}]
├─VGAuthService
├─auditd───{auditd}
├─crond
├─dbus-daemon───{dbus-daemon}
├─login───bash
├─lvmetad
├─master─┬─pickup
│ └─qmgr
├─mysqld_safe───mysqld───21*[{mysqld}]
├─polkitd───5*[{polkitd}]
├─rsyslogd───2*[{rsyslogd}]
├─sshd─┬─2*[sshd───bash]
│ └─sshd───bash───pstree
├─systemd-journal
├─systemd-logind
├─systemd-udevd
├─tuned───4*[{tuned}]
└─vmtoolsd───{vmtoolsd}
[root@wei csdn]# ps aux | grep vim
root 2917 0.2 0.5 151600 5136 pts/2 S+ 21:39 0:00 vim list
root 2925 0.0 0.0 112720 984 pts/1 R+ 21:43 0:00 grep --color=auto vim
[root@wei csdn]# pidof vim
2917
[root@wei csdn]# pidof bash
1828 1806 1674 1343