perl没有在cron中执行

时间:2013-07-31 19:23:22

标签: linux perl crontab

好的,我要把头发拉出来。我有一个perl脚本,它不会在crontab中运行但是我有一个以前编写的perl脚本,每天在同一个盒子上运行得很好。我已经检查了本网站上的所有解决方案以及网络上的其他解决方案,似乎没有任何区别。这是我的cron和我脚本的第一部分

55 13 * * * su oracle; cd /u02/oraclebackup;./move_em_bkup.pl >> /u02/oraclebackup/move_em_backup.log > move_em_bkup.dbg 2>$1

它触及.dbg文件,但没有放任何东西。没有错误或任何我可以使用的东西。

#!/usr/bin/perl
use Strict;
use Archive::Tar;
use Net::SCP qw/ scp /;
use Net::SCP::Expect;
use DateTime;

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

您正在运行的命令是:

su oracle; cd /u02/oraclebackup; ...

su oracle通常会在oracle帐户下启动一个交互式shell(假设您有权这样做)。我不确定在非交互式cron环境中会做什么,但即使假设它有效,{/ 1}}及以下子命令也会在后执行 shell终止,即在拥有crontab的帐户下终止。 cd /u02/oraclebackup将阻止命令的其余部分或不执行任何操作。

您可以使用su oracle以指定用户身份运行命令。在你的情况下,你需要像:

su -c command

如果您需要su -c oracle sh -c 'cd /u02/oraclebackup; ...' 帐户的登录环境,请将su更改为su -

更好的是,删除oracle并将整个内容放在su帐户的crontab中。你可能仍然需要更多的技巧来改善环境;默认情况下,cron作业使用一组有限的环境变量运行。