crontab环境变量问题

写了一个通过ip命令获取当前系统ip地址信息的脚本,手工测试没有任何问题,但是部署到crontab中,就会出现获取IP地址失败情况。

辛苦查了一天,最后发现直接在shell下执行脚本时的环境变量和在crontab环境下的环境变量不同

测试如下:

# whereis ip
ip: /usr/sbin/ip /usr/share/man/man7/ip.7.gz /usr/share/man/man8/ip.8.gz

# echo $PATH
/root/perl5/bin:/usr/share/Modules/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

# crontab -l
no crontab for root


# crontab -e编辑后
# crontab -l
*/1 * * * *  echo $PATH >> /tmp/path.txt

# tail -f /tmp/path.txt
/usr/bin:/bin

所以 在crontab执行 ip addr命令,查找不到系统的IP地址,所以要在脚本里面带上ip命令的路径,或者使用sudo。

参考链接:

Linux中crontab的坑爹环境变量问题

Crontab内环境变量与Shell环境变量的关系及解决问题的办法

原文地址:https://www.cnblogs.com/smith9527/p/14924227.html