网站运营
位置:首页>> 网站运营>> 详解Linux下crontab的使用与注意事项

详解Linux下crontab的使用与注意事项

作者:Alliot  发布时间:2023-03-30 04:59:27 

标签:Linux,crontab,使用

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

0
投稿

猜你喜欢

  • 广东的今天在初冬的季节里也略有凉意,起风了我站在7楼的窗台上观望!望着马路上为生活奔波的人们.感觉到眼前很模糊,因为此时的心情无法用语言来形
  • Discuz!7.0中,对于会员来说,主题关注功能非常实用。在逛论坛的时候,发现了一个自己感兴趣的帖子,想跟踪此帖,关注此贴的发展,并且参与
  • 在讨论Web站点安全之前,了解Web的技术原理,对于Web安全工作者而言应该是有益处的。一、Web技术简介World Wide Web称为万
  • Microsoft JET Database Engine (0x80004005) 未指定的错误的完美解决[转贴]一般情况下asp可以正常
  • 默认情况下windows2003是没有安装的,我们必须手工添加。POP3服务组件在“添加/删除windows组件—电子邮件服务”下,它共包括
  • vmware虚拟机运行ubuntu等卡慢虚拟机的运行速度有一部分原因决定于你的物理机的配置,如果你的物理机配置不高,建议不要运行虚拟机,那样
  • 康盛创想最新发布的Discuz! 7.0中,最大的界面风格改进之一就是边栏的使用,边栏可以在论坛页面的侧边显示自定义模块的资料,丰富论坛内容
  • Alexa 排名对于每个建站的朋友来说都不陌生了,它是目前常用来评价某一网站访问量的一个重要指标。虽然人们对他的算法颇有责疑(它只对安装了&
  • 有不少发布商询问各种推介广告的问题,我们今天就常问问题进行一个集中解答,希望对您有所帮助。推介广告是如何付费的?答:推介广告不同于普通的针对
  • 前言VMware在设置centos6共享文件夹的时候,只需要安装vmware-tools,然后在vmware里面配置共享文件夹即可,但是对于
  • 中国电信最近对于Google若干服务(Google工具栏、Google拼音、Google Picasa等)的屏蔽是一个很特别的屏蔽,因为这些
  • 现在网络安全越来越引起人们的重视,我们先来了解一下,什么是网页恶意代码。网页恶意代码(又称网页病毒)是利用网页来进行破坏的病毒,使用一些SC
  • 发现最近我的博客上的QQ币骗人的广告越来越多了,我们知道,QQ币广告基本上全都是骗人的,投放这种虚假广告,不仅仅广告单价极低,而且上当受骗的
  • 更新!一个没有采用最新的安全补丁进行更新的系统会很快称为攻击者的目标。已经完成配置安全系统所需的所有工作之后,要记住:CGI脚本将是最大的安
  • 问:SiteWeaver文章默认有一个固顶的选项,将文章在文章列表中实现置顶。很多用户都在探究如何在SiteFactory上实现同样的功能。
  • Grep的多次管道过滤问题在日常的开发过程中,我们利用grep可以方便快捷的查找感兴趣的日志内容,极大地提升了开发和排错效率。但是有时候,我
  • 淘宝会员一次注册,两种身份!今起,淘宝网1.45亿会员将无需注册,即可直接登入淘宝网以外的电子商务平台进行购物啦!据了解,近期淘宝网开放了外
  • 内容摘要:虽然 LAMP 组合很不错,但是如果想要架设一台同时支持 PHP、ASP、ASP.NET、JSP、P
  • Godaddy主机用户如果想在服务器上恢复干净设置,可以重置服务器。重置会擦除服务器的硬盘驱动上的所有内容。服务器恢复到购买它时的状态。可以
  • 鉴于脚本程序可能带来的危险,WebMail系统完全有必要禁止html邮件中的脚本程序。禁止脚本程序的基本做法就是过滤掉html源程序中能够使
手机版 网站运营 asp之家 www.aspxhome.com