crontab不执行perl脚本分析

简介:

在新装的Linux服务器上部署了一个作业监控磁盘空间并提前告警,在shell脚本里面调用了一个perl脚本发送告警邮件。结果出现了一个很奇怪的现象:如 果手工执行该脚本/home/oracle/scripts/disk_capatiy_alarm.sh能发出告警邮件,但是在crontab里面发现 脚本没有发出告警邮件。检查了/var/log/cron后发现该作业执行了。最后发现shell执行了,但是perl脚本没有执行。搜索了相关资料后, 了解到一般出现这种情况要么是因为环境变量,要么是因为使用了相对路径。因为crontab它总是不会缺省的从用户profile文件中读取环境变量参 数,经常导致在手工执行某个脚本时是成功的,但是到crontab中试图让它定期执行时就是会出错.

我首先将perl ${email_content} 改成了使用绝对路径/usr/bin/perl ${email_content} ,测试依然不行

clip_image001

因此在脚本里面应用环境变量./etc/profile 。 问题解决了。虽然寥寥几字,但是从问题纠结我开始到问题解决。基本上花费了半天时间。网上也有不少人碰到过这种情况。

clip_image002

  

相关文章
|
2月前
|
Shell
一个用于添加/删除定时任务的shell脚本
一个用于添加/删除定时任务的shell脚本
110 1
|
7月前
|
Shell 程序员 数据安全/隐私保护
shell 脚本 if-else判断 和流程控制 (基本语法|基础命令)
shell 脚本 if-else判断 和流程控制 (基本语法|基础命令)
|
Shell Linux Python
Crontab 执行 python 脚本不生效?
Crontab 执行 python 脚本不生效?
|
Shell Android开发
crontab执行脚本报错手动执行正确
crontab执行脚本报错手动执行正确
Zp
|
Shell
执行.sh文件(shell脚本)的几种方式
执行.sh文件(shell脚本)的几种方式
Zp
1500 0
|
SQL Shell Linux
如何用crontab每隔1分钟执行一个命令行脚本,shell设定时任务
如何用crontab每隔1分钟执行一个命令行脚本,shell设定时任务
881 0
如何用crontab每隔1分钟执行一个命令行脚本,shell设定时任务
|
Linux Windows Perl
Perl脚本执行方法小结
Perl脚本执行: ./filename.pl                                要这样用,脚本需添加声明行,Linux下一般是添加:#!/usr/bin/perl -w perl filename.
1727 0