Linux一次性计划任务中利用at
简单演示了计划任务功能,计划任务就是由计算机发起的执行,不用人的参与。跟一次性计划任务比,周期性计划任务用途更广泛。周期性计划任务使用crontab
命令。
crontab命令说明
配置crontab
crontab -e
crontab配置格式
分钟 小时 日期 月份 星期 执行的命令
crontab最小单位是分钟,所以最小是每隔1分钟执行一次命令,如果要实现秒级的定时任务,可以安装第三方软件包。
注意命令的路径,最好写全路径
查看现有计划任务
crontab -l
每个用户都有自己的周期性计划任务配置文件,保存在/var/spool/cron/
下面,以用户名作为文件名。
查看计划任务执行情况
可以进入到 /var/log
目录中,执行 tail -f cron
看到crontab的执行日志,通过该日志我们可以分析该计划任务是否有被正确执行。
crontab示例
每分钟将日期保存在指定文件中
* * * * * /usr/bin/date >> /tmp/deepinout.com.txt
固定星期几执行计划任务
周一每分钟执行
* * * * 1 /usr/bin/date >> /tmp/deepinout.com.txt
周五每分钟执行
* * * * 5 /usr/bin/date >> /tmp/deepinout.com.txt
周一和周五每分钟执行
* * * * 1,5 /usr/bin/date >> /tmp/deepinout.com.txt
周一至周五每分钟执行
* * * * 1-5 /usr/bin/date >> /tmp/deepinout.com.txt
同时满足指定日期和星期才执行任务
例如下面的例子表示:7月8日且是周一至周五,每分钟执行
* * 8 7 1-5 /usr/bin/date >> /tmp/deepinout.com.txt
crontab常见问题
crontab目录中的文件用途
在 /etc 目录下, 关于crontab 的目录有 cron.d/ cron.daily/ cron.hourly/ cron.monthly/ cron.weekly/ 和一个文件 crontab 它们的作用是什么哦?
这些目录是避免在你设定的时间,刚好服务器关机准备的,还有一个延时计划任务工具叫做anacron 来执行这些延时计划任务脚本
crontab可以直接写脚本吗
这样写计划任务能实现每秒执行一次脚本
* * * * * for i in `seq 60`; do [shell script] ; sleep 1; done
如何查看所有用户的计划任务
crontab -l
和 cat /var/spool/cron/root
执行的结果完全相同。可以理解为是一样的查询方式吗?
/var/spool/cron/和用户同名的文件
记录了该用户的cron计划任务, crontab -l 就是把这个文件读取到标准输出上,也可以查看其它用户的计划任务