crontab计划任务

相关概念

作用:定时自动完成特定的工作

分类:

  • 一次性计划任务 (at、batch)
  • 周期性重复的计划任务 (crontab、anacron)

at一次性计划任务

格式
at [-V] [-q queue] [-f file] [-mMlbv] TIME
at [-V] [-q queue] [-f file] [-mMlbv] -t time_arg
at -c job [job...]
at [ -rd ] job [job...]
atq [-V] [-q queue]
atrm [-V] job [job...]
batch
选项
-q 队列编号:指定计划任务的队列编号,默认是a

-l:显示尚未执行的计划任务(等于执行命令 atq)

-d NUM:删除指定编号的计划任务(等同于命令 atrm)

-c NUM:显示指定编号的计划任务要执行具体的命令

-f FILE:从文件中读取要执行的操作
-f选项
从文件job.txt中读取要执行的操作

第一步:创建job.txt
# vim job.txt
useradd zs
touch /tmp/a.txt

第二步:读取job.txt创建计划任务(17:00)
# at -f job.txt 17:00

第三步:检查
# at -l
# at -c NUM

服务
#service atd start|stop|restart|status

# chkconfig atd on|off

at依赖的服务atd ,系统服务

作用:让at以进程的方式工作在系统后台

必须保证atd服务处于工作状态,那么计划任务才能够正常的执行

时间表示方法
1. HH:MM        例子:12:33 ,这里表示的是下一个12:33分

2. HH:MM YYYY-mm-dd   例子:at 08:20 2020-07-01  指定年月日小时分钟【不能是过去的时间】

3. 特殊方式
	now
		now +5 minutes   5分钟之后执行这个计划任务
		now +4 days
		now +6 weeks
	am
		4am + 3 weeks
	pm
计划任务保存位置

/var/spool/at

这里保存的是那些尚未执行的计划任务,一旦计划任务被执行,则这里的响应的文件被删除

注意

at计划任务的执行结果都是以邮件的方式告知用户的

即使在计划任务中有echo,echo的结果也不是显示在终端,而是以邮件的内容方式发送给用户

邮件的位置: /var/spool/mail/USERNAME

【如果一定要在终端上显示信息,需要指定输出重定向到终端设备文件编号】

crontab

作用: 实现周期性的计划任务

服务: crond

#service crond start

#chkconfig crond on
cron的分类

系统cron

​ 系统安装完成之后,自动完成系统特定的操作,比如生成locate的数据库、wathis的数据库

​ 位置: /etc/crontab

用户cron

​ 用户自定义的计划任务

​ 位置:/var/spool/cron/USERNAME

采坑记录:suse操作系统的计划任务

自启动文件: /etc/rc.d/after.local

用户自定义计划任务目录: /var/spool/cron/tabs/

VM160:/var/spool/cron/tabs # ll
total 8
-rw------- 1 daemon daemon 224 Nov  3 18:53 daemon
-rw------- 1 root   root   144 Sep 29 12:04 root
时间表示格式
# 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
  1. 分钟:0-59任意整数
  2. 小时:0-23任意整数
  3. 天:1-31任意整数
  4. 月:1-12任意整数
  5. 星期:0-7任意整数(0和7表示周日)
  6. *:表示任何时间,例如每天7:30 就是 30 07 * * *
  7. -:表示一个连续范围,例如每天的7:30 8:30 9:30 就是 30 07-09 * * *
  8. ,:表示离散的时间点,例如每天的7:30 11:30 15:30 就是 30 07, 11, 15 * * *
  9. /n:表示每隔n单位的时间,例如每隔10分钟 就是 */10 * * * *
选项

-l:显示指定用户的计划任务列表(默认显示当前用户)

-u USERNBAME:为指定用户指定计划任务,显示指定用户的计划任务(结合-l)

-e:制定、修改计划任务(本质上就是调用vi去编辑/var/spool/cron/USERNAME文件

-r:删除当前用户的全部的计划任务(小心)

例子
1. 每隔3分钟,输出一次系统时间
    */3 * * * *  echo `date`  
    
2. 每隔3分钟,输出一次系统时间到终端
    */3 * * * * echo `date` >> /dev/pts/3
    
3. 每天的3点整创建一个文件,文件名是 当前日期-x小时:分钟:秒.log 
	00 03 * * * /bin/touch /tmp/`/bin/date +\%F-\%H:\%M:\%S`.log
	
4. 每隔5天将/tmp下的文件清空一次
	* * */5 * * /usr/sbin/rm -r /tmp/*
	
5.每个小时的整点都执行后面的命令
    00 */1 * * * service network restart
    
6.23点和0点到7点,每分钟都重启一次网络
    * 23,00-07/1 * * * service network restart
总结

*本来就表示每一X

*/1 和 * 是没有区别的

1、定时任务要加注解,

2、结尾用>/dev/null 2>&1屏蔽输出

3、计划任务的命令路径要用绝对路径

4、crond服务必须开启

5、可查看定时任务的日志/var/log/cron

6、定时任务的一些文件和目录

1、/etc/crontab
2、/var/log/cron
3、/var/spool/cron/UserName
4、/etc/cron.deny
5、/etc/cron.allow
6、/etc/cron.d/0hourly
7、/etc/cron.daily/        
8、/etc/cron.hourly/  
9、/etc/cron.monthly/
10、/etc/cron.weekly/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值