crond
循环执行的例行性的工作调度是由crond这个系统服务来控制的。
换句话说crond是Linux用来定期执行程序的命令。安装完成系统之后,默认便会启动此任务调度命令。crond命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。
crontab
crontab是你要定时执行的服务,你可以编辑/etc/crontab来修改你要的服务。
crontab是新建循环型工作调度的命令,为了安全性问题,我们可以限制使用crontab的用户账户,使用的限制数据有:
/etc/cron.allow
将可以使用crontab的账号写入其中,若不在这个文件内的用户则不可使用crontab;/etc/cron.deny
将不可以使用crontab的账号写入其中,若未记录袋这个文件当中的用户,就可以使用crontab;
以优先级来说,/etc/cron.allow比/etc/cron.deny要优先,而判断上面,这两个文件只选择一个来限制,因此,建议保留一个。一般来说系统默认保留的是/etc/cron.deny。
crontab命令的格式为:crontab [-u username] [-l | -r | -e | -i]
参数如下表:
参数 | 含义 |
---|---|
-u | 只有root才可以进行这个任务,也即帮其他用户新建/删除crontab工作调度 |
-e | 编辑用户的crontab文件 |
-l | 显示用户的crontab文件的内容 |
-r | 从crontab目录中删除用户的crontab文件 |
每项工作的格式都是具有六个字段,这六个字段的意义
如下表:
代表意义 | 分钟 | 小时 | 日期 | 月份 | 周 | 命令 |
---|---|---|---|---|---|---|
数字范围 | 0-59 | 0-23 | 1-31 | 1-12 | 0-7 | 要输入的命令 |
这里着重提一下周,0与7都代表周天。
另外还有一些特殊字符。
特殊字符 | 代表意义 |
---|---|
*(星号) | 代表任何时刻都接受的意思 |
,(逗号) | 代表分割时段的意思。举例,如果要执行的工作是3:00与6:00时,就会是:0 3,6 * * * command |
-(减号) | 代表一段时间范围内,举例,8点到12点之间的每小时的20分都进行一项工作:20 8-12 * * * command |
/n(斜线) | 那个n代表数字,即是每隔n单位间隔的意思,例如没5分钟进行一次:* /5 * * * *command |
crontab用法
例:我们想启动一个定时任务,每分钟向文件里输出一个hello,world。
crontab -e // 进入定时服务编辑模式,每个工作都是一行
*/1 * * * * /bin/echo hello,world >> /home/xjw/test.txt
例1:假如你有女朋友了,并且你的女朋友生日是5.2号,你想在5.1号的23:59给她发一封信,这一封信的内容已经在/home/xjw/lover.txt写好了
crontab -e //直接进入编辑模式
59 23 1 5 * mail hjz < /home/xjw/lover.txt
例2:每分钟执行一次/home/xjw/test.sh
crontab -e//进入编辑模式
*/1 * * * * /home/xjw/test.sh
系统的配置文件:/ect/crontab
这个crontab -e是针对用户的cron来设计的,基本上,cron这个服务的最低检测限制是“分钟”,所以cron会每分钟去读取一次/etc/crontab/与/var/spool/cron里面的数据内容,因此,只要你编辑完/etc/crontab这个文件,并且将它保存起来之后,那么cron的设置就会自动来执行了!
我们进入/ect/crontab
一些很重要的注意事项
比如:如果有四个工作都是要五分钟进项一次,那么这四个操作都要同时在一个点执行吗?无疑,这样会消耗大量的资源。
所以 应注意:
1.资源分配不均的问题
2.取消不要的输出选项
3.安全的检验
4.周与日,月不可同时并存