Linux--crond与crontab详解

来源:互联网 发布:网络上dm是什么意思 编辑:程序博客网 时间:2024/05/29 15:34

crond

循环执行的例行性的工作调度是由crond这个系统服务来控制的。
换句话说crond是Linux用来定期执行程序的命令。安装完成系统之后,默认便会启动此任务调度命令。crond命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

crontab

crontab是你要定时执行的服务,你可以编辑/etc/crontab来修改你要的服务。

crontab是新建循环型工作调度的命令,为了安全性问题,我们可以限制使用crontab的用户账户,使用的限制数据有:

  1. /etc/cron.allow
    将可以使用crontab的账号写入其中,若不在这个文件内的用户则不可使用crontab;

  2. /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.周与日,月不可同时并存

原创粉丝点击