一、进程
进程:就是一次程序的执行,拥有获取内存和释放内存的能力。
僵尸进程:进程没有释放内存的能力,当进程执行结束时,线程还没有结束,还在占用内存,导致当前进程卡在后台。
(一)查看进程
ps 查看进程
ps:查看进程,当前用户终端正在执行的进程。
-a:显示所有用户的所有进程
-u:按用户名和启动时间的顺序显示进程
-x:显示无控制终端的进程
-e:显示所有进程,包括没有终端的进程
-f:树状格式显示进程
USER:进程的属主
PID:进程的id
%CPU:cpu使用率
%MEM:内存使用率
VSZ:虚拟内存的大小
RSS:驻留中页的数量
TTY:终端
?:未知的终端
STAT:进程的状态
S:当进程处于休眠状态
R:运行状态
T:停止状态
X:死掉的进程
>:优先级
Z:僵死的进程
START: 启动的时间
Time: 运行时间
COMMAND:进程执行的命令
top
top:仪表盘,每隔3秒自动刷新一次,使用q退出仪表盘。
up:系统当前时间
3 users:当前用户数
load average:系统的负载
0.08 0.07 0.12
五分钟 十分钟 十五分钟
tasks:任务数量
running:正在运行的进程数量
sleeping:休眠的进程数
stopped:停止的进程
zombie:僵死的进程
如何使用python统计每个用户的进程数:
os.system():调用系统命令
popen():调用系统命令,将结果存入文件对象
import os
# 获取所有的进程信息
import os
#print(os.system('ps -aux'))
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)
(二)杀死进程
进程筛选:
|:管道符,将前面的命令的输出的结果,传给后面的命令作为参数使用。
grep:筛选
杀死进程
kill -9 进程ID
如果不知道进程ID可以使用pkill
pkill -9 进程名
二、计划任务
计划任务:系统服务,所以在使用前要先启动服务
突发性服务at:临时性的任务,只执行一次
1.启动服务
systemctl start std
2.指定突发任务
格式:at 时间(回车)
at>任务(回车)
at>…
at>(ctrl+d保存,退出)
at now+10min(min–分钟,days–天)
指定某天某时:at 14:10 2019-9-3
ctrl+c:撤销
at -l:查看所有突发事件
atrm 任务id:删除指定的突发任务
定时性任务crontab
1.启动服务crond
2.指定定时性任务
crontab -uroot -e 回车后
绿框地址:定时性任务默认存储的地址
crontab,只能是root用户编辑
-u:指定用户
-e 编辑定时任务
-l 列出所有的定时任务
-r 删除定时任务
编辑:
格式: * * * * * 任务
第一个*:分钟 0-59
第二个号:小时 0-23
第三个号:日 1-31
第四个号:月 1-12
第五个号:周 1-7
任务即命令
*:任意数字
/:频率
-:数字的范围
,:离散数字
分钟:0-59
小时:0-23
日:1-31
月:1-12
周:1-7
例题
1.每月每周每日每小时的第一分钟创建目录/zhy/demo
1 * * * * mkdir /zhy/demo
2.每分钟执行一次mkdir /zhy/demo
* * * * * mkdir /zhy/demo
3.每月每周每天的晚上9点30执行命令
30 21 * * * 命令
4.每月的1号,10号,22号每天的4点45执行命令
45 4 1,10,22 * * 命令
5.每天的18点到23点的整点和半点执行命令
0,30 18-23 * * * 命令
6.每一小时执行一次命令
* */1 * * * 命令
7.每天六点钟执行命令
0 6 * * * 命令
8.每天凌晨六点四十
40 6 * * *命令
9.每周一到每周五的11:41开始每隔10分钟执行一次
41-59/10 11 * * 1-5 命令
10.每天的10:30开始,间隔2个小时执行一次
30 10-23/2 * * * 命令
11.每周一到每周五的两点执行命令
0 2 * * 1-5 命令
12.每周一到周五的8:00和9:00执行命令
0 8,9 * * 1-5 命令
13.每周一到每周五9:25到11:35,13:00到15:00之间间隔10分钟执行一次命令
25,35,45,55 9 * * 1-5 命令
5-55/10 10 * * 1-5 命令
5-35/10 11 * * 1-5 命令
14.每周一到周五 8:30,8:50,9:30,10:10,10:30,11:00,11:30,14:00,14:30
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 命令
15.执行python代码创建文件,每一分钟创建一次
/opt/scroptf.py:
import time
with open('%s'%time.strftime('%H:%M:%S'),'w')as f:
f.write('当前时间%s'%time.strftime('%Y-%m-%d %H:%M:%S'))
/var/spool/mail:邮件的路径,当定时任务中的脚本报错时,会将错误信息以邮件的形式发给用户
三、后台运行
格式:命令 【属性】 【参数】 &
如果输出需要做重定向输出
命令 【属性】 【参数】 > 文件名 &
&:后台运行,终端关闭停止,Ctrl+C不停止
‘>’:重定向输出
echo:输出
nohup 命令 &:后台运行,终端关闭不停止,Ctrl+C可停止
&与nohup的区别:
如果直接使用&,当关闭终端是,使用jobs查看不到后台运行的程序。
nohup就算终端关闭也是可以使用jobs查看到后台运行的程序的。
四、查看占用某端口的进程信息
lsof -i:端口号