Linux定时任务

什么是计划任务

后台运行,到来预定的时间就会自动执行的任务,前提是:事先手动将计划任务设定好。

  • 周期性任务执行;
  • 清空、tmp目录下的内容;
  • mysql数据库备份;
  • redis数据备份。
    这就用到了crond 服务。

检查cront服务相关的软件包

rpm -qa | grep cron

crontabs-1.10-33.el6.noarch
cronie-1.4.4-7.el6.x86_64
cronie-anacron-1.4.4-7.el6.x86_64

rpm -ivh 安装rpm软件
rpm -qa 查看软件是否安装
rpm -ql 查看软件详细信息
rpm -qf 查看命令属于的安装包
rpm -e 卸载软件

检查crond服务是否运行

systemctl status crond.service # centos7
service crond status # centos6

crond 定时任务服务应用

cron 定时任务的名字
crond 定时任务进程名
crontab 管理定时任务命令
Cron是Linux系统中以后台进程模型周期性执行命令或指定程序任务的服务软件名。
Linux系统启动后,cron软件便会启动,对应的进程名字叫做crond,默认是定期(每分钟检查一次)检查系统中是否有需要执行的任务计划,如果有,则按计划进行。

  • crond定时任务默认最快的频率是每分钟执行;
  • 若是需要以秒为单位的计划任务,则编写shell脚本更合适,crond不适用了
# 秒级shell脚本
cat test_cron.sh
#!/bin/bash
while true
do
echo "laomaomiaomaio~"
sleep 1
done

为什么需要crond定时任务

  • 夜间数据库定时备份;
  • 夜间网站数据(用户上传、文件、图片、程序)备份;
  • 备份等待时间过长;
  • 任务重复性高;
    利用Linux的定时任务cron工具可以解决重复性、周期性的、自动备份等运维工作。

Linux下定时任务软件

  • at 定时任务工具,依赖于 atd 服务,适用于执行一次就结束的调度任务
    例如:突发任务,某天夜里3点需要临时备份数据,可以使用at软件
语法
HH:MM
YYYY-mm-dd
noon	正午中午12点
midnight	 午夜晚12点
teatime		下午茶时间 下午四点
tomorrow	明天
now+1min	# 一分钟之后
now+1minutes/hours/days/weeks 
一分钟之后运行ls /opt
at now+1min
at> touch /tmp/mao_at.txt
输入ctrl+d 提交任务
at> <EOT>

运行之后,通过邮件检查

您在 /var/spool/mail/root 中有新邮件
[root@ ~] mail  # 通过mail,检查at的任务结果

# 检查定时任务
at -l # 列出等待中的作业
# 通过文件交互式读取任务,不用交互式输入

cat mytasks.at

at -f ./mymasks.at now+3min

# 删除任务
at -d 6
artm 6  # 效果一样
  • cron定时任务依赖于crond服务,启动crond服务后,通过linux命令crontab可以配置周期性定时任务,是Linux运维最常用的工具

定时任务与邮件服务

任务计划出发执行后,会通过邮件发送给用户,(系统内部的邮件服务)

1. 检查服务器端口,25号邮件端口是否打开,centos6/7是postfix服务
ss -tnl | grep 25
netstat -tnl | grep 25

2. 发现未启动25端口的话,则需要启动postfix服务,用于发送邮件
首先更改postfix配置文件
	vim /etc/postfix/main.cf
修改如下参数
	inet_interfaces = all
	inet_protocols = all
3. 	启动postfix服务
systemctl start postfix

本地电子邮件服务

网易邮箱邮件协议解释

  1. smtp: simple mail transmission protocol
  2. pop3: Post Office Procotol
  3. imap4: Internet Mail Access Procotol

mailx命令

了解三个概念:
MTA: Mail Transport Agent,邮件传送代理,也就是postfix服务;
MUA:Mail User Agent,收发邮件的客户端,可以是foxmail,也可以是 其他客户端
Centos7 通过命令 mailx 发送邮件,通过mail命令收邮件。

mailx -s "hello laomao" laomao	# 给laomao系统用户发送邮件, -s 添加主题
hi laomao,hao are you?	# 邮件内容
.	# 输入点,退出邮件
EOT	# 结束符号,end out

mail命令

切换为laomao用户
输入mail命令检查文件

cron实践

向crond进程提交任务的方式与at不同,crond需要读取配置文件,且有固定的文件格式,通过crontab命令管理文件

cron任务分为两类

  • 系统定时任务
  • crond服务处理会在工作查看 /var/spool/cron 文件夹下的定时任务文件以外,还会查看 /etc/cron.d 目录以及 /etc/anacrontab 下面的文件内容,里面存放 每天、每周、每月需要执行的系统任务
cron.d # 系统定时任务
cron.daily # 每天的任务
cron.hourly # 每小时执行的任务
cron.monthly # 每月执行的任务
cron.weekly # 每周的定时任务
crontab

系统定时任务配置文件 /etc/crontab

* * * * * 
第一到第五对应的是:
分钟、小时、day of month、月、day of week
分 时 日 月 周

每一行就是一条周期性任务
user-name 是以某一个用户身份运行任务
command to be executed 任务是什么

crontab命令

用来提交和管理用户的需要周期性执行的任务
-I list查看定时任务 crontab -I
-e edit编辑定时任务,建议手动编辑 crontab -e
-i 删除定时任务,提示用户确认删除,避免出错 crontab -i
-r 删除定时任务,移除 /var/spool/cron/username 文件,全没了 crontab -r
-u user 指定用户执行任务,root可以管理普通用户的计划任务 crontab -u username -l

crontab命令就是在修改 /var/spool/cron 中的定时任务文件

定时任务语法格式

corntab用于定义定时任务;
配置方式:vim /rtc/crontab

* * * * * 运行身份 命令
- - - - - 

        * 星期中星期几(0-7)(星期天为0)
      *   月份(1-12)
    *     一个月中的第几天(1-31)
  *       小时(0-23)
*         分钟(0-59)

但如果直接用corntab运行python脚本,会失败【因为用户执行的命令环境和crontab不一样,在crontab中,要使用绝对路径】。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值