转自:http://blog.csdn.net/ustcgy/article/details/5275096 crontab 用来任务定时调度,在 Linux 下可以通过创建文件 /etc/cron.allow 或者 /etc/cron.deny --1 修改文件 /etc/cron.deny 备注: 添加要限制的用户,只需要写入用户名即可。
[root@pgb etc]# service crond restart
备注:切换到 postgres 用户后,就不能使用 crontab 命令了。
1.Cron的启动与关闭 由于Cron是Linux的内置服务,可以用以下的方法启动.关闭这个服务: /sbin/service crond start //启动服务 2.Cron配置文件 2.1全局配置文件 crontab(cron table)在/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 我们可在此文件中添加自己需要的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 ] 文件 -u:指定某一用户 -e:执行文字编辑器来设定用户(当前用户或指定用户)时程表,内定的文字编辑器是vi. 4.Cron文件格式 * * * * * command 第1列表示分钟1~59, 每分钟用*或者 */1表示 5.Cron文件使用说明 5.1 一般情况 当f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其余类推. * * * * * /bin/usershell 每天每分钟执行一次/bin/usershell 0-12 * * * * /bin/usershell 每天每小时从0到12分钟每分钟执行一次/bin/usershell * */2 * * * /bin/usershell 每天每2小时执行一次/bin/usershell * 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~~ |
|