杀死进程、突发任务、定时任务

进程

什么是进程:就是一次程序的执行,进程拥有获取内存和释放内存的能力。

僵尸进程:线程没有释放内存的能力,当进程执行结束时,线程还没有结束,还在占用内存,导致当前进程卡在后台。

下面所示就是一个僵尸进程
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,每小时的第一分钟执行命令

posted @ 2019-09-03 08:30  入梦归来  阅读(506)  评论(0)    收藏  举报