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} ,测试依然不行

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

  

时间: 2024-09-13 22:19:05

crontab不执行perl脚本分析的相关文章

Java调用telnet连接到Unix环境的服务器然后再执行perl脚本

问题描述 各位大侠,本人有一个难题,想请教大家,如下:要用Java调用telnet连接到Unix环境的服务器然后再执行perl脚本,并且能够把执行perl脚本的信息返回给前端展示出来.因为本人之前从来没有做过这个所以向大家求救,谢谢!!! 解决方案 解决方案二:不知道但顶一下,闲着无聊解决方案三:方法1.找一个telnet功能的java代码,自然有执行unix命令的方法,也有相应的获取unix回显的方法方法2.有一个类,叫什么我忘了.专门执行命令行命令的,我当时做的时候,是执行windows下的

如何使用Linux的Crontab定时执行PHP脚本的方法_php技巧

下面介绍Crontab的两种方法. 一.在Crontab中使用PHP执行脚本 就像在Crontab中调用普通的shell脚本一样(具体Crontab用法),使用PHP程序来调用PHP脚本. 每一小时执行myscript.php如下: 复制代码 代码如下: # crontab -e 00 * * * * /usr/local/bin/php /home/john/myscript.php /usr/local/bin/php为PHP程序的路径. 二.在Crontab中使用URL执行脚本 如果你的P

在linux下利用crontab定时执行PHP脚本

最近急需这种方法,记录一下,有空的时候尝试^^ 在 linux下,可以使用crontab + php的方法: 1.使用crontab –e编辑定时任务 内容为: xx:xx:xx 执行一个test.php文件 2.php文件必须在文件头一行,加上解释器路径(就象perl做的那样) #!/usr/local/bin/php PHP的执行需要Apache的支持,shell脚本的执行需要Linux的支持,而Linux支持定时运行某个程序的功能 -----------------------------

Linux中crontab任务计划不执行的问题分析

crond是Linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务. 使用权限: root用户和crontab文件的所有者 语法: crontab [-e [UserName]|-l [UserName]|-r [UserName]|-v [UserName]|File ] 说明: cro

运维经验分享(六)-- 深究crontab不能正确执行Shell脚本的问题(二)

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dgd2010.blog.51cto.com/1539422/1677211 运维经验分享作为一个专题,目前共7篇文章 <运维经验分享(一)-- Linux Shell之ChatterServer服务控制脚本> <运维经验分享(二)-- Linux Shell之ChatterServer服务控制脚本二次优化> <运维经验分享(三)-- 解决Ubuntu下cro

《智能路由器开发指南》——2.2 编译脚本分析

2.2 编译脚本分析 2.2.1 顶层目录概述 OpenWrt代码有8个固定的顶层目录及6个编译时创建的临时目录,顶层的固定目录含义如表2-3所示. 目录config是编译配置文件目录,是OpenWrt 15.05的新增目录,是将一些编译选项配置文件分类放在这里,包含全局编译设置.开发人员编译设置.目标文件格式设置和内核编译设置等4部分. 目录include和scripts包含各种脚本和Makefile.目录target是指目标嵌入式设备,针对不同的平台有不同的特性代码.针对这些平台特性,"ta

php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法

  在php命令行下执行.php文件时,执行环境的工作目录(getcwd( ))是php命令程序(php.exe)所在目录,所以如果想在文件内使用相对路径时,要先切换当前的工作目录才行. 小测试程序: 代码如下: $oldpath = getcwd(); // 原始工作目录 php.exe所在目录 $path = dirname(__FILE__); chdir($path); // 切换工作目录为当前文件所在目录 $fpath = "forum/readme.txt"; $fp =

Perl 脚本的特点

        本章介绍如何使用Perl DBI 与MySQL接口.我们不讨论DBI 的基本原理或体系结构.有关DBI 这些方面的信息(特别是与C 和PHP API 的比较),请参阅第5 章.    本章的举例动用了样例数据库samp_db,使用了学分保存方案和历史同盟需要的表.想要从本章中取得最大收获,最好了解一些有关Perl 的知识.如果不想这样,那么通过拷贝这里看到的样例代码,也能有所帮助,并可以编写自己的脚本,不过找一本好的Perl 书,可能仍是一件非常有价值的投资.有这样一本书,名为<

linux下实现定时执行php脚本

这篇文章主要介绍了linux下实现定时执行php脚本的方法及具体使用示例,非常不错的文章,这里推荐给大家.     在linux中输入命令   代码如下: crontab -e   然后使用vim的命令编辑打开的文件,输入   代码如下: 0 * * * * /usr/bin/php -f /home/userxxx/update.php   保存,退出,好了,现在系统会在每个0点自动执行update.php脚本,脚本中可以编写数据库执行,自动发邮件等功能. 注:直接写成 0 * * * * p