Linux系统进程管理

ps组合命令 ps -aux 

在linux中可以使用ps命令查看进程配合grep命令可以快速的查找到服务的进程

常见的组合有ps -ef 、ps -aux

常见参数为:

a: 显示跟当前终端关联的所有进程

u: 基于用户的格式显示(U: 显示某用户ID所有的进程)

x: 显示所有进程,不以终端机来区分

[root@desktop-dcct8ee ~]# ps -aux

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

root          1  0.0  0.1 190984  3920 ?        Ss  9月11  0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22

root          2  0.0  0.0      0    0 ?        S    9月11  0:00 [kthreadd]

roo   521  0.0  0.0 190328  1344 ?        Ss  9月11  0:00 /usr/sbin/lvmetad -f

root        524  0.0  0.1  45648  3204 ?        Ss  9月11  0:00 /usr/lib/systemd/systemd-udevd

注:最后一列[xxxx] 使用方括号括起来的进程是内核态的进程。 没有括起来的是用户态进程。

上面的参数输出每列含意:

USER: 启动这些进程的用户

PID: 进程的ID

%CPU 进程占用的CPU百分比; %MEM 占用内存的百分比; 

VSZ:进程占用的虚拟内存大小(单位:KB) RSS:进程占用的物理内存大小(单位:KB) 

STAT:该程序目前的状态,Linux进程有5种基本状态:

R :该程序目前正在运作,或者是可被运作;

S :该程序目前正在睡眠当中 (可说是 idle 状态啦!),但可被某些讯号(signal) 唤醒。

T :该程序目前正在侦测或者是停止了;

Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态

D  不可中断状态.  

5个基本状态后,还可以加一些字母,比如:Ss、R+,如下:

它们含意如下::

    <: 表示进程运行在高优先级上

    N: 表示进程运行在低优先级上

    L: 表示进程有页面锁定在内存中

    s: 表示进程是控制进程

    l: 表示进程是多线程的

    +: 表示当前进程运行在前台

START:该 process 被触发启动的时间;

TIME :该 process 实际使用 CPU 运作的时间。

COMMAND:该程序的实际指令

ps组合命令 ps -ef

ps常用的参数: ps -ef

  -e  显示所有进程

  -f  显示完整格式输出

[root@desktop-dcct8ee ~]# ps -ef |more

UID        PID  PPID  C STIME TTY          TIME CMD

root          1      0  0 9月11 ?      00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22

root          2      0  0 9月11 ?      00:00:00 [kthreadd]

root          3      2  0 9月11 ?      00:00:00 [ksoftirqd/0]

root          5      2  0 9月11 ?      00:00:00 [kworker/0:0H]

root          7      2  0 9月11 ?      00:00:00 [migration/0]

root          8      2  0 9月11 ?      00:00:00 [rcu_bh]

包含的信息如下

UID: 启动这些进程的用户

PID: 进程的ID

PPID: 父进程的进程号

C: 进程生命周期中的CPU利用率

STIME: 进程启动时的系统时间

TTY: 表明进程在哪个终端设备上运行。如果显示  ?表示与终端无关,这种进程一般是内核态进程。另外,tty1-tty6 是本机上面的登入者程序,若为 pts/0 等,则表示运行在虚拟终端上的进程。

TIME: 运行进程一共累计占用的CPU时间

CMD: 启动的程序名称

例1:测试CPU使用时间。

dd if=/dev/zero of=/a.txt count=10 bs=100M

[root@localhost ~]# ps -axu | grep dd

注:

ps aux 是用BSD的格式来显示进程。

ps -ef 是用标准的格式显示进程

uptime查看系统负载

[root@desktop-dcct8ee ~]# uptime

00:45:16 up  4:55,  2 users,  load average: 0.00, 0.01, 0.05

弹出消息含意如下:

00:45:16 当前时间

up  4:55 系统运行时间 ,说明此服务器连续运行20天了

2 user当前登录用户数

load average: 0.00, 0.01, 0.05系统负载,即任务队列的平均长度。 三个数值分别为  1分钟、5分钟、15分钟前到现在的平均值。

如果服务器的CPU为1核心,则load average中的数字>=3  负载过高,如果服务器的CPU为4核心,则load average中的数字>=12  负载过高。

经验:单核心,1分钟的系统平均负载不要超过3,就可以,这是个经验值。

top命令动态查看


进程和CPU的信息( 第二、三行)

Tasks: 481 total进程总数

1 running正在运行的进程数

480 sleeping睡眠的进程数

0 stopped停止的进程数

0 zombie僵尸进程数

Cpu(s): 0.0% us系统用户进程使用CPU百分比。

0.0% sy内核中的进程占用CPU百分比

0.0% ni用户进程空间内改变过优先级的进程占用CPU百分比

98.7% id空闲CPU百分比

0.0% wacpu等待I/0完成的时间总量。

内存信息(第四五行)

Mem: 2033552k total物理内存总量

340392k used使用的物理内存总量

1376636k free空闲内存总量

316524k buff/cache用作内核缓存的内存量。

和free -k 一个意思

Swap: 2017948k total交换区总量

0k used使用的交换区总量

192772k free空闲交换区总量

1518148 avail Mem总的可利用内存是多少

第7行进程信息

PID进程id

USER进程所有者的用户名

PR优先级(由内核动态调整),用户不能

NI进程优先级。 nice值。负值表示高优先级,正值表示低优先级,用户可以自己调整

VIRT(virtual memory usage)虚拟内存,是进程正在使用的所有内存(ps中标为VSZ)

VIRT:virtual memory usage 虚拟内存

1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等

2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量

RES(resident memory usage)是进程所使用的物理内存。实际实用内存(ps中标为RSS)

RES:resident memory usage 常驻内存

1、进程当前使用的内存大小,但不包括swap out

2、包含其他进程的共享

3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反

4、关于库占用内存的情况,它只统计加载的库文件所占内存大小

SHR共享内存大小,单位kb

SHR:shared memory 共享内存

1、除M了自身进程的共享内存,也包括其他进程的共享内存

2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小

3、计算某个进程所占的物理内存大小公式:RES – SHR

4、swap out后,它将会降下来

S进程状态。            D=不可中断的睡眠状态            R=运行中或可运行            S=睡眠中            T=已跟踪/已停止            Z=僵停

%CPU上次更新到现在的CPU时间占用百分比

%MEM进程使用的物理内存百分比

TIME+进程使用的CPU时间总计,单位1/100秒

COMMAND命令名/命令行

top快捷键:

默认3s刷新一次,按s修改刷新时间

按空格:立即刷新。

q退出

P:按CPU排序

M:按内存排序

T按时间排序

p: 进程IP,查看某个进程状态

数字键1:显示每个内核的CPU使用率

u/U:指定显示的用户

h:帮助

lsof命令

lsof命令用于查看你进程打开的文件,打开文件的进程,进程打开的端口(TCP、UDP)

-i<条件>:列出符合条件的进程。(4、6、协议、:端口、@ip )

-p<进程号>:列出指定进程号所打开的文件;

[root@desktop-dcct8ee ~]# lsof -p 3178

COMMAND  PID USER  FD  TYPE            DEVICE  SIZE/OFF    NODE NAME

screen  3178 root  cwd    DIR              253,0      208 33574977 /root

screen  3178 root  rtd    DIR              253,0      224      64 /

screen  3178 root    2w  CHR                1,3      0t0    1028 /dev/null

screen  3178 root    4u  unix 0xffff9278b654f800      0t0    49598 /var/run/screen/S-root/3178.pts-2.desktop-dcct8ee

screen  3178 root    5u  REG              0,20      3072    17681 /run/utmp

screen  3178 root    7u  CHR              136,2      0t0        5 /dev/pts/2

[root@desktop-dcct8ee ~]# lsof -i :22

COMMAND  PID USER  FD  TYPE DEVICE SIZE/OFF NODE NAME

sshd    961 root    3u  IPv4  17250      0t0  TCP *:ssh (LISTEN)

sshd    961 root    4u  IPv6  17252      0t0  TCP *:ssh (LISTEN)

pstree工具使用

pstree工具是用于以树形的形式查看进程

常用参数  -p  指定显示进程端口PID

[root@desktop-dcct8ee ~]# pstree

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

        ├─VGAuthService

        ├─auditd───{auditd}

        ├─chronyd

        ├─systemd-udevd

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

        └─vmtoolsd───{vmtoolsd}

进程的优先级

优先级取值范围为(-20,19),越小优先级越高, 默认优先级是0

命令1:nice  指定程序的运行优先级

格式:nice n command

命令2:renice   改变程序的运行优先级

格式:renice -n pid

例1:指定运行vim的优先级为5

[root@desktop-dcct8ee ~]# nice -n 5 vim a.txt

你可能感兴趣的:(Linux系统进程管理)