详解Linux下crontab的使用与注意事项
作者:Alliot 发布时间:2023-03-30 04:59:27
crontab是一个用于设置周期性被执行的指令。其守护进程为crond. crontab分为两种配置模式,一种为用户级的crontab,一种为系统级的crontab,这里我们分开来谈。
用户级crontab
用户使用新建循环型工作调度时,使用的crontab命令,crontab -e所有用户都可以使用,普通用户也只能为自己设置计划任务。然后自动写入/var/spool/cron/usename
用户控制文件
/etc/cron.allow :
将可以使用crontab的用户写入,仅该文件内的用户可以使用crontab,相当于白名单
/etc/cron.deny :
将禁止使用crontab的用户写入,仅该文件内的用户禁止使用crontab,相当于黑名单
其中/etc/cron.allow优先级大于/etc/cron.deny,为避免混淆,建议二者仅使用一个。
命令
crontab [-u usename] [-l|-e|-r]
参数:
-u:只有root才能进行这个任务,也即帮其他用户新建/删除crontab工作调度
-e: 调用vi编辑crontab的工作内容
-l: 列出crontab的工作内容
-r: 删除所有crontab的工作内容。
语法
# .---------------- 分钟 (0 - 59)
# | .------------- 小时 (0 - 23)
# | | .---------- 日期 (1 - 31)
# | | | .------- 月份 (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- 周几 (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * 命令
语法与系统级crontab很相似,不同点在于此处不需要指定执行用户,而系统级crontab(/etc/crontab)中需要。
举例如下:
*/10 * * * * /home/test.sh #每隔10分钟就以当前用户执行一次/home/test.sh脚本
0 2 * * * /home/test.sh #每天2点
0 5,17 * * * /home/test.sh #每天5点、17点
0 17 * * sun /home/test.sh #每周日17点
0 4,17 * * sun,mon /home/test.sh#每周一、周日
@reboot /home/test.sh #系统重启时
这里推荐一个在线小工具:在线生成cron表达式
系统级crontab
系统级crontab一般用于系统的例行性任务,这种方法更加方便与直接直接给其他用户设置计划任务,而且还可以指定执行shell等。配置文件为/etc/crontab,该文件仅root用户能够编辑。
编辑/etc/crontab
默认内容如下:
SHELL=/bin/bash 这里是指定使用哪种shell接口
PATH=/sbin:/bin:/usr/sbin:/usr/bin 这里指定文件查找路径
MAILTO=root 如果有额外的STDOUT,以email将数据送给谁,可以指定系统用户,也可以指定email地址,如alliot@iots.vip
# For details see man 4 crontabs
# Example of job definition:
# .---------------- 分钟 (0 - 59)
# | .------------- 小时 (0 - 23)
# | | .---------- 日期 (1 - 31)
# | | | .------- 月份 (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- 周几 (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * 用户名 命令
即:
分 时 日 月 周 执行用户 任务命令
比如我要添加一个计划任务,每隔10分钟就以root身份执行一次/home/test.sh脚本,则在后面添加:
*/10 * * * * root /home/test.sh
这里注意,不要漏掉执行者root(用户级的crontab中不需要指定执行者),否则会在/var/log/cron日志中出现”ERROR (getpwnam() failed)”错误,计划任务无法正常运行。
重启服务
一般来说Linux下的crontab会自动帮我们每分钟重新读取一次 /etc/crontab 的例行工作事项,但是出于某些原因或者是其他的Unix系统中,由于crontab是读到内存当中的,所以栽修改完 /etc/crontab 之后,可能并不会马上执行,这时候需要重启crontab服务。
这里以CentOS为例:
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重载配置
service crond status //服务状态
如果是CentOS 7则:
systemctl restart crond.service //重启服务
systemctl start crond.service //启动服务
systemctl stop crond.service //停止服务
systemctl reload crond.service //重载配置
systemctl status crond.service //服务状态
其他注意事项
取消不需要的输出
当执行结果或者执行的选项中有输出的数据时,该数据会通过mail发送给MAILTO指定的账号,若某一个调度一直出错,同时mail服务出现问题(事实上我根本就没开这个服务),将会产生大量的文件于 /var/spool/clientmqueue/ ,所以最好是将crontab里面的命令后面加上> /dev/null 2>&1
2>:重定向错误。
2>&1:把错误重定向到输出要送到的地方。即把上述命令的执行结果重定向到 /dev/null ,即抛弃,同时,把产生的错误也抛弃。
检查日志
日志保存在 /var/log/cron 中
语法区别
crontab -e命令会检查语法,而vim编辑 /etc/crontab 则不会,这里注意的是,crontab -e不需要写执行者用户名,而 /etc/crontab 需要指定。
执行路径必须使用绝对路径,否则可能无法正常执行。
周与日、月不能共存,即你可以分别以周或者是日、月为单位进行循环,但不可指定“几月几号且为星期几”的模式工作。
参考资料
鸟哥的Linux私房菜
来源:https://www.iots.vip/post/linux-crontab.html
猜你喜欢
- 网易邮箱最近收不到GoDaddy发来的邮件,如果谁用的是网易邮箱,最好尽快修改到Gmail,QQ,foxmail,msn,live邮箱网易邮
- 互联网是丰富多彩的,基本上能够找到我们需要的资源,也正因为如此很多朋友都加入到站长的行列中来。在众多站长之间也会存在明争暗斗的事情。尤其是我
- 郁闷、研究、再郁闷、再研究。终于在首页成功按分类调用成功分类信息了其实在调用时加入模型类型频道标签,分类信息的为channelid='
- 一、一个最简单的Server端例子众所周知,一个Server端Socket的建立,需要socket、bind、listen、accept四个
- 今天有个朋友找我,说他们公司网站服务器不稳定,想从原来服务商转出来,重新找个虚拟主机提供商的,但原来的服务公司不给他他们公司网站的源代码,而
- 和其他操作系统一样,监听队列(listen queue)是首要限制条件。下面是Aaron Gifford 对BSDI 1.x,2.x和Fre
- 当我在终端敲下这条命令的时候,系统就提示telnetd:apt-get:Package has no installationsudo ap
- 一、事件发生春节长假刚过完,WEB就出现故障,下午1点吃完回来,立即将桌面解锁并习惯性的检查了Web服务器。通过Web服务器性能监视软件图像
- 最近在调研关联数据的一些东西,需要用到rdf数据库,所以接触了virtuoso数据库。安装的坑其实并不多,之前在windows 10上安过一
- 自己接触优化有一段时日了,经常有不少朋友加我QQ,问我如何把他说的关键字做到百度或者谷歌首页第一位,怎么跟他们说呢,我只能告诉他们,网站排名
- 对于一个新站来说,做友情链接是非常不错的一种推广网站的手段,只是这个链接到底该怎么做,不少人都是非常盲目的,许多站长在寻找外链时也会出现了许
- 内容摘要:Google AdSesne一直在努力寻找、测试新的广告方式,就像上次Simon发现AFC广告组中有连结组的新Googl
- 日前,诸多期待开展IPTV业务的网络视频公司因受困于牌照,版权等问题,前景难卜。记者采访到,有多家视频公司认为自身在短时期内不可能处理好版权
- 第十七届万维网大会(WWW2008)结束招待晚宴在北京人民大会堂举行,昨晚,来自全球的互联网界精英悉数出席。百度总裁李彦宏在晚宴中致辞,并在
- 随着浏览器的更迭越频繁功能越强大,很多以前只在特定客户端实现的功能也纷纷依托浏览器在网络上重生,网页办公套件、网页游戏、网页IM……一时之间
- 网站的运营和盈利说复杂也复杂,说简单也简单。往复杂了说,要考虑网站建设,库存,进货,防诈骗,客户服务,售后服务,运货,发货,人员管理,当然还
- #最关键参数,默认为5,修改为0 表示不要重发net.ipv4.tcp_synack_retries = 0#半连接队列长度net.ipv4
- 今天一个朋友问到Apache防盗链的效果以及破解Apache防盗链的问题,于是决定就写一写Apache的防盗链。找到Apache的配置文件,
- 11月4日消息,针对旗下游戏新作《绿色征途》自封国内首款绿色网游惹争议一事,巨人网络今日发表回应称,绿色网游应重视玩家利益。据悉,巨人网络为
- 一提到执行,就感到笔端很沉重,不知道从何说起。执行它本身不仅是一门丰富的学问,而且还是一整套非常具体的行为和艺术,于个人、于集体、于企业、于