linux进程管理
进程:
程序的一次运行。进程拥有独立的内存空间。拥有获取和释放内存的能力
僵尸进程:
当进程结束,内存没有释放,一直占用内存的进程。
在上面的代码当中,主线程 mian在子线程都开启(start)之后输出main is end 然后结束,之后子线程接着运行,运行完成之后,没有释放内存,卡在这里。
查看进程
ps -aux查看系统进程
选项说明:
-a 显示所有用户的进程
-u 按照用户名和启动时间顺序进行排序显示
-x 无控制终端执行的进程
-e 显示所有进程,包括没有控制端的进程
-f 以树状结构显示
USER 进程的用户
PID 进程的唯一标识,通常用他杀死进程
%CPU cpu使用的%百分比
%MEM 内存使用的%百分比
VSZ 进程占用的虚拟内存的空间
RSS 驻留中页的数量
TTY 终端id,如果是?就是没有
STAT 进程的状态
R 处于运行队列当中的进程
S 处于睡眠状态的进程
T 停止或者被追踪
W 进行内存交换
X 死掉的进程,重来没有见过
Z 僵尸进程
< 提高优先级
+位于后台运行的进程
START 开始时间
TIME 执行的时间
COMMAND 进程执行的命令
top:查看系统状态
top每3秒刷新一次
上半部分是系统状态部分
Top-10:04:26 开始调用的时间
3 user 当前系统有3个用户
Load average: 0.14,0.05,0.06 系统的负载,队列的平均长度,1分钟之内的 5分钟之内 15分钟之内的
Task 任务
3 running 3任务在运行
180 sleeping 180个休眠
0 stopd 没有停止的
0 zombie 0个僵尸进程
下半部分是进程部分
使用python统计各个用户下的进程数:
改进:
import os
#os.system("ps -aux")
result = {}
with os.popen("ps -aux") as f:
for i in f.readlines():
user = i.split(" ",1)
#print(user)
if len(user) >= 2:
#print(user[0])
if user[0] in result:
result[user[0]] += 1
else:
result[user[0]] = 1
#print(result)
for k,v in result.items():
print("用户名:%s____进程数量:%s"%(k,v))