这是因为crontab中环境变量和发行版本的linux(centos or ubuntu)有所区别。
crontab 环境变量PATH 默认值为:PATH="/usr/bin:/bin"
一般的发行版本为:PATH="/sbin:/bin:/usr/sbin:/usr/bin"
像ifconfig等命令默认是放在/sbin/下的,故导致通过crontab 执行的脚本,如果其中包含ifconfig等命令,会出现未执行或者报错的问题。
解决方法:
方法1.脚本中设置环境变量:export PATH=$PATH:/sbin
方法2.在/etc/crontab中设置定时任务,该文件中一般是有定义了下面环境变量。
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
方法3.crontab -e 后加入上述环境变量。