[root@ysolin ~]# date +%F
2016-06-29
[root@ysolin ~]# echo 'date +%F' >scripts/date.sh
[root@ysolin ~]# cat scripts/date.sh
date +%F
[root@ysolin ~]# sh scripts/date.sh
2016-06-29
设置定时任务
[root@ysolin ~]# echo "#print date " >>/var/spool/cron/root
[root@ysolin ~]# echo "00 09,14 * * 6,7 /bin/sh /root/scripts/date.sh >/dev/null 2>&1" >>/var/spool/cron/root
[root@ysolin ~]# crontab -l |tail -2
#print date
00 09,14 * * 6,7 /bin/sh /root/scripts/date.sh >/dev/null 2>&1
注:确保调用的命令是可执行的;路径需要绝对路径
2、书写crond定时任务基本要领
(1)为定时任务命令加必要的注释
写定时任务规则时尽可能的加上注释(最好是英文英文注释),方便后期更高改,其他运维人员理解定时任务的内容
(2)执行脚本任务前加/bin/sh
执行定时任务时,如果是执行脚本,请尽量在脚本后面带上/bin.sh命令,防止脚本没有执行权限而出错
(3)定时任务命令或脚本结尾加>/dev/null 2>&1
2>&1表示让标准错误和标准输出一样,即把脚本正常和错误输出都都重定向到/dev/null,不记录任何输出。
>/dev/null 2>&1等价于1>/dev/null 2>/dev/null 等价于 &>dev/null
如果定时任务规则结尾不加>/dev/null 2>&1,很容易导致inode磁盘空间被占满,从而系统服务不正常。
(4)定时任务或层序最好在脚本里执行
(5)在指令用户下执行相关定时任务
需要root权限执行的任务可以登录到root用户然后设置,如果不需要root权限,可以登录到普通用户(也可以直接在root下c’ron’tab -u solin -e的方式直接设置)设置。不同用户环境问题:如果调用了环境变量/etc/profile (如生产环境中java程序的定时任务),最好在程序脚本中,将用的到环境变量重新export下
(6)生产任务程序不要随意打印输出信息
在开发定时任务程序或脚本时,在调试好脚本程序后,应尽量把DEBUG及命令输出的内容信息屏蔽掉,如果确实需要输出日志,可定向指定日志文件,避免产生系统垃圾。
(7)定时任务执行的脚本要规范路径/server/scripts
(8)配置定时任务规范操作过程,防止出错。
首先要在命令行操作成功,然后复制成功的命令到脚本里,减少配置定时任务错误;
然后测试脚本,测试成功后,复制脚本的规范路径到定时任务里;
现在测试环境下测试,然后正式环境规范部署。
3、系统定时任务配置
轮询日志
[root@ysolin ~]# ll /var/log/messages* #系统报错日志
-rw-------. 1 root root 201538 6月 29 19:48 /var/log/messages
-rw-------. 1 root root 200796 6月 26 03:49 /var/log/messages-20160626
[root@ysolin ~]# ll /var/log/secure* #安全信息和系统登录与网络连接的信息
-rw-------. 1 root root 8562 6月 29 23:43 /var/log/secure
-rw-------. 1 root root 6490 6月 26 01:45 /var/log/secure-20160626
[root@ysolin ~]# ls /etc/cron.daily/
logrotate
[root@ysolin ~]# cat /etc/cron.daily/logrotate # logrotate 程序是一个日志文件管理工具
#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
[root@ysolin ~]# cat /etc/logrotate.conf # logrotate 的配置文件
# see "man logrotate" for details
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
dateext
# uncomment this if you want your log files compressed
#compress
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
# system-specific logs may be also be configured here.
4、企业生产环境如何调试crond定时任务(个人建议)
(1)增加执行频率调试任务
在调试时,把任务执行周期缩短,测试出定时任务效果
规范的操作流程(开发和运维人员):
个人的开发配置环境è办公室的测试环境èIDC机房的测试环境èIDC机房的正式环境
(2)调整系统时间调试任务(不能用于生产环境)