SHELL脚本在crontab中不能正确运行
2014-09-24 11:29
387 查看
某个脚本手工运行可以产生正确输出,而放在定时任务crontab中却有问题。
解决思路:
1、一般的crontab都会生产mail邮件(如果没有在crotab里面删掉末尾的">>/dev/null"),使用mail命令看看crontab产生的消息,定位一下具体出了什么问题,我看到的报错就是:
3、其他的一些错误大多是crontab编写格式错误,或者是脚本权限不对,好好检查下就没啥事了,为了平台的通用性,最好还是多写绝对路径,少用相对路径。最后记得在crontab的任务末尾加上>>/dev/null 2>1&,避免太多输出占满空间。
本文出自 “DanielQu” 博客,请务必保留此出处http://qujunorz.blog.51cto.com/6378776/1557641
解决思路:
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 found2、由此很清晰看到是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
相关文章推荐
- 运维经验分享(六)-- 深究crontab不能正确执行Shell脚本的问题(二)
- shell 写的CGI脚本的不能正常运行的问题
- (原创)Windows下编译的Shell脚本不能再Linux中运行的解决办法
- PHP写linux的shell脚本,以及crontab运行方法
- crontab at & 后台定期运行shell脚本
- mysql学习点滴,附正确的crashcourse教材sql脚本,网上的脚本不完善,不能直接运行
- AIX环境下SHELL脚本设置成crontab调度和手动运行的某些不同
- [Shell]crontab 运行任务调用shell脚本,相对路径无法找到
- crontab执行shell脚本和直接运行的结果不一样
- crontab 无法运行shell脚本问题
- AIX_环境下SHELL脚本设置成crontab调度和手动运行的某些不同
- shell脚本直接运行和crontab结果不一样
- shell脚本直接运行和crontab结果不一样
- linux定时运行命令脚本shell——crontab配置
- 单独运行shell脚本与crontab运行shell脚本的区别
- windows下上传shell脚本不能运行的解决方法
- crontab运行shell脚本报sudo错误
- teamcity执行jmeter脚本使用Executable with parameters方式不能正确运行解决思路
- crontab 调用shell 脚本不运行
- 运维经验分享(三)-- 解决Ubuntu下crontab不能正确执行脚本的问题