免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1728 | 回复: 5
打印 上一主题 下一主题

[系统管理] 系统定时执行脚本遇到的困惑 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-11-19 17:17 |只看该作者 |倒序浏览
先说下环境吧

主机名:orcle
系统:RHEL 6
软件:oracle 11G
在orcle上有个脚本,位于/tmp/backup.sh,执行这个脚本会对数据库进行expdp,导出的文件位于/tmp/data,并且会删除前一天导出来的dump文件,然后把最新导出的文件通过FTP上传到备份服务器上,以下是这个脚本的内容



[root@orcle data]# cat /tmp/backup.sh
#!/bin/sh

rq=`date +%y%m%d`
su - oracle -c "expdp prod/prod schemas=oracle dumpfile=expdp$rq.dmp logfile=expdp$rq.log DIRECTORY=/tmp/data"


find /tmp/data/ -name "expdp*" -mtime +0 -exec rm {} \;


ftp -n 10.10.10.110 <<EOF
user ftp 123456
bin
lcd /tmp/data
put expdp*
bye
EOF
我把这个脚本加入到/etc/crontab里,让系统每天20:00执行这个脚本
[root@orcle expdata]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

00 20 * * * root /tmp/backup.sh





下面就是遇到的问题
我用命令crontab -l 提示没有root用户的定时任务
[root@orcle data]# crontab -l
no crontab for root

而在/tmp/data下却有每天都生成的dmp文件,但是没有删除之前导出的文件(昨天18号晚上执行脚本,但没有自动删除17号导出的文件)
[root@orcle data]# cd /tmp/data/
[root@orcle data]# ls -nrt
total 512288
-rw-r--r-- 1 502 501      9143 Nov 17 13:26 export.log
-rw-r--r-- 1 502 501      9176 Nov 17 20:00 expdp121117.log
-rw-r----- 1 502 501 252485632 Nov 17 20:00 expdp121117.dmp
-rw-r--r-- 1 502 501      9176 Nov 18 20:00 expdp121118.log
-rw-r----- 1 502 501 272060416 Nov 18 20:00 expdp121118.dmp



我的问题:1,为何crontab -l 显示没有root用户的定时任务?是我在/etc/crontab里添加的那句语法错误?如果错误 又怎么会每晚20:00在/tmp/data都生成了导出的文件?
          2,为何没有把之前导出的文件删掉,是我脚本的语法错误了吗?
         

论坛徽章:
34
亥猪
日期:2015-03-20 13:55:11戌狗
日期:2015-03-20 13:57:01酉鸡
日期:2015-03-20 14:03:56未羊
日期:2015-03-20 14:18:30子鼠
日期:2015-03-20 14:20:14丑牛
日期:2015-03-20 14:20:31辰龙
日期:2015-03-20 14:35:34巳蛇
日期:2015-03-20 14:35:56操作系统版块每日发帖之星
日期:2015-11-06 06:20:00操作系统版块每日发帖之星
日期:2015-11-08 06:20:00操作系统版块每日发帖之星
日期:2015-11-19 06:20:00黄金圣斗士
日期:2015-11-24 10:43:13
2 [报告]
发表于 2012-11-19 19:02 |只看该作者
修改配置文件后,需要重启对应服务才能使配置生效;
crontab -l 看的是 /var/spool/cron/UID 中的配置,需要 crontab -e 书写,格式比 /etc/crontab 中少 user一段,保存推出后无需重启。

论坛徽章:
34
亥猪
日期:2015-03-20 13:55:11戌狗
日期:2015-03-20 13:57:01酉鸡
日期:2015-03-20 14:03:56未羊
日期:2015-03-20 14:18:30子鼠
日期:2015-03-20 14:20:14丑牛
日期:2015-03-20 14:20:31辰龙
日期:2015-03-20 14:35:34巳蛇
日期:2015-03-20 14:35:56操作系统版块每日发帖之星
日期:2015-11-06 06:20:00操作系统版块每日发帖之星
日期:2015-11-08 06:20:00操作系统版块每日发帖之星
日期:2015-11-19 06:20:00黄金圣斗士
日期:2015-11-24 10:43:13
3 [报告]
发表于 2012-11-19 19:02 |只看该作者
cron 的日志可以查看 /var/log/cron 确认计划是否执行。

论坛徽章:
0
4 [报告]
发表于 2012-11-27 13:15 |只看该作者
crontab -e  crontab -l 都是针对当前用户的,在/etc/crontab里面建的任务用这种方法是看不到的,也就是说你在/etc/crontab里面建的root的任务,用root登录使用crontab -l也看不到。
find 的语法没错的,你看看手动执行可以吗?

论坛徽章:
0
5
发表于 2012-11-27 14:24
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
6 [报告]
发表于 2012-11-28 22:07 |只看该作者
脚本加上调试,先手动执行脚本看看哪出问题了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP