linux定时任务服务,linux 定时任务 crond 服务介绍

[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)调整系统时间调试任务(不能用于生产环境)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值