请原谅我的无知,但我对 shell 脚本和 Linux 中环境变量的使用有些陌生。
我有一个执行 MySQL 数据库备份的脚本。我在脚本中有以下几行用于记录数据库的成功转储:
output=`date; echo "Database export successful from $ENV_HOSTNAME to $BACKUP_HOSTNAME"`
echo $output >> /var/log/errorLog
我在 /etc/profile 中定义了变量(ENV_HOSTNAME 和 BACKUP_HOSTNAME),如下所示:
export ENV_HOSTNAME="env1.somename.com"
export BACKUP_HOSTNAME="env2.somename.com"
当我调用 printenv 时,我可以看到列出的这些变量,并且当我运行此脚本(以 root 身份)时,变量值正确显示在日志文件中。但是,当我将此脚本设置为使用 cron 运行时,变量值不会出现在日志文件中。我知道脚本会运行,因为我可以看到日期和字符串的其余部分,但变量为空:
Fri Nov 6 22:31:05 EST 2009 Database export successful from to
我确信我在这里遗漏了一些简单的东西,所以提前感谢您的帮助。
你的问题是:cron 不运行 /etc/profile。
cron 只需要很少的环境设置即可启动;任何你需要的东西,你都必须自己设置,所以习惯上让 cron 调用一个脚本来处理设置,然后是主要操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)