linux進程(一)

回顧:
CentOS6的啓動過程
開機自檢->找硬盤->操做系統->內核->進程->登陸html

Systemd借鑑了不少launchd的思想,他的重要特性以下:
1.同SysVinit和系統初始化腳本兼容。
    CentOS5 init
    CentOS6 upstart
    CentOS7 systemd
2.更快的啓動速度
3.經過按需啓動能力
4.更優的進程跟蹤特性和管理進程的生命週期
5.內建自動掛載服務
6.實現事務性依賴關係管理
7.可以對系統進行快照和恢復
8.自帶journeald日誌服務
    centos5/6 sysloglinux

什麼是進程web

進程是已啓動的可執行程序的運行實例,進程有如下部分組成
        分配內存,已分配內存的地址空間
        安全屬性,進程的運行身份和權限
        進程代碼,運行一個或多個線程
        進程狀態,進程運行後的多種狀態apache

靜態程序,二進制文件,靜態/usr/bin/ls,/usr/bin/sshd
動態進程,程序運行的過程,有生命週期及運行狀態centos

進程的運行狀態,包括如下部分
局部和全局變量
當前的調度上下文
分配給進程使用的系統資源,例如文件描述符、網絡端口等
給進程分配對應的PID,PPID安全

進程生命週期bash

程序運行時進程的狀態關係
父進程複製本身的地址空間建立新的子進程,子進程能夠繼承父進程(PPID)的環境變量。
每一個進程都有本身的惟一ID(PID)
進程是由systemd這個父進程派生出來的子進程
子進程在運行本身的程序代碼的時候,父進程每每會進入到睡眠狀態
子進程完成程序代碼發出退出信號請求
子進程已經關閉或丟棄其資源環境,剩餘的部分稱之爲僵停(殭屍Zombie)
父進程在子進程退出時收到信號會被喚醒,清理剩餘的結構,而後繼續執行其本身的程序代碼網絡

 

監控和管理進程併發

在多任務處理操做系統中,每一個CPU(或核心)在一個時間點上只能處理一個進程
在進程運行時,它對CPU時間和資源分配的要求會不斷變化,從而爲進程分配一個狀態,它隨着環境要求而改變。less

靜態監控進程

 

靜態查看進程退出使用ps命令

 

瞭解進程以下選項:

PID,PPID

當前的進程狀態

內存的分配狀況

CPU和已花費的時間

用戶UID決定進程的特權

 

[root@localhost ~]# ps aux|less

USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

root          1  0.0  0.0 125336  3800 ?        Ss   10:39   0:01 /usr/lib/systemd/systemd --switched-root --system

 

USER: //運行進程的用戶

PID: //進程ID

%CPU: //CPU 佔用率

%MEM:  //內存佔用率

VSZ: //佔用虛擬內存

RSS:  //佔用實際內存 駐留內存

TTY: //進程運行的終端

STAT: //進程狀態 man ps (/STATE)

    R //進程運行

    S //可中斷睡眠

    D //不可中斷睡眠

    Z //殭屍進程

    X //進程已經退出

    T //進程被暫停

    Ss s //進程的領導者,父進程

    S< < //優先級較高的進程

    SN N //優先級較低的進程

    R+ + //表示是前臺的進程組

    Sl //以線程的方式運行

START: //進程的啓動時間

TIME: //進程佔用CPU的總時間

COMMAND: //進程文件,文件名

ps -ef

 

//對進程的cpu進行排序展現

[root@localhost ~]# ps aux --sort %cpu | less

[root@localhost ~]# ps aux --sort -%cpu | less

 

//顯示進程的子進程

[root@localhost ~]# yum install -y httpd

[root@localhost ~]# systemctl start httpd

[root@localhost ~]# ps auxf | grep httpd

root       1990  0.0  0.0 112728   972 pts/0    S+   20:02   0:00          \_ grep --color=auto httpd

root       1963  0.0  0.1 224064  5004 ?        Ss   19:50   0:00 /usr/sbin/httpd -DFOREGROUND

apache     1964  0.0  0.0 224064  2940 ?        S    19:50   0:00  \_ /usr/sbin/httpd -DFOREGROUND

apache     1965  0.0  0.0 224064  2940 ?        S    19:50   0:00  \_ /usr/sbin/httpd -DFOREGROUND

apache     1966  0.0  0.0 224064  2940 ?        S    19:50   0:00  \_ /usr/sbin/httpd -DFOREGROUND

apache     1967  0.0  0.0 224064  2940 ?        S    19:50   0:00  \_ /usr/sbin/httpd -DFOREGROUND

apache     1968  0.0  0.0 224064  2940 ?        S    19:50   0:00  \_ /usr/sbin/httpd -DFOREGROUND

 

//自定義顯示字段

[root@localhost ~]# ps axo user,pid,ppid,%mem,command | grep httpd

root       1963      1  0.1 /usr/sbin/httpd -DFOREGROUND

apache     1964   1963  0.0 /usr/sbin/httpd -DFOREGROUND

apache     1965   1963  0.0 /usr/sbin/httpd -DFOREGROUND

apache     1966   1963  0.0 /usr/sbin/httpd -DFOREGROUND

apache     1967   1963  0.0 /usr/sbin/httpd -DFOREGROUND

apache     1968   1963  0.0 /usr/sbin/httpd -DFOREGROUND

root       1992   1884  0.0 grep --color=auto httpd

 

//查看指定進程PID

[root@localhost ~]# ps aux | grep sshd

root       1123  0.0  0.1 112920  4360 ?        Ss   10:40   0:00 /usr/sbin/sshd -D

root       1882  0.0  0.1 161528  6084 ?        Ss   19:34   0:00 sshd: root@pts/0

root       1997  0.0  0.0 112728   968 pts/0    R+   20:18   0:00 grep --color=auto sshd

[root@localhost ~]# cat /run/sshd.pid 

1123

[root@localhost ~]# ps aux |grep ssh|awk 'NR==1{print $2}'

1123

 

//pgrep經常使用參數,-l,-a

[root@localhost ~]# pgrep sshd

1123

1882

[root@localhost ~]# pidof sshd

1882 1123

 

//查看進程樹

[root@localhost ~]# pstree

systemd─┬─NetworkManager───2*[{NetworkManager}]

        ├─agetty

        ├─auditd───{auditd}

        ├─crond

        ├─dbus-daemon

        ├─firewalld───{firewalld}

        ├─httpd───5*[httpd]

        ├─lvmetad

        ├─master─┬─pickup

        │        └─qmgr

        ├─polkitd───6*[{polkitd}]

        ├─rsyslogd───2*[{rsyslogd}]

        ├─sshd───sshd───bash───pstree

        ├─systemd-journal

        ├─systemd-logind

        ├─systemd-udevd

        └─tuned───4*[{tuned}]

動態監控進程

[root@localhost ~]# top

[root@localhost ~]# top -d 1

[root@localhost ~]# top -d 1 -p 31 查看指定進程的動態信息

[root@localhost ~]# top -d 1 -p 1372,1

[root@localhost ~]# top -d 1 -u apache

[root@localhost ~]# top -d 1 -b -n 2 > top.txt

 

top常見指令

h 查看幫助

z 以彩色信息展現

l 顯示全部cpu的負載

s 設置刷新時間

b 高亮顯示處於R狀態的進程

M 按內存使用百分比排序輸出

P 按cpu使用百分比排序輸出

R 對排序進行反轉

f 自定義顯示字段

k kill掉指定PID進程

w 保存top環境設置 ~/.toprc

q 退出

 

案例:web壓力測試

ab -c 10 -n 1000 https://www.baidu.com/index.html

 

-c 10表示併發用戶數爲10

-n 1000表示請求總數爲1000

https://www.baidu.com/index.html  表示請求的目標url

請求10次,1000個併發

 

linux有兩個特殊的設備文件

/dev/zero 無窮大的文件

/dev/null 黑洞文件

 

系統負載的計算和意義

進程以及子進程和線程產生的計算指令都會讓cpu執行,產生請求的這些進程組成「運行隊列」,等待cpu執行,這個隊列就是系統負載,系統負載是全部cpu

的運行隊列的總和

[root@localhost ~]# w

 13:16:13 up 21 min,  2 users,  load average: 0.00, 0.01, 0.05

 

//假設當前計算機有4個核心的cpu,當前的負載是2.94

cpu1   cpu2  cpu3  cpu4

2.94/4(個cpu核心)=73%的cpu資源被使用,剩下的27%的cpu計算資源是空閒的

 

//假設當前計算機有2個核心的cpu,當前的負載是2.92

2.92/2=146% 已經驗證超過了cpu的處理能力

 

top的進程優先級

    nice

   priority

       值越小,越優先

           0   FIFO 先進先出 first input first output

           -20 RR LL 低延遲隊列 

           20

作優先級爲了區分服務  

 

企業流量優先級

音頻

視頻

 

總結:

進程查看命令:

靜態:

ps pstree pgrep pidof

動態:

top

zabbix

相關文章
相關標籤/搜索