您的位置:首页 > 运维架构 > Shell

SHELL脚本在crontab中不能正确运行

2014-09-24 11:29 387 查看
某个脚本手工运行可以产生正确输出,而放在定时任务crontab中却有问题。

解决思路:

1、一般的crontab都会生产mail邮件(如果没有在crotab里面删掉末尾的">>/dev/null"),使用mail命令看看crontab产生的消息,定位一下具体出了什么问题,我看到的报错就是:
Message 49:
From root@lvs2.localdomain  Tue Sep 23 19:56:02 2014
Return-Path: <root@lvs2.localdomain>
X-Original-To: root
Delivered-To: root@lvs2.localdomain
From: root@lvs2.localdomain (Cron Daemon)
To: root@lvs2.localdomain
Subject: Cron <root@lvs2> /bin/bash /root/collect_log.sh
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
Date: Tue, 23 Sep 2014 19:56:02 -0700 (PDT)
Status: RO

/root/collect_log.sh: line 20: ifconfig: command not found
/root/collect_log.sh: line 20: ifconfig: command not found
/root/collect_log.sh: line 20: ifconfig: command not found
/root/collect_log.sh: line 20: ifconfig: command not found
/root/collect_log.sh: line 20: ifconfig: command not found
2、由此很清晰看到是ifconfig没有正确执行,很明显系统不可能没有这个命令,应该是没找到正确路径的问题,这是因为crontab执行时调用的是/etc/crontab文件中的配置,查看一下:
[root@lvs2 ~]# 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

* * * * * ls
* * * * * ls -e -
。。。好吧,PATH是对的,貌似这个配置有点坑爹,但是不管怎样,对照了当前home目录下.bashrc的内容,发现是直接调用的/etc/下的profile和bashrc,先在脚本中加上:
source /etc/profile
source /etc/bashrc
如果还有其他特定配置文件也都加载下。这下计划任务执行就OK了。

3、其他的一些错误大多是crontab编写格式错误,或者是脚本权限不对,好好检查下就没啥事了,为了平台的通用性,最好还是多写绝对路径,少用相对路径。最后记得在crontab的任务末尾加上>>/dev/null 2>1&,避免太多输出占满空间。
本文出自 “DanielQu” 博客,请务必保留此出处http://qujunorz.blog.51cto.com/6378776/1557641
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: