您的位置:首页 > 运维架构 > Shell

crontab中使用环境变量的方法(手动执行shell脚本可以,在定时任务中不行)

2012-09-11 18:23 1171 查看
在crontab中如何引用已定义的环境变量

一个shell脚本 /root/test/shell/test_crontab_env.sh,内部使用了一个环境变量 TEST_CRONTAB_ENV=test_crontab_env

且TEST_CRONTAB_ENV存在于 /etc/profile 中

如:

#!/bin/bash

echo "`date +%Y-%m-%d" "%H:%M:%S` $TEST_CRONTAB_ENV" >> /tmp/test_crontab_env.file

手动执行, 运行结果:

2010-09-04 11:23:38 test_crontab_env

添加到 crontab 中如下

*/1 * * * * /root/test/shell/test_crontab_env.sh

结果:

$> cat /tmp/test_crontab_env.file

2010-09-04 11:25:01

2010-09-04 11:26:01

...

这里引用的环境变量无效了.

使环境变量在crontab中生效的方法:

1.传参的方式

crontab中

*/1 * * * * /root/test/shell/test_crontab_env.sh "test_crontab_env"

test_crontab_env.sh 中

#!/bin/bash

echo "`date +%Y-%m-%d" "%H:%M:%S` $1" >> /tmp/test_crontab_env.file

2.在该shell脚本中定义环境变量

test_crontab_env.sh 中

#!/bin/bash

TEST_CRONTAB_ENV=test_crontab_env

echo "`date +%Y-%m-%d" "%H:%M:%S` $TEST_CRONTAB_ENV" >> /tmp/test_crontab_env.file

3.在该shell脚本中加载环境变量文件

#!/bin/bash

source /etc/profile

echo "`date +%Y-%m-%d" "%H:%M:%S` $TEST_CRONTAB_ENV" >> /tmp/test_crontab_env.file

个人觉得还是第三种方法最实用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: