top命令列和ps命令中的各项含义
PID 进程id
PPID 父进程id
RUSER Realusername
UID 进程所有者的用户id
USER 进程所有者的用户名
GROUP 进程所有者的组名
TTY 启动进程的终端名。不是从终端启动的进程则显示为?
? 未知的终端
PR 优先级
NI nice 值。负值表示高优先级,正值表示低优先级
P 最后使用的CPU,仅在多CPU环境下有意义
%CPU 上次更新到现在的CPU时间占用百分比
TIME 进程使用的CPU时间总计,单位秒
TIME+ 进程使用的CPU时间总计,单位1/100秒
%MEM 进程使用的物理内存百分比
VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。
RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
CODE 可执行代码占用的物理内存大小,单位kb
DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
SHR 共享内存大小,单位kb
nFLT 页面错误次数
nDRT 最后一次写入到现在,被修改过的页面数。
S 进程状态。
D= 不可中断的睡眠状态
R= 运行
S= 睡眠
T= 跟踪/停止
Z= 僵尸进程
COMMAND 命令名/命令行
WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
Flags 任务标志,参考sched.h
top -19:45:17 当前时间
up 系统运行时间
2 user 当前用户数
load average: 系统的负载(进程队列的平均长度)
0.00 0.01 0.05
五分 10分钟 15分钟(3个时间内进程队列的平均长度)(值大说明进程量大)
tasks: 任务数量
runing 正在运行的进程数量
sleeping 休眠的进程数
stopped 停止的进程
zombie 僵死的进程
vsz: 虚拟内存的大小
RSS:驻留中页的数量
STAT: 进程的状态
大于号 > 优先级
START: 启动的时间
NI 进程的NICE值,即进程的优先级(-20~19之间),数值越大,优先级越低
二、如何使用python去统计每个用户的进程数
os.system() 调用系统命令,打印在控制台,结果输出到命令行
os.popen() 调用系统命令 将结果存入文件对象
python脚本
import os
# 获取所有的进程信息
fobj = os.popen('ps -aux') # 将结果存入文件对象
count = {}
with fobj as f:
for i in f.readlines():
#print(i.split(' '))
if i.split(' ')[0] in count:
count[i.split(' ')[0]] += 1
else:
count[i.split(' ')[0]] = 1
if 'USER' in count:
del count['USER']
print(count)
编辑和运行python脚本
未统计前
统计后
三、计划任务
计划任务是系统服务,所以在使用前要先启动服务
1.突发性任务at: 临时性的任务 只执行一次
1.启动服务
systemctl start atd
2.制定突发任务
格式:
at 时间 任务
第一种: at now+10min 获取时间单位 min分钟 days 天
第二种: 指定某一天执行突发任务 执行2019-9-3 14:10 执行 init 3
at 14:10 2019-9-3
3.突发性任务的操作
ctrl+d 保存
ctrl+c 撤销
at -l 查看所有的突发任务
atrm 任务id 删除指定的突发任务
2.定时性任务 crontab:
1.启动服务 crond
crontab 只能是root用户去编辑
2.crontab操作:
-u 指定用户
-e 编辑定时任务
-l 列出所有的定时任务
-r 删除定时任务
2.指定定时性任务
crontab -uroot -e 回车后
分钟 小时 日 月 周 任务
* * * * * 命令
* 任意数字
/ 频率
- 数字的范围
,离散数字
分钟:0-59
小时:0-23
日: 1-31
月:1-12
周:1-7 7代表周日
每月的1-12,每周的1-7 每日的0-23,每小时的 第一分钟执行 命令
1 * * * * mkdir /zhy/demo
每一分钟执行一次
* * * * * mkdir /zhy/demo
每月的每周的每天的晚上9点30分执行任务
30 21 * * * 命令
每月的1号,10号,22号每天的 4点45分执行命令
45 4 1,10,22 * * 命令
每天的18点到23点的 整点 和半点 执行任务
0,30 18-23 * * * 命令
每一小时执行一次命令
* */1 * * * 命令
每天六点钟执行命令
0 6 * * * 命令
每天凌晨六点四十
40 6 * * * 命令
每周一到每周5的11:41 开始 每隔10分钟执行一次
41-59/10 11 * * 1-5 命令
每天的10:30开始 间隔2个小时执行一次
30 10-23/2 * * * 命令
每周一到每周5的两点 执行命令
0 2 * * 1-5 命令
每周一到周五的8:00和9:00 执行
0 8,9 * * 1-5 命令
每周一到每周五9:25 到11:35之间间隔10分钟,13:00到15:00
25,35,45,55 9 * * 1-5 命令
5-55/10 10 * * 1-5 命令
5-35/10 11 * * 1-5 命令
每周一到周五 8:30,8:50,9:30,10:10,10:30,11:00
11:30,14:00,14:30
30,50 8 * * 1-5 命令
30 9 * * 1-5 命令
10,30 10 * * 1-5 命令
0,30 11,14 * * 1-5 命令
执行python 创建文件 每两分钟创建一次
with open(‘文件名’,’w’) as f:
f.write(‘当前时间’)
格式:
1.打开服务 systemctl start crond
2.crontab -uroot -e 回车后 进入编辑
先不用写
3.创建python文件
4.写python代码
5.执行文件
6.定时后执行python代码
crontab -uroot -e 回车后 进入编辑
四、邮件的路径
/var/spool/mail
当定时任务中的脚本报错,会将错误信息以邮件的形式发给用户 ,在邮箱中才能看到