已解决:在/var/spool/cron/root中执行shell脚本定时任务,ipvsadm-save -n > x.save保存的文件为空
root # crontab -l
0 1 * * * sh /opt/lvs_conf_bak.sh &>/dev/null
root # cat /opt/lvs_conf_bak.sh
#!/bin/sh
...
ipvsadm-save -n > x.save
...
解决方案1:
ipvsadm-save 使用全路径
root # which ipvsadm-save
/usr/sbin/ipvsadm-save
解决方案2:
脚本开头加载root环境变量
#!/bin/sh
source /etc/profile
解决方案3:
把定时任务写入到 /etc/crontab,注意加上执行用户
0 1 * * * root sh /opt/lvs_conf_bak.sh &>/dev/null
原因分析:
shell脚本中的PATH变量默认是/usr/bin:/bin
如果脚本中包含root权限的命令(../sbin/xx),放到/var/spool/cron/root 中执行,就会有root环境变量导致执行失败的问题
================# 水平有限 欢迎指正 #=================