您的位置:首页 > 运维架构 > Linux

Linux--crond与crontab详解

2017-07-08 22:05 246 查看

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-590-231-311-120-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.周与日,月不可同时并存
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息