如何从从crontab执行的perl脚本中执行的可执行文件(cap)捕获STDOUT

如何从从crontab执行的perl脚本中执行的可执行文件(cap)捕获STDOUT,perl,bash,shell,cron,capistrano,Perl,Bash,Shell,Cron,Capistrano,这是一个冗长的标题。但这解释了我的问题: 我有一个运行perl脚本的crontab 该perl脚本运行cap任务,该任务向STDOUT输出一些状态消息 perl脚本应该从cap捕获STDOUT(当前使用backticks)并对其进行解析 现在,当我从bash用户运行脚本时,它100%正常工作。但是,当我从crontab运行脚本时,perl脚本不会捕获cap任务的任何输出 以前有人处理过类似的事情吗?谢谢。可能您的cap可执行文件在未向stdout发送任何消息的情况下死亡。您是否检查了执行的成功状

这是一个冗长的标题。但这解释了我的问题:

我有一个运行perl脚本的crontab

该perl脚本运行cap任务,该任务向STDOUT输出一些状态消息

perl脚本应该从cap捕获STDOUT(当前使用backticks)并对其进行解析

现在,当我从bash用户运行脚本时,它100%正常工作。但是,当我从crontab运行脚本时,perl脚本不会捕获cap任务的任何输出


以前有人处理过类似的事情吗?谢谢。

可能您的cap可执行文件在未向stdout发送任何消息的情况下死亡。您是否检查了执行的成功状态

你能试试这个吗

$check_result = `$cmd 2>&1`;
if ($?){
  die "$cmd failed with $check_result, $!";    
}

您确定perl正在crontab中运行吗?通常,它会使用与cron不同的环境,并丢失perl exe或一些perl lib设置,以获得回复。实际上,我确信perl正在crontab中运行。我的日志文件被创建,所有相同的行被写入。。。它只打印$check\u result=''而不是$check\u result=''如何运行
cap
任务?您可能会在STDERR中收到更多错误消息。看到这一点可以让cron Backticks中的STDERR在cron作业中工作得非常好。你还没有确定一个关键因素。你能解释一下我还没有确定一个关键因素是什么意思吗?