我们可以利用cron进行相关的事件调度,cron可以在系统后台自动运行,cron利用的是一个cron表的文件,这个文件中存储了需要执行的脚本以及执行时间,我们可以利用其在某个时间段执行设置好的命令
所有的GNU/Linux发行版都包含了cron调度工具,只要我们在cron表中写入条目, 我们在cron表中写入条目,对应的命令就会在指定的时间去执行,命令crontab用来添加调度条目
下面的首先是cron表达式的构成
* * * * * 命令(脚本)
分钟 小时 天 月 工作日(0-6) |
*指定在每一个时间段内执行
一些编写的技巧诸如,使用逗号进行分割,来表示在第几时间段运行,分钟级别中写入(5,10),就是第5分钟 和 第10分钟,如果时间特定的间隔执行 */5 就是每5分钟执行一次
例句:
02 * * * * /home/user/test.sh
每天的每小时的第2分钟执行test.sh
每天的第5,6,7点来执行脚本
00 5,6,7 * * /home/usr/test.sh
每天的凌晨2点来关闭计算机
00 02 * * * /sbin/shutdown -h
如果手动的运行crontab,使用选项-e输出cron作业
crontab -e
02 02 * * * /home/user/print.sh
输入crontab -e,会打开一个文本编辑器,让用户输入cron作业并保存,这项作业会在指定的时候调度执行
我们在脚本中调用crontab进行任务调度
如果不想写vi编辑器,那可以使用方式如下
1.创建一个文本文件 task.cron 写入cron作业
将文件名作为命令参数,运行crontab 比如一个文本 task.cron
crontab task.cron
2.在输入行内指定cron作业
crontab << EOF
02 * * * * /home/user/pring.sh
EOF
执行cron作业所需要的权限同crontab命令所需要的权限相同,如果需要高等级的权限,就需要使用超级用户身份执行crontab
在cron作业中指定的命令需要完整路径,这是因为执行cron作业时候的环境和终端的环境不同,而且需要设置环境变量
指定合适的环境变量才能运行,我们可以再用户的cron表中插入一行变量赋值语句来设置环境变量
比如,需要设置HTTP代理环境
http_proxy,可以用下面的方法完成
crontab<<EOF
http_proxy=http://192.168.03.11:3128
00 * * * * /home/usr/print.sh
查看cron表
可以使用选项-l 来列出现有的cron表的内容
crontab -l
这样会列出当前用户的cron表中的条目
crontab -l -u slynux
当使用-u的时候,需要超级管理员你的权限
移除cron表达式
使用crontab -r 可以移除当前用户的cron表达式