免费注册 查看新帖 |

Chinaunix

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

crontab 不执行脚本 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-02-24 16:11 |只看该作者 |倒序浏览
30可用积分
本帖最后由 709101040516 于 2012-02-24 17:00 编辑

#su - oracle
$crontab -e
* 20 * * * /home/oracle/touchs
$chmod 777 touch

touch内容如下:
  1. #!/bin/sh
  2. while [ 1 ]
  3. do
  4.                 check=`df -lh | grep '/dev/sda1'`
  5.                 echo $check
  6.                 if [ "$check" = "" ];then
  7.                         echo 'there is nomount'
  8.                         exit 0
  9.                 fi
  10.                 /oracle/product/10.2.0/db_1/bin/rman target / msglog=/var/log/oracle/back01.log   cmdfile=/home/oracle/backup.sh
  11.                 exit 0
  12. done
复制代码
/home/oracle/backup.sh如下:
  1. run{
  2. allocate channel ch1 type disk;
  3. backup
  4. format "/oracledb/databaseact/full_%T_%t"
  5. tag full_backup
  6. database;
  7. release channel ch1;
  8. }
复制代码
现在不是脚本出现问题,因为我手动执行 sh /home/oracle/touch 的时候,这2个脚本会正常运行成功的,而我写入到crontab里面的时候,就是不执行。

请教各位大拿了。。
我试过再写一个脚本,比如 aa.sh
  1. sh /home/oracle/touch
复制代码
然后用crontab 执行 aa.sh,发现还是不行。。。唉···

论坛徽章:
0
2 [报告]
发表于 2012-02-24 16:13 |只看该作者
回复 1# 709101040516


    或者哪个大拿写个类似效果的脚本,给我用用。
意思就是  但发现有/dev/sda1 挂载在服务器上的时候,就执行oracle的备份脚本。如果没有挂载,就不执行。
类似效果的就行,麻烦大家了。。。

论坛徽章:
0
3 [报告]
发表于 2012-02-24 16:29 |只看该作者
哇塞。大家好歹也给个思路嘛。。。

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
4 [报告]
发表于 2012-02-24 16:46 |只看该作者
cat /var/log/cron.log
看下执行日志,此外看root的mail信息,看看有无关于crontab的,
还有看看cron是不是停止了。

此外环境变量,路径都可能导致。

论坛徽章:
0
5 [报告]
发表于 2012-02-24 16:55 |只看该作者
本帖最后由 jiejie455 于 2012-02-24 16:56 编辑

crontab 直接引入环境变量试试。

论坛徽章:
0
6 [报告]
发表于 2012-02-24 17:17 |只看该作者
有没有人能写个类似效果的!!

论坛徽章:
0
7 [报告]
发表于 2012-02-24 17:21 |只看该作者
为什么你的corntab里面执行的文件叫做touchs
你的脚本的名字又叫做touch,
两个名字都不一样啊,检查一下

论坛徽章:
0
8 [报告]
发表于 2012-02-24 17:28 |只看该作者
那是我手误,现在问题不是这个

论坛徽章:
0
9 [报告]
发表于 2012-02-24 17:34 |只看该作者
你是要多久执行一次

论坛徽章:
0
10 [报告]
发表于 2012-02-24 18:01 |只看该作者
本帖最后由 yqhzh 于 2012-02-24 18:02 编辑

我用crontab -e 编辑了一个命令,也是不能执行的;
但是,如果将你要执行的命令直接放到 /etc/crontab 里面(SuSE 11)
SLES-6-2:/tmp # vi /etc/crontab

  1 SHELL=/bin/sh
  2 PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin
  3 MAILTO=root
  4 #
  5 # check scripts in cron.hourly, cron.daily, cron.weekly, and cron.monthly
  6 #
  7 -*/15 * * * *   root  test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons >/dev/null 2>&1
  8 * * * * * root /tmp/touch.sh
~
~

"/etc/crontab" 8L, 283C written                                                                                   
You have new mail in /var/mail/root
SLES-6-2:/tmp #
SLES-6-2:/tmp #
SLES-6-2:/tmp # /etc/init.d/cron restart

重启之后是没有任何问题的,能够顺利执行,
我用watch查看了两个脚本都能调用成功。
SLES-6-2:~ # watch 'ps -ef | grep -E "touch|backup" | grep -v grep'

Every 2.0s: ps -ef | grep -E "touch|backup" | grep -v grep                                                  Fri Feb 24 17:54:04 2012

root     11461 11459  0 17:54 ?        00:00:00 /bin/sh /tmp/touch.sh
root     11491 11461  0 17:54 ?        00:00:00 /bin/sh /tmp/backup.sh
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP