1.Cron的启动与关闭
由于Cron是Linux的内置服务,可以用以下的方法启动.关闭这个服务:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置2.Cron配置文件
2.1全局配置文件
crontab在/etc目录下面存在cron.hourly,cron.daily,cron.weekly,cron.monthly,cron.d五个目录和crontab,cron.deny二个文件.
cron.daily是每天执行一次的job,cron.weekly是每个星期执行一次的job.cron.monthly是每月执行一次的job,cron.hourly是每个小时执行一次的job.cron.d是系统自动定期需要做的任务,但是又不是按小时,按天,按星期,按月来执行的,那么就放在这个目录下面.
/etc/crontab文件一般如下:
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly我们可在此文件中添加自己需要的cron job.
/etc/cron.deny文件就是用于控制不让哪些用户使用Crontab的功能.
2.2用户配置文件
每个用户都有自己的cron配置文件,通过crontab -e 就可以编辑,一般情况下我们编辑好用户的cron配置文件保存退出后,系统会自动就存放于/var/spool/cron/目录中,文件以用户名命名.
linux的cron服务是每隔一分钟去读取一次/var/spool/cron,/etc/crontab,/etc/cron.d下面所有的内容.
3.Cron命令格式
crontab [ -u user ] 文件
crontab [ -u user ] { -l | -r | -e }-u:指定某一用户
-e:执行文字编辑器来设定用户(当前用户或指定用户)时程表,内定的文字编辑器是vi.
-r:删除用户时程表.
-l:列出用户时程表.4.Cron文件格式
* * * * * command
分 时 日 月 周 命令第1列表示分钟1~59, 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令5.Cron文件使用说明
5.1 一般情况
当f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其余类推.
* * * * * /bin/usershell 每天每分钟执行一次/bin/usershell
当f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其余类推.0-12 * * * * /bin/usershell 每天每小时从0到12分钟每分钟执行一次/bin/usershell
当f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其余类推.* */2 * * * /bin/usershell 每天每2小时执行一次/bin/usershell
当f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其余类推.* 1,3,5,7 * * * /bin/usershell 每天每逢1,3,4,7点执行一次/bin/usershell
5.2. 冲突逻辑
日期可以用月限定,也可以用“星期”指定,如果两个段有冲突,那么,第六段的命令将在匹配任何一个的情况下都运行,比如
"30 4 1,15 * 5",将在每月的1号和15号加每个周五,上午4:30运行.
5.3. 符号"%"
"%"在Cron文件中,有"结束命令行","换行","重定向"的作用,假如不需要"%"的特殊作用,需要使用转义符转义.
5.4. @reboot
这个不需要理解,为了达到在开机后运行,且只运行一次的目的.除了这个,也无法通过前五段的设置来实现.
@annually也是这个功能.
至于@yearly,@monthly等等其实都可以用上面的五段来设置.
然后我自己写了一个小例子做了下测试:
使用crontab -e进行编辑,内容为:
*/2 * * * * echo "i am crontab" >> /home/zhang/hello
这样隔两分钟就会往hello这个文件里写i am crontab
我自己写了一个脚本task.sh,直接运行task.sh时可以运行,可是加到crontab里就有运行了,后来我查看了网上的解决方法,终于解决了,先来看一下我原来写的task.sh脚本吧:
#!/bin/sh
java -jar offergateway.biz.offer-1.0-SNAPSHOT.jar
crontab定时任务的写法为:
* * * * * /task.sh
后来我查了网上说要运行crontab,必须使用绝对路径,然后我把路径都改成绝对路径了。
在crontab的执行环境变量中,没有相应用户设置的环境变量,你需要手动设置一下环境变量,才能让它生效。于是我把上面的脚本改成:
#!/bin/sh
. /etc/profile
java -jar /home/zhang/offergateway.biz.offer-1.0-SNAPSHOT.jar
crontab也改成绝对路径:
* * * * * sh /home/zhang/task.sh
哈哈,成功了~~happy~~
douban.com/note/356743086/
douban.com/note/356743107/
douban.com/note/356743135/
douban.com/note/356743150/
douban.com/note/356743186/
douban.com/note/356743202/
douban.com/note/356743234/
douban.com/note/356743265/
douban.com/note/356743282/
douban.com/note/356743333/
douban.com/note/356743372/
douban.com/note/356743398/
douban.com/note/356743428/
douban.com/note/356743449/
douban.com/note/356743461/
douban.com/note/356743485/
douban.com/note/356743497/
douban.com/note/356743516/
douban.com/note/356743557/
douban.com/note/356743612/
douban.com/note/356743635/
douban.com/note/356743653/
douban.com/note/356743689/
douban.com/note/356743694/
douban.com/note/356743748/
douban.com/note/356743759/
douban.com/note/356743783/
douban.com/note/356743806/
douban.com/note/356743838/
douban.com/note/356743910/
douban.com/note/356743936/
douban.com/note/356743955/
douban.com/note/356743967/
douban.com/note/356743979/
douban.com/note/356743986/
douban.com/note/356744028/
douban.com/note/356744048/
douban.com/note/356744073/
douban.com/note/356744093/
douban.com/note/356744155/
douban.com/note/356744164/
douban.com/note/356744209/
douban.com/note/356744227/
douban.com/note/356744258/
douban.com/note/356744271/
douban.com/note/356744298/
douban.com/note/356744323/
douban.com/note/356744352/
douban.com/note/356744399/
douban.com/note/356744487/
douban.com/note/356744511/
douban.com/note/356744535/
douban.com/note/356744540/
douban.com/note/356744565/
douban.com/note/356744590/
douban.com/note/356744635/
douban.com/note/356744655/
douban.com/note/356744690/
douban.com/note/356744725/
douban.com/note/356744759/
douban.com/note/356744785/
douban.com/note/356744819/
douban.com/note/356744848/
douban.com/note/356744866/
douban.com/note/356744893/
douban.com/note/356744936/
douban.com/note/356744940/
douban.com/note/356744968/
douban.com/note/356744999/
douban.com/note/356745065/
douban.com/note/356745100/
douban.com/note/356745159/
douban.com/note/356745178/
douban.com/note/356745201/
douban.com/note/356745233/
douban.com/note/356745252/
douban.com/note/356745281/
douban.com/note/356745302/
douban.com/note/356745343/
douban.com/note/356745374/
douban.com/note/356745396/
douban.com/note/356745433/
douban.com/note/356745455/
douban.com/note/356745487/
douban.com/note/356745500/
douban.com/note/356745535/
douban.com/note/356745547/
douban.com/note/356745565/
douban.com/note/356745643/
douban.com/note/356745672/
douban.com/note/356745703/
douban.com/note/356745737/
douban.com/note/356745744/
douban.com/note/356745750/
douban.com/note/356745766/
douban.com/note/356745771/
douban.com/note/356745815/
douban.com/note/356745835/
douban.com/note/356745911/
douban.com/note/356745944/
douban.com/note/356745950/
douban.com/note/356745994/
douban.com/note/356746001/
douban.com/note/356746016/
douban.com/note/356746029/
douban.com/note/356746036/
douban.com/note/356746046/
crontab 不执行的原因解析
最新推荐文章于 2022-11-01 18:18:55 发布