说明:本文所有案例均在linux 2.6.32-642.el6.x86_64验证成功
Process State 是非常强大的进程查看命令,用于报告当前系统的进程状态。
1、BSD风格
a——和终端有关的进程
x——和终端无关的进程
u——显示进程的执行者
2、sys V风格
-e——查看所有进程
-l——long,长格式
-f——full,详细信息
-o——指定输出格式
ps #查看隶属于自己的进程
ps -l(ps -u)#仅查看隶属于自己进程的详细信息
[root@daidai ~]# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1703 1698 0 80 0 - 27104 wait pts/0 00:00:00 bash
4 R 0 1779 1703 0 80 0 - 27035 - pts/0 00:00:00 ps
F 进程标志
4 此进程的权限为root
1 此进程仅可进行复制(fork)而无法被执行(exec)
S 进程状态
R:该进程正在运行中
S:该进程目前正在睡眠状态(idle),但可以被唤醒(signal)
#进程睡眠并不代表该进程未开启;
D: 不可被唤醒的睡眠状态,通常这个进程可能在等待I/O的情况(ex>打印)
T:停止状态,stop,可能是在工作控制(后台暂停)或除错(traced)状态
Z:“僵尸”状态,进程已经终止但却无法被删除至内存外
UID、PID、PPID
该进程是root用户(UID为0一般为root)的1730进程(UID),此进程的父进程为1698(PPID);
C
CPU利用率,单位为百分比;
PRI/NI
此进程被CPU执行的优先级(后续会详解);
ADDR、SZ、WCHAN
都与内存有关;ADDR表示该进程在内存的哪个部分,running的进程显示-,SZ表示此进程用掉多少内存,WCHAN表示目前进程是否在运行中,running显示-
ps aux(ps -le) #查看所有用户执行的过程的详细信息
[root@daidai ~]# ps -aux | head -n 5
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 19360 1528 ? Ss 19:13 0:03 /sbin/init
root 2 0.0 0.0 0 0 ? S 19:13 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 19:13 0:00 [migration/0]
root 4 0.0 0.0 0 0 ? S 19:13 0:00 [ksoftirqd/0]
user:进程执行者;
PID:进程的ID;
%CPU:进程CPU占用率;
%MEM:进程内存占用率;
VSZ:该进程使用掉的虚拟内存大小(kb);
RSS:该进程占用的真实内存大小;
START:进程启动时间;
TIME:进程占用CPU的总时长;
COMMAND:进程名
【COMMAND】代表的是内核进程的一个线程
ps -o pid,comm,ni
指定进程按PID、COMMAND、NICE的格式输出
列出占用CPU最多的5个进程,并按从大到小进行排序
[root@daidai ~]# ps -eo comm,pcpu --sort -pcpu | head -n 5
COMMAND %CPU
events/0 0.2
init 0.0
kthreadd 0.0
migration/0 0.0
pcpu:cpu使用率的百分比;
可直接在后面接–sort进行排序;
用于随时终端、删除不必要的程序
例:寻找并杀死僵尸进程
小结:使用ps命令可确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用率过多的资源等等,总之大部分信息都是可以通过执行该命令得到的
top是一个交互式系统性能监控工具,不同于ps是静态的结果输出,top可以实时动态地查看系统的整体运行情况。
通过top命令所提供的互动式界面,用热键可以管理。
#这个交互界面,类似任务管理器
load average:系统负载对于单个处理器来说,负载在0-1.00之间是正常的,超过1.00就要引起注意了,系统已经超载了,我理解为塞车了。在多核处理器中,你的系统均值不应该高于处理器核心的总数(多个1*CPU核数),还可以通过uptime查看系统负载;
%us:用户空间占用CPU百分比,此值较高时,表示进程消耗CPU时间多,如果长期超过50%的时候,我们就要考虑优化程序算法或者进行加速;
%sy:内核空间占用CPU百分比,此值较高时,表示系统内核消耗CPU资源多,我们应该检查原因;
%wa:等待输入输出的CPU时间百分比,此值较高时,说明IO等待验证,这可能是由于磁盘大量随机访问造成,也可能造成磁盘出现瓶颈(块操作);
%id:反映了CPU繁忙程度;
buffers和cached区别了解一下:buffer是块设备的读写缓存区,cached是文件系统本身的页面缓存,它们都是linux操作系统底层的机制,目的是加速对磁盘的访问;
PR和NI:系统优先级有2种,一种是不能被用户更改,由系统控制的priority;一种是nice值,可以被用户修改(使用renice命令),范围-20~+19,越小越优先;
RT代表实时,real time,最高优先级
每隔3s刷清一次,-b改变时间;T、M、P 按键盘
linux系统中,每一个进程都是由其父进程创建的,
此命令以树状图的方式展现进程间的派生关系。
pstree -p 显示当前所有进程的进程号和进程id
[root@daidai ~]# pstree -p
init(1)─┬─NetworkManager(1407)
├─auditd(1336)───{auditd}(1337)
├─crond(1668)
├─cupsd(1441)
├─dbus-daemon(1393)───{dbus-daemon}(1396)
├─dmeventd(1097)─┬─{dmeventd}(1098)
│ └─{dmeventd}(1099)
├─master(1654)─┬─pickup(1780)
│ └─qmgr(1664)
├─mingetty(1681)
├─mingetty(1683)
由上可知,所有的进程都是依附在init这个进程下面,且id(init)=1,是由init内核主动调用的第一个进程;
systmd是Rehat7以上版本新的service,作用是加载服务,也是红帽启动的第一个进程
通过进程名与其他属性来查找进程,并显示查找到的进程id
-l ——显示进程名
进程名称:指定要查找的进程名称,同时也支持类似grep指令中的匹配模式
[root@daidai ~]# pgrep -l sshd
1569 sshd
1824 sshd
pstree -a
显示进程的所有详细信息,遇到相同的进程名可以压缩展示
[root@daidai ~]# pstree -a
init
├─NetworkManager --pid-file=/var/run/NetworkManager/NetworkManager.pid
├─auditd
│ └─{auditd}
├─crond
├─cupsd -C /etc/cups/cupsd.conf
├─dbus-daemon --system
│ └─{dbus-daemon}
├─dmeventd
│ ├─{dmeventd}
│ └─{dmeventd}
├─master
│ ├─pickup -l -t fifo -u
│ └─qmgr -l -t fifo -u
├─mingetty /dev/tty1
├─mingetty /dev/tty2
如果子进程挂掉或者老是杀不掉子进程,则可用pstree来找到父进程杀掉;
本人只是一个在linux学习大军中搬砖的小小的一员,技术水平有限,文中难免出现不妥或者错讹,欢迎大家在评论区多多指正,共同进步,不尽感激!
原创不易,转载请务必保留出处http://blog.csdn.net/wsxxdwwzjdy/article/details/78507698