linux
进程:
什么是进程:
就是一次程序的执行,进程拥有获取内存和释放内存的能力
僵尸进程:
线程没有释放内存的能力,当进程执行结束,线程没有结束,还在占用内存,导致当前进程卡在后台
1.查看进程
ps 查看进程 当前用户终端正在执行的进程
-a 显示所有用户的所有进程
-u 以用户的格式输出 按照进程启动时间进行排序
-x 显示所有的进程
-e 显示所进程包括没有终端的进程
-f 显示进程详细信息 树状格式来显示
user: 进程的名字
pid: 进程的唯一标识符 如果要杀死进程一般使用pid
%cpu: cpu使用率
%MEM: 内存的使用率
vsz: 虚拟内存的大小
RSS:驻留中页的数量
TTY: 终端
? 未知的终端
STAT: 进程的状态
S 当进程处于休眠状态
R 运行状态
T 停止状态
X 死掉的进程
> 优先级
Z 僵死的进程
START: 启动的时间
Time: 运行时间
COMMAND:进程执行的命令
top:仪表盘 每隔3秒自动刷新一次 使用q退出仪表盘
top -10:49:41 当前时间
up 系统运行时间
3 user 当前用户数
load average: 系统的负载
0.08 0.07 0.12
五分 10分钟 15分钟
tasks: 任务数量
runing 正在运行的进程数量
sleeping 休眠的进程数
stopped 停止的进程
zombie 僵死的进程
如何使用python统计每个用户的进程数
os.system()调用系统命令
popen()调用系统命令 将结果存入文件对象
import os
# 获取所有的进程信息
# print(os.system('ps -aux'))
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)
2. 如何杀死进程
进程筛选:
| 管道符 将前面的命令输出的结构 传给后面的命令作为参数去使用
grep 筛选
例如:ps -aux |grep ping
kill -9 进程id号
如果不知道pid好可以使用pkill
pkill -9 进程名
3. 计划任务
计划任务是系统服务,所以在使用前要先启动服务
突发性任务at: 临时性的任务 只执行一次
- 启动服务
systemctl start atd - 制定突发任务
格式:at 时间 任务
第一种:
at now+10min 获取时间单位 min分钟 days 天
第二种:
指定某一天执行突发任务 执行2019-9-3 14:10 执行 init 3
at 14:10 2019-9-3
ctrl+d 保存
ctrl+c 撤销
at -l 查看所有的突发任务
atrm 任务id 删除指定的突发任务
定时性任务 crontab:
-
启动服务 crond
crontab 只能是root用户去编辑
-u 指定用户
-e 编辑定时任务
-l 列出所有的定时任务
-r 删除定时任务 -
指定定时性任务
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(‘当前时间’)
scroptf.py
写在linux里/opt目录下
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 邮件的路径 当定时任务中的脚本报错,会将错误信息以邮件的形式发给用户
4. 后台运行
格式: 命令 【属性】【参数】 &
如果有输出需要做重定向输出
命令 【属性】【参数】> 文件 &
& 后台运行
重定向输出 >
echo 输出
nohup
nohup 命令 &
nohup ping www.baidu.com >/opt/new1 &
tail -f /opt/new1 追踪
jobs 查看当前终端正在运行的后台程序 如果关闭了终端就看不到了
可以使用 ps命令去查看