定时任务通常用于处理需要定期执行的系统维护任务,比如日志清理,系统检查等,通过crontab和at,命令可以实现。
crontab比较常用,可以根据分钟、小时、日期、月份、星期来设置调度任务,用户只要设置好相关参数和命令,任务就会自动执行。常用参数如下:
-u user指定运行此任务的用户是谁,如果不设置,默认是当前登录用户,该选项只有root用户才能使用
-l 显示当前用户的任务
-r 删除当前用户的任务
-e 更改用户的任务
要使用crontab,首先要启动crontab服务,命令如下:
看到已经启动起来了,可以直接使用
现在开始设置自动运行任务,比如这里已经有了一个测试用的shell脚本loop.sh:
运行crontab -e添加或者更改任务列表,运行命令后会自动进入vi编辑界面:
每天晚上一点钟执行loop.sh脚本
分钟 小时 日期 月份 星期 命令
00 01 * * * /tmp/loop.sh
用-l参数查看当前的定时任务计划:
如果是每个周六晚上10点运行loop.sh命令,写成:00 22 * * 6 /tmp/loop.sh。定时任务的脚本必须具有可执行的权限x,才能确保脚本正常工作。
at
可以设置在指定的时间执行指定的命令,与crontab命令不同,通过at命令定义的任务,只能运行一次
常见用法:
3天后的凌晨2点运行此命令
查看当前所有的at任务,同样使用-l参数:
删除指定的任务,需要先查看任务的id,比如上图的任务id是1:
其他常见设置
三个周后的上午10点开始运行这个任务at 10:00 + 3 weeks /tmp/backup.sh
明天下午4点运行这个任务at 4pm tomorrow /tmp/test.sh:
下个月1号下午10点执行这个任务at 22:00 6/1/2018 /tmp/test.sh:
两个小时后执行这个任务at now + 2 hours /tmp/test.sh:
30分钟后运行这个任务at now + 30mins /tmp/test.sh:
查看我们刚才设置的任务: