`

Unix + OS AIX Crontab

    博客分类:
  • OS
阅读更多

Linux 中 crontab 详解及示例

http://darkmasky.iteye.com/blog/224891

http://blog.chinaunix.net/u/31547/showart_438018.html

cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:

 

/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置

 

你也可以将这个服务在系统启动的时候自动启动:
在/etc/rc.d/rc.local这个脚本的末尾加上:
/sbin/service crond start

现在Cron这个服务已经在进程里面了,我们就可以用这个服务了,Cron服务提供以下几种接口供大家使用:

 

1、直接用crontab命令编辑

 

cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:

crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除某个用户的cron服务
crontab -e //编辑某个用户的cron服务


比如说root查看自己的cron设置:crontab -u root -l
再例如,root想删除fred的cron设置:crontab -u fred -r
在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e
进入vi编辑模式,编辑的内容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt

这个格式的前一部分是对时间的设定,后面一部分是要执行的命令,如果要执行的命令太多,可以把这些命令写到一个脚本里面,然后在这里直接调用这个脚本就可以了,调用的时候记得写出命令的完整路径。时间的设定我们有一定的约定,前面五个*号代表五个数字,数字的取值范围和含义如下:

 

分钟 (0-59)
小時 (0-23)
日期 (1-31)
月份 (1-12)
星期 (0-6)//0代表星期天

 

除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"*/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。以下举几个例子说明问题:

每天早上6点

0 6 * * * echo "Good morning." >> /tmp/test.txt //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。

每两个小时

0 */2 * * * echo "Have a break now." >> /tmp/test.txt

晚上11点到早上8点之间每两个小时,早上八点

0 23-7/2,8 * * * echo "Have a good dream:)" >> /tmp/test.txt

每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点

0 11 4 * 1-3 command line

1月1日早上4点

0 4 1 1 * command line

每次编辑完某个用户的cron设置后,cron自动在/var/spool/cron下生成一个与此用户同名的文件,此用户的cron信息都记录在这个文件中,这个文件是不可以直接编辑的,只可以用crontab -e 来编辑。cron启动后每过一份钟读一次这个文件,检查是否要执行里面的命令。因此此文件修改后不需要重新启动cron服务。

2、编辑/etc/crontab 文件配置cron

cron服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次/etc/crontab,因此我们配置这个文件也能运用 cron服务做一些事情。用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。此文件的文件格式是:

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

 

MAILTO=root      //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号

HOME=/    //使用者运行的路径,这里是根目录

# run-parts

01 * * * * root run-parts /etc/cron.hourly //每小时执行/etc/cron.hourly内的脚本
02 4 * * * root run-parts /etc/cron.daily //每天执行/etc/cron.daily内的脚本
22 4 * * 0 root run-parts /etc/cron.weekly //每星期执行/etc/cron.weekly内的脚本
42 4 1 * * root run-parts /etc/cron.monthly //每月去执行/etc/cron.monthly内的脚本

大家注意"run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了。

--------------------------------------
基本格式 :
*  *  *  *  *  command
分 时 日 月 周 命令

第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

 

crontab文件的一些例子:

 

30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启lighttpd 。

 

45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重启lighttpd 。

 

10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重启lighttpd 。

 

0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启lighttpd 。

 

0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重启lighttpd 。

* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小时重启lighttpd

 

* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11点到早上7点之间,每隔一小时重启lighttpd

 

0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4号与每周一到周三的11点重启lighttpd

 

0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一号的4点重启lighttpd

 

AIX日志系统 日志的清理

http://yangbin210.iteye.com/blog/261592
errclear命令可以用来清理错误日志
并且默认情况下cron会每天清理错误日志
# crontab -l
0 11 * * * /usr/bin/errclear -d S,O 30
0 12 * * * /usr/bin/errclear -d H 90
0 15 * * *  /usr/lib/ras/dumpcheck >;/dev/null 2>;&1
显然,找上面的例子,S,O 类的错误会保留30天,而H的错误会保留90天
errclear 0   删除多有记录
errclear 7 删除7天以前的记录
smit errclear

 

 

记录cron的所有错误信息

可以在/etc/syslog.conf加入下面一行
cron.err      /var/cronerr.log
定义记录cron的err信息到/var/cronerr.log文件


IBM-AIX 系统常用命令

http://darkmasky.iteye.com/blog/224936

 

http://www.blogjava.net/luckyrobbie/archive/2006/03/27/37543.html

关闭aix的命令:shutdown ->正常关机,关闭所有服务. halt -> 相当于直接关闭电源.
重启aix:shutdown -Fr

查看出错信息:

errpt errpt -a | more -> 分页显示 errpt -a > /tmp/err01 输出到文件.
清除错误信息:

errclear 0

 

查看AIX系统上的错误日志

http://airong.iteye.com/blog/57989

在系统运行时,一些系统错误会记录在errlog 中,其中有些错误还会在终端上显示。检查错误日志可用以下命令:

#errpt|more 查看系统所有的记录  

IDENTIFIER   TIMESTAM P   T   C   RESOURCE_NAME  DESCRIPTION

E85C5C4C    0426104399   P   S   CFGLFT        SOFTWARE PROGRAM ERROR

2BFA76F6     0426104099   T   S   SYSPROC       SYSTEM SHUTDOWN BY USER

9D4CF6E7    0426104399   T   O   errdemon        ERROR LOGGING TURNED ON

1E2AC07E    0426103999   T   O   errdemon        ERROR LOGGING TURNED OFF

1E5EER4T     0423132999   T   O   clstrmgr         OPERATOR NOTIFICATION     

其中

IDENTIFIER 为错误编号,当需要检查详细信息时常会用到。

TIME STAMP 为时间标签,它记录的是出错时间,其格式: 月月日日时时分分年年

T Type , 它记录的是错误类型

P :为永久错误,需引起注意

    T :为临时错误。

C Class,  它记录的是错误种类,如

H : Hardware

S : Software

O : Errloger command messages

U : undetermined

 

RESOURCE_NAME   为错误来源

DESCRIPTION 为错误描述

#errpt -aj <IDENTIFIER> 查看系统详细记录内容

其中IDENTIFIER 为错误编号,如 #errpt -aj 0426104399

#errpt -dH              查看系统所有的硬件出错记录

 


# AIX 定时监控 磁盘空间报警和系统错误日志 问题
00 02 * * * /var/snlog/dislog
00 16 * * * /var/snlog/dislog

文件:dislog
内容:
#!/usr/bin/ksh
/var/snlog/disfs > /var/snlog/errlog`hostname`
errpt >> /var/snlog/errlog`hostname`
lsps -a >> /var/snlog/errlog`hostname`

文件:disfs
内容:
echo "==`hostname`=="
df |head -1;df|grep 100%;df|grep 99%;df|grep 98%;df|grep 97%;df|grep 96%;
printf "##########################################################################\n"

文件:errlogp6550b2
内容:
==p6550b2==
Filesystem    512-blocks      Free %Used    Iused %Iused Mounted on
/dev/fslv00    100663296   4015848   97%     8125     2% /db2data
##########################################################################
IDENTIFIER TIMESTAMP  T C RESOURCE_NAME  DESCRIPTION
F7FA22C9   0917162810 I O SYSJ2          UNABLE TO ALLOCATE SPACE IN FILE SYSTEM
38A8D4BB   0825181810 I H ent0           HEA PORT DOWN
38A8D4BB   0811172110 I H ent0           HEA PORT DOWN
38A8D4BB   0713171610 I H ent0           HEA PORT DOWN
38A8D4BB   0713165310 I H ent0           HEA PORT DOWN
38A8D4BB   0713162710 I H ent0           HEA PORT DOWN
Page Space      Physical Volume   Volume Group    Size %Used Active  Auto  Type
paging00        hdisk2            rootvg        3072MB    10   yes   yes    lv
hd6             hdisk3            rootvg        3072MB    10   yes   yes    lv

p6550b2/var/snlog#lsps -a
调页空间        物理卷           卷组         大小  %已使用  活动    自动  类型
paging00        hdisk2            rootvg        3072MB    11    是    是    lv
hd6             hdisk3            rootvg        3072MB    11    是    是    lv


Linux/Unix 下设置应用程序定时自动重启(以resin为例)

http://darkmasky.iteye.com/blog/224906

1.首先, 由于 resin 自动重启后不会主动加载Java环境变量,

        所以需要编辑resin/bin目录下的 httpd.sh, 配置其独立运行环境。

# vi httpd.sh         (注:首行注入以下内容) 

export JAVA_HOME=......   
export CLASSPATH=......      

export PATH=......  

 

2.然后, 编辑 crontab, 配置定时器。

# crontab -e       (注入如下内容)

0   1   *   *   *   /usr/local/resin/bin/httpd.sh   restart

(每天凌晨1点自动重启)

(注意 , 其中配置的时间以 # clock --show 显示时间作为参照物)

 

3. 保存后,检查配置内容

# crontab -l      

 

4. 重启 /etc/init.d/ 目录下的 crond, 使配置生效

# crond stop

# crond start

# crond restart

 

5. 查看 cron日志

# ls /var/log/cron*    (浏览日志文件)

# cat /var/log/cron    (查看详细内容)  

 

关于 crontab 的详解及示例,请参照:

http://darkma.iteye.com/admin/blogs/224891

 

 

end

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics