博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux下任务调度服务crond使用
阅读量:2425 次
发布时间:2019-05-10

本文共 2459 字,大约阅读时间需要 8 分钟。

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

crond服务

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

service crond statusservice crond startservice crond stopservice crond restartservice 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:30与6: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的形式发送给rootHOME=/         <==此shell所在的home目录*/2 * * * * root sh /home/test/crond/test.sh > /dev/null 2>&1

转载地址:http://kkbmb.baihongyu.com/

你可能感兴趣的文章
MySQL查询优化-explain
查看>>
Java 反射和动态代理真的没那么高深,一起来看看就知道了
查看>>
Lucky
查看>>
ERP100 論壇,ORACLE ERP
查看>>
ORA-600
查看>>
不止 5G 和鸿蒙,华为最新大招,扔出 AI 计算核弹
查看>>
【早报】做Java半年,挣的不如AI 1个月?第二句泪目..
查看>>
反转!2019程序员吸金榜来了,AI程序员刷爆了..
查看>>
学Python后到底能干什么?网友:我太难了
查看>>
华为、BAT力捧!程序员:我彻底慌了...
查看>>
刷爆了!BAT这场AI芯片之战,你更支持谁?
查看>>
定了!刚面完AI岗位,这些题全都考了!程序员:有黑幕!
查看>>
GitHub 热榜第一!这个 Python 项目超 8.4k 标星,网友:太实用!
查看>>
阿里云部署Django项目(nginx+uWSGI)
查看>>
程序员必看,这本深度学习宝典刷爆IT圈!
查看>>
python学习心得体会(一)
查看>>
程序员薅羊毛神器来了!
查看>>
自学 Python后,自己一个人可以通过此技能挣什么钱?
查看>>
Java三种面试者是面试官最讨厌的,见之即毙!
查看>>
当程序员要具备什么条件?
查看>>