Chinaunix首页 | 论坛 | 博客
  • 博客访问: 637353
  • 博文数量: 110
  • 博客积分: 2352
  • 博客等级: 大尉
  • 技术积分: 1253
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-29 14:00
文章分类
文章存档

2018年(1)

2013年(20)

2012年(89)

分类: LINUX

2012-03-29 15:15:10

一、Cront的使用方法

1.cron服务相关操作

service crond start 启动

service crond stop停止

service crond restart 重启服务

service crond reload重新加载

若发现cron开机时不自动启动….把cron设为在开机的时候自动启动的方法.在 /etc/rc.d/rc.local 脚本中加入service crond start。

2.Cron自带命令

看当前用户的crontab,输入 crontab -l;

编辑crontab,输入 crontab -e;

删除crontab,输入 crontab -r。

5个 *   依次代表分钟(0—59) ,小时(1---23),日期(1—31) ,月(1---12), 星期(0---6)
crontab [ -u user ] file 
crontab [ -u user ] { -l | -r | -e } 
说明 : 
crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。
-u user 是指设定指定user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。
如果不使用 -u user的话,就是表示设定自己的时程表。------------------------------------

如果希望每隔2小时的16分执行命令touch filename, 可以写成"16 */2 * * * root touch filename" ,
如果每天1到12点的整点执行,写成"0 1-12 * * * root touch filename", 
若写成"0 1,3,5 * * * root touch filename"则为1点3点5点执行,这里空格是分、时、日、月、星期的分隔符。
crontab命令用来设定/var/spool/cron文件夹下的设置文件,格式同上。因为文件名就为用户名,所以上面的root可以省略。如实现每小时的50分启动xmms播放音乐,用户名为summer,则运行"crontab -e"出现vi编辑器,键入i编辑,输入"50 * * * * ~/mycrontab",键入Escape键,键入":wq"保存退出,在/var/spool/cron文件夹下会生成summer文件,运 行"crontab -l"可以查询。上面的mycrontab是自定义的bash shell脚本,可以为
 export DISPLAY=:0.0
/usr/bin/xmms /home/summer/Music/mp3 
这里需要环境变量DISPLAY,否则无法运行xmms。

3. 使用cron来定期执行任务(系统主要的调度进程)
使用crond (cron监控程序)来定期运行一些任务,比如备份日志、数据库、把日志发送到自己邮箱等等操作都可以又定期运行程序来完成。
crond是个脚本,每次Linux启动的时候都自动起到该脚本,该脚本是 /etc/rc.d/init.d 下面的,每次系统启动的时候就自动会启动该目录下的脚本。
     cron有两个配置文件,一个/etc/crontab,是一个全局配置文件,一组是crontab命令生成生成的配置文件,是属于用户级的。

一般对管理员来说,只要使用全局配置的/etc/crontab就配置文件就可以了,我们去打开配置文件看看:

我们稍微来分析一下这个文件:

/* 设置基于什么shell来运行,我们这里是基于bash shell */
SHELL=/bin/bash

/* 指定目录中有次文件的命令时,不需要完整目录路经 */
PATH=/sbin:/bin:/usr/sbin:/usr/bin

/* 使用cron实际工作时,见通过邮件来同志root用户 */
MAILTO=root

/* 与/etc/crontab配置文件相关的主目录为根目录 */
HOME=/

/* 好了,这里是关键是,下面的是要指定什么时间运行什么目录下的任务,run-parts命令是运行指定目录下的每个脚本 */
# run-parts

/* 这一句是在每天每小时过后一分钟运行/etc/cron.hourly目录中的每个脚本文件 */
01 * * * * root run-parts /etc/cron.hourly

/* 在每天凌晨4点2分运行/etc/cron.daily目录中的每个脚本文件 */
02 4 * * * root run-parts /etc/cron.daily

/* 在每个星期天凌晨4点22分运行/etc/cron.weekly目录中的每个脚本文件 */
22 4 * * 0 root run-parts /etc/cron.weekly

/* 在每个月的第一天凌晨4点42分运行/etc/cron.monthly目录中的每个脚本文件 */
42 4 1 * * root run-parts /etc/cron.monthly


任何字段中的星号是通配符,例如,如果第一个字段包括星号,则特定若无其事在可能的每一分钟运行。如果要指定时间范围,比如上午8点到下午4点,则可以见第二个字段设置为8~16。如果要隔一天运行任务,则可以将第三个字段设置为*/2。可以看出,如果五个字段(minute、hour、day、month、day of week) 之后,cron中的每个字段就没什么神秘之处了。


4. 用户自己的cron

用户也可以计划用户自己的cron任务,比如他想要在半夜整理他的文件,然后发送邮件给自己,只要这个用户他没有在/etc/cron.deny表中

就可以使用crontab -e命令来启动自己的cron文件。

5. 对cron的访问控制
默认情况下,所有用户都能访问cron工具,要对cron进行访问控制,则可以生成/etc/cron.allow与/etc/cron.deny文件。
(1)这两个文件都不存在时,每个用户都可以访问cron工具]
(2)存在/etc/cron.allow文件时,则只有cron.allow文件中允许的用户才能访问cron工具,如果也有/etc/cron.deny文件,则忽略cron.deny文件

二、 使用at命令定期运行程序

1. 使用cron运行任务
cron任务的缺点是计划要经常运行,假如我们只是想要让特定任务运行一次呢?那么,这时候就要用到at监控程序了。设置at命令很简单,指示定运行的时间,那么就会在哪个时候运行。at类似打印进程,会把任务放到/var/spool/at目录中,到指定时间运行它
at命令相当于另一个shell,运行at time命令时,它发送一个个命令,可以输入任意命令或者程序。at now + time命令可以在指示任务。

假设处理一个大型数据库,要在别人不用系统时去处理数据,比如凌晨2点5分。那么我们就应该先建立/home/mj/airplane脚本管理数据库,计

划处理/home/mj/air-safe文件中的结果。正常方式是这样启动下列命令:

# at 2:05 tomorrow
at> /home/mj/airplane > /home/mj/air-safe
at> Ctrl+D

AT Time中的时间表示方法
-----------------------------------------------------------------------
时间         例子                      说明
-----------------------------------------------------------------------
Minute       at now + 5 minutes        任务在5分钟后运行
Hour         at now + 1 hour           任务在1小时后运行
Days         at now + 3 days           任务在3天后运行
Weeks        at now + 2 weeks          任务在两周后运行
Fixed        at midnight               任务在午夜运行
Fixed        at 10:30pm                任务在晚上10点30分开始
Fixed        at 1:00 12/20/04          任务在2004年1***凌晨1点开始
-----------------------------------------------------------------------

atq  可以使用atq命令可以看到目前等待执行的任务,输出提供了任务号、用户和任务执行时间等信息。
删除一个at任务比较简单,使用atrm命令就可以轻松解决。(例如:atrm job 8)

# at rm 8    就删除了队列号为8的at任务了。


三、batch命令处理批处理任务

这个具体就不说了,该命令类似 at -q b

Crontab命令使用的文件具体位置: /Var/Spool/Cron/Crontabs 目录下,每个用户都有其对应的名字,比如,root用户的文件为root.

直接登陆窗口界面 
# crontab -l root file://查看作业 
/etc/init.d/cron stop file://停止进程 
在CONSOLE 中熟命令 crontab -e root 
crontab -e root file://编辑加入要执行的代码 
0-59 * * * * date >> /export/home/keven/keven.txt file://加入次行在末尾,每分钟执行一次

"格式如下: 
(1)  (2)  (3)  (4)  (5)  (6) 
0   0   *   *   3   date >> /export/home/keven/keven.txt 
1. 分钟 (0-60) 
2. 小时 (0-23) 
3. 日 (1-31) 
4. 月 (1-12) 
5. 星期 (0-6) 
6. 所要运行的程序 
如1-59分钟,1-24 小时

0 18-23 0 0 0-6 file://每天的18-23点执行,0-6为周日到周六

/etc/init.d/crond(Linux为crond sunos为cron) start file://启动进程 
# crontab -l root 
查看作业是否加入执行队列。 
不行退出到登陆界面,再次登陆进入,还加载就reboot

你是不是直接编辑用户的cron文件呀? 
如果是当然不运行,cron demon是在启动的时候才读一次配置文件. 
如果你是后加的JOB 要用crontab -e来编辑用户的cron. 
要不你 kill -HUP cron的进程ID. 
重新启动这个进程. 
每5分钟做一次必须写成5,15,20,25,30,35,40,45,50,55 * * * * 
=================================== 
"格式如下: 
(1)  (2)  (3)  (4)  (5)  (6) 
0   0   *   *   3   /usr/bin/updatedb 
1. 分钟 (0-60) 
2. 小时 (0-23) 
3. 日 (1-31) 
4. 月 (1-12) 
5. 星期 (1-7) 
6. 所要运行的程序 
但是我设成 1 0 0 0 0 /usr/bin/ps 
希望能自动在一分钟之后显示进程。但是没有成功。

=============================================== 
15 1 * * * /opt/bin/ta.sh /opt/aadir > /dev/null
输出重定向到/dev/null, 否则会mail到你的邮箱 
> /dev/null 的意思就是丢弃所有的输出内容,否则就会将输出内容发送到执行该命令的用户信箱中。 
这种写法只能把标准输出送到/dev/null中,如果有错误产生的话,还是会送到信箱里的。下面的写法才可以丢弃所有的输出内容: 
15 1 * * * /opt/bin/ta.sh /opt/aadir > /dev/null 2>&1
------------------------


阅读(828) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:Vi和rm的简单使用方法

给主人留下些什么吧!~~