以 cronjob 形式运行 Perl 脚本不起作用,而手动启动可以完成工作

以 cronjob 形式运行 Perl 脚本不起作用,而手动启动可以完成工作

我有 3 个 cronjob 条目(crontab -l),第一个条目是一个 Perl 脚本,用于创建虚拟机的 LVM 备份,另外两个只是执行mysqldump.

嗯,但是,我crontab -e以 root 身份进行编辑(sudo su首先),这是我的第一个工作条目

# Run daily backup of my job at 3:15 [relation ä11]
15 3 * * * perl /opt/AUTO_BACKUP/virt-backup.pl --action=dump --date --vm=SERVER2

好吧,但它既没有在备份目录中创建任何输出,也没有在 cron 日志中创建任何条目。在 cron 日志文件中,我只找到了其他 sh 作业的条目。

但是当我将命令perl /opt/AUTO_BACKUP/virt-backup.pl --action=dump --date --vm=SERVER2直接复制到 root 终端时,它运行起来非常顺畅。因此,由于我crontab以 root 身份编辑,因此只有正确的用户才能运行该作业。并且日志中也没有错误。

答案1

将条目更改perlpath/to/perl。通常,诸如perl和 之类的命令python实际上是基于环境的,可以在 PATH 中找到。由于 cron 缺少该 PATH,因此最好在 crontab 中使用绝对路径。

答案2

脚本从 shell 执行而不是作为 cronjob 执行时运行的原因通常是它在那里找到了不同的环境。

因此,使用以下命令更改你的 cronjob 以将环境保存在 /tmp/env 中

env | sort> /tmp/env

当 /tmp/env 到达时,它会与您当前的环境产生差异。

env | sort | diff - /tmp/env

高血压

相关内容