Linux下任务调度服务crond使用

cron是GNU/Linux提供的一种任务调度工具,它可以实现定时或者每个一段时间来执行指定的任务。cron利用crontab中存储的调度列表,来执行相关的定时或者周期性任务。

crond服务
绝大部分的Linux发行版本都带有cron命令。使用cron,必须先开启crond服务,crond是通过/etc/init.d/crond脚本启动,但我们可以让其他服务一样,通过以下命令查看/停止/开启crond服务。

service crond status
service crond start
service crond stop
service crond restart
service crond reload

crontab语法
“/etc/crontab “这个文件,给出了很好的示例

Example of job definition:
.---------------- minute (0 - 59)
|  .------------- hour (0 - 23)
|  |  .---------- day of month (1 - 31)
|  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
|  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
|  |  |  |  |
*  *  *  *  * user-name command to be executed
前面5个占位符是指定任务开始的时间或周期,user-name是执行命令的用户名,最后是待执行的命令。crontab的最小时间粒度是分钟,也意味着定时任务最多只能做到每分钟执行一次。
在表示时间的5个位置中,还有一些特殊的辅助字符,用以控制任务执行的粒度:
*(星号)代表任何时刻都接受的意思,例如 "0 * * * *"表示任何日期的每个小时整点执行后面的命令
,(逗号)代表分隔时段的意思,例如 "30 3,6 * * *"代表每天的3:306:30执行某个任务
-(减号)代表一段时间范围,例如 "20 8-12 * * *"代表每天的8点到12点的每小时20分进行某个任务
/n(斜线),n代表数字,代表每隔n单位的时间间隔,例如 "*/2 * * * *"代表每2分钟执行某个任务

cron编写自定义任务
cron会定期检查以下文件或目录,然后执行扫描到的任务:

/etc/anacrontab: system crontab is usually for running daily, weekly, monthly jobs.
/etc/cron.d/: where are system cronjobs stored for different users. 
/var/spool/cron: that’s mean spool directory for user crontables.
/etc/anacrontab,保存的使用的crontab,不便进行修改。

使用方法
Method1.编写符合格式的crontab文件,然后将文件放到/etc/cron.d/目录下,crond便会定期执行,例如,我们想定期执行某个脚本,编写crontab格式的文件,假设命名为:testcron,内容为:

#每两分钟执行一次"/home/test/crond/test.sh"这个脚本,使用root身份去执行,执行这条命令产生输出重定向到"/dev/null"
*/2 * * * * root sh /home/test/crond/test.sh > /dev/null 2>&1

将testcron放置到”/etc/cron.d/”目录下

Method2.使用”crontab -e”编辑,它会自动调用”vi”对调度列表进行编辑,仍以上述为例:

# crontab -e
*/2 * * * * sh /home/test/crond/test.sh > /dev/null 2>&1

注意,这次没有指定root用户,因为我们当前就是以root目录编辑和执行的,如果加上root,在我们的环境中将会出错,将可以能为收到这样的一份错误提示邮件:You have mail in /var/spool/mail/root
打开后,发现错误为:/bin/sh: root: command not found
事实上,将以root执行”crontab -e”,所产生的crontab文件会被写到 /var/spool/cron/root文件中,这也真是crond定期扫描的文件夹。
如果只是要增减cron调度列表,可以使用”crontab -e”编辑,关于crontab还有以下命令

# crontab -l   //列出所有用户的crontab列表
# crontab -l -u tester  //列出指定tester用户的crontab列表
# crontab -r   //清除所有用户的crontab列表
# crontab -r -u tester  //清除指定tester用户的crontab列表

Method3.编辑”/etc/crontab”,增加新的定时任务,不推荐,多用户进行编辑容易造成混乱

# cat /etc/crontab 
SHELL=/bin/bash    <==使用哪种shell接口
PATH=/sbin:/bin:/usr/sbin:/usr/bin <==执行文件搜寻路径
MAILTO=root    <==如果有额外的输出,以mail的形式发送给root
HOME=/         <==此shell所在的home目录

*/2 * * * * root sh /home/test/crond/test.sh > /dev/null 2>&1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值