杀死进程、突发任务、定时任务
进程
什么是进程:就是一次程序的执行,进程拥有获取内存和释放内存的能力。
僵尸进程:线程没有释放内存的能力,当进程执行结束时,线程还没有结束,还在占用内存,导致当前进程卡在后台。
下面所示就是一个僵尸进程
import threading
import time
def func():
time.sleep(3)
print('我是子线程')
if __name__ == '__main__':
print('start')
t = threading.Thread(target=func)
t.start()
print('end')
1.查看进程
ps
# ps 查看进程 当前用户终端正在执行的进程
-a 显示所有用户的所有进程(包括其他用户)
-u 以用户的格式输出 按照进程启动时间进行排序
-x 显示无控制终端的进程
-e 显示所有进程,包括没有控制端的进程
-f 用树形格式来显示进程
# ps -aux

USER:进程是属于哪个用户的
pid:进程的ID,如果要杀死进程一般使用pid
%CPU:进程占用的CPU百分比
%MEM:占用内存的百分比
VSZ:占用虚拟内存的大小
RSS:驻留中页的数量
TTY:终端。问号表示是无终端的,也就是系统本身。
STAT:进程的状态
S 处于休眠状态
R 运行状态
T 停止或被追踪
X 死掉的进程
< 优先级高的进程
Z 僵尸进程
START:启动进程的时间
TIME:进程消耗CPU的时间
COMMAND:启动进程的命令的名称和参数
top
top:仪表盘,每隔3秒自动刷新一次
使用q退出仪表盘。

top - 19:51:12 当前时间
up 7:55 系统运行了多长时间,格式为 时:分
3 users 当前登录用户数
load average:0.03,0.02,0.05 系统负载,即任务队列的平均长度,三个数值分别为5分钟、10分钟、15分钟前到现在的平均值
tasks:任务数量
running:正在运行的进程数量
sleeping:休眠的进程数
stopped:停止的进程数
zombie:僵尸进程数
练习:如何使用python统计每个用户的进程数
将目录切换到/opt,新建一个command.py文件
# cd /opt/
# vim command.py
command.py文件中的内容如下
import os
# print(os.system('ps -aux')) 查看所有用户的所有进程
fobj = os.popen('ps -aux') # 将结果存入文件对象
count = {} # 新建一个空字典
with fobj as f:
for i in f.readlines(): # 循环读取文件对象fobj中的内容
# print(i.split()) # 将读取的内容 按照空格进行分割
# count ={用户:进程数} 如果用户不在字典中,该用户的进程数设为1;
# 如果用户在字典中,该用户的进程数+1
if i.split()[0] in count: # 进程对应的用户
count[i.split()[0]] += 1
else:
count[i.split()[0]] = 1
# 'USER'是表头,如果'USER'在字典中,将它从字典中删除
if 'USER' in count:
del count['USER']
print(count) # 打印字典
统计内存使用量
2.如何杀死进程
格式:
kill -9 进程id号
如果不知道pid号可以使用pkill
pkill -9 进程名
grep 用于过滤/搜索特定字符(串),常配合管道命令使用。
进程筛选:
| 管道符
将前面的命令输出的结果,传给后面的命令作为参数去使用
打开两个窗口,一个用于新建进程,另一个用于查找进程
其中一个窗口
# ping www.baidu.com
另一个窗口
# ps -aux|grep ping
那么如何杀死上面的进程ping呢
# kill -9 进程ping的ID号
如果不知道pid号可以使用pkill
# pkill -9 ping
3.计划任务
计划任务是系统服务,所以在使用前要先启动服务
突发性任务
突发性任务at:临时性的任务,只执行一次
1.启动服务
# systemctl start atd
2.制定突发任务
格式:at 时间 任务
# at now+10min 获取时间单位 min分钟 days天
Ctrl+d:保存
Ctrl+c:撤销
at -l :查看所有的突发任务
atrm 任务id :删除指定的突发任务

指定某一天执行突发任务
执行 2019-9-3 14:10 执行init 3
$ at 14:10 2019-9-3
at> init 3
at> <EOT>

定时性任务
crontab
1.启动服务 crond
crontab 只能是root用户去编辑
-u 指定用户
-e 编辑定时任务
-l 列出所有的定时任务
-r 删除定时任务
2.指定定时性任务
crontab -u root -e 回车

分钟 小时 日 月 周 任务
* * * * * 命令
* 任意数字
/ 频率
- 数字的范围
, 离散数字
分钟:0-59
小时:0-23
日:1-31
月:1-12
周:1-7 7代表周日
每月的1-12,每周的1-7,每日的0-23,每小时的第一分钟执行命令
浙公网安备 33010602011771号