1. 程式人生 > 實用技巧 >linux之程序管理

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