一、.定时(计划)任务:

1.定义

定时(计划)任务:未来的某时间执行一次某任务,或者周期性的运行某个任务,执行结果会通过邮件的形式发给用户

2.分类

定时(计划)任务分为两类:
1、定点执行一次:at batch 2、周期性执行:crontab

系统定时任务 /etc/crontab
用户定时任务 /var/spool/cron

3.定时任务语法及配置文件

使用mail发邮件时,必须先将sendmail服务启动。

mail命令:

mail -s “邮件主题” -c “抄送地址” -b“密送地址” -f 发件人地址 -F 发件人姓名< 邮件内容

三种发信格式:

mail -s test nebula@nebula.edu.cn
echo “hello” | mail -s test nebula@nebula.edu.cn
mail -s test nebula@nebula.edu.cn < file

at命令:定点执行一次任务

[root@localhost ~]# yum install apt-get at -y 安装at服务

android类似linux的定时任务 linux做定时任务_linux

[root@localhost ~]# at -c 1 //根据作业id查看作业内容

1、时间定义:

16:47 24小时制
noon, midnight,teatime(下午四点)
04:47pm
2020-04-04 日期必须在时间后面
相对时间法:
now + 5 minutes + 3 days
today tomorrow

2、语法:

-q:
-m:
-d:删除指定定时任务
-l:列出指定的定时任务
-v:列出已执行未删除的定时任务
-f file: 读取命令文件
-c #:根据任务ID查看内容 #:id号
atq:列出用户的计划任务
atrm #:删除at任务 #:id号
batch:在系统空闲情况下才执行at命令

Crond:周期性执行任务

yum install crontabs 安装crontab
[root@nebula ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
这四行是crond任务运行的环境变量:
第一行:shell变量指定系统要使用bash这个shell
第二行:指定系统执行命令的路径。
第三行::mailto 将电子邮件发送给root用户。若 mailto 为空,表示不发送任务。
第四行:指定在执行命令或脚本时使用的主目录

# For details see man 4 crontabs
	# Example of job definition:
	# .---------------- minute (0 - 59)(分)
	# |  .------------- hour (0 - 23)(时)
	# |  |  .---------- day of month (1 - 31)(日)
	# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ..(月).
	# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat(周)
	# |  |  |  |  |
	# *  *  *  *  * user-name command to be executed
	minute:表示分钟,0-59
	hour:表示小时,0-23
	day:日期,1-31
	month:月份,1-12
	week:星期,0-7,

时间表示法:
1、给定特定的值
2、*
3、离散数值
#,#,#
4、连续的值
#-# 8-12
5、指定时间点上的时间步长
/#:

练习

1、每小时的第5分钟和第15分钟执行
5,15 * * * * command
2、每天上午的8-12点的第5分钟和第15分钟执行
5,15 8-12 * * * command
3、每隔2天上午的8-12点的第5分钟和第15分钟执行
5,15 8-12 */3 * * command
4、每星期一的上午的8-12点的第5分钟和第15分钟执行
5,15 8-12 * * 1 command
5、每周五的晚上23:30重启 crond服务
30 23 * * 5 service crond restart
6、每月1号的23点重启网络服务(易忘:整点分有0)
0 23 1 * * service network restart
7、每1分钟
* * * * * command

8、 每晚21:30重启smb
30 21 * * * /etc/init.d/smd restart
9、每一小时:*/1 晚上十一点到早上七点:23-7/1

0 */1 * * *:每小时整点执行 * /1 * * * :每分钟执行 (只要分是,几乎是每分钟执行)

定时任务的规范:

1、定时任务的脚本文件必须存放在指定位置,便于维护和定期备份
2、添加定时任务时需要写注释:
3、执行脚本要使用绝对路径
4、避免标准输出和错误输出, > /dev/null 2>&1
5、如果定时任务可以使用命令完成,建议命令写在脚本里
6、使用指定用户执行定时任务
7、标准的书写规范

crontab
		-e:编辑任务
		-l:列出任务
		-r:删除任务