crond服务简要说明:
Crond是linux中用来定期执行命令或指定程序任务的一种服务或软件,一般情况下,我们安装完centos5/6 linux操作系统之后,默认会启动crond任务调度服务,crond服务会定期(默认每分钟执行一次)检查系统中是否要执行的任务工作,如果有,变回根据其预先设定的定时任务规则自动执行该定时任务工作,这个crond定时任务服务就相当于我们平时早起使用的闹钟一样。
crond服务相关的配置文件
/etc/crontab |
系统定时任务配置文 |
/var/spool/cron/root |
用户定时任务配置文件 |
/var/log/cron | 定时任务日志文件 |
/var/spool/postfix/maildrop | postfix服务邮件目录 |
/etc/cron.deny |
该文件中所列用户不允许使用crontab命令, |
/etc/cron.allow | 该文件中所列用户允许使用crontab命令,优先于/etc/cron.deny(两文件刚好相反) |
/server/scripts/ | 用户存放脚本指定目录 |
添加crontab所涉及到的主要命令
crontab(参数) | 含义 |
crontab -l |
crontab –l == cat /var/spool/cron/root |
crontab -e |
crontab –e == vim /server/scripts/root |
定时任务添加示例图
下面以简单例子来测试添加定时任务,如下:
[[email protected] /]#
mkdir -p /var/www/html <==创建环境
[[email protected] /]#
mkdir /data <==创建环境
[[email protected] /]#
touch /var/www/html/file{01..05}
[[email protected] /]# ls
/var/www/html
file01 file02
file03 file04 file05 <==创建环境
[[email protected] /]# cd
/var/www/ <==到打包目录的上一级目录打包
[[email protected] www]#tar zcf /data/html_$(date +%F-%T)_tar.gz ./html <==命令测试
[[email protected] www]# ls
/data
html_2016-06-01-23:19:07_tar.gz <==打包成功(命令测试成功)
[[email protected] www]# cd
/server/scripts/ 《==到指定路径写入脚本
[[email protected]
scripts]# vim test.sh <==写脚本
#!/bin/bash <==规范 表明这是shell脚本
cd /var/www/&&\ <==&&表示两者具有逻辑关系,\表示换行
tar zcf
/data/html_$(date +%F)_tar.gz ./html
~
:wq <==保存
[[email protected] www]#
/bin/sh /server/scripts/test.sh <==全路径测试该脚本
[[email protected] www]# ls
/data
html_2016-06-01-23:19:07_tar.gz html_2016-06-01-23:20:11_tar.gz <==测试成功
[[email protected] www]#
crontab -e <==将执行成功的脚本复制到定时任务
#time sync by beita
at 2010-2-1
*/5 * * * * /usr/sbin/ntpdate
asia.pool.ntp.org >/dev/null 2>&1
# Timing task test
2016-06-01
00 00 * * * /bin/sh
/server/scripts/test.sh &/dev/null
~
:wq
[[email protected] www]#crontab -l <==查看
#time sync by beita
at 2010-2-1
*/5 * * * * /usr/sbin/ntpdate
asia.pool.ntp.org >/dev/null 2>&1
# Timing task test
2016-06-01
00 00 * * * /bin/sh
/server/scripts/test.sh &/dev/null
因为环境变量造成定时任务结果输出不全的解决方案
原因:用户的定时任务的环境变量为/usr/bin:/bin
1. 脚本中所有的命令都使用全路径
2. 自[[email protected] scripts]# cat /server/scripts/iptest.sh
#!/bin/bash
source /etc/profile
IP=$(ifconfig eth0|awk -F ‘[ :]+‘ ‘NR==2{print $4}‘)
echo ${PATH}_${IP}_a1234566 >>/tmp/iptest.txt
定义PATH路径径 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
3. source /etc/profile
添加的环境变量
/usr/local/sbin:/usr/sbin:/sbin:/usr/bin:/bin