Cron 未正确运行命令

Cron 未正确运行命令

我在 Ubuntu 服务器上安装了 HP ProLiant Utilities。使用以下 shell 命令,我能够将 RAID 状态的输出保存到日志文件:

sudo ssacli ctrl all show config > /var/logs/raid.log

然后,我尝试创建一个 cron 作业,以便每天用状态覆盖日志文件。我的 cron 作业如下所示:

30 15 * * * ssacli ctrl all show config > /var/logs/raid.log #Log RAID Status

这个 cron 任务是为 root 用户准备的。

问题是,如果我进入 Webmin 并按“保存并立即运行”来运行此 cron 作业,则会创建日志文件。但如果我让 cron 作业在指定时间运行,则会创建日志文件,但文件为空白。

我认为这可能与我需要在 sudo 模式下运行 ssacli 有关

有人可以帮忙吗?

谢谢

答案1

通过 运行的作业cron不会在与桌面相同的运行时环境中运行。您的任何PATH更改或其他环境变量设置都~/.bashrc不会自动传播到您的cron作业中。例如,没有$DISPLAY,因此 GUI 程序需要特殊处理(阅读man xhost)。

cron人们可以在crontab文件 Read中为所有作业设置环境变量man 5 crontab

echo "=== id ===";id;echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";alias查看每个环境中的结果 。

由于command该行的一部分crontab默认由 解释/bin/sh,其语法比 更简单/bin/bash,因此我建议command调用一个bash脚本(可执行、已安装、以 开头#!/bin/bash)来设置环境,然后调用所需的程序。

相关内容