为什么我的crontab有这样的问题,求助

有个很习怪的问题,你帮我分析一下,以下是脚本代码:

#!/bin/bash
IP=ifconfig eth0| sed -n '2p' | awk -F":" '{print $2}' | awk -F' ' '{print $1}'
DATE=date +%F+%H%M
/bin/mkdir /backup/$IP$DATE -p

*/1 * * * * /bin/sh /scripts/[img][/img]tar.sh >/dev/null 2>&1
脚本的功能是,创建一个以ip+日期时间为名字的目录,
问题现在是,脚本通过手动sh执行,结果正常能创建带IP和时间的目录,放在crontab计划任务中,执行却只能创建出日期的目录,前面IP部分不显示,你帮我分析一下,这是哪里的问题,谢谢
drwxr-xr-x. 2 root root 4096 4月 12 09:01 192.168.2.1332017-04-12+0901
drwxr-xr-x. 2 root root 4096 4月 12 08:46 2017-04-12+0846__

crontab中权限跟用户不一样。然后就是可以看看ifconfig的输出,是否格式不一样,导致没有获取到IP

crontab是绑定用户运行的,怎么会跟用户权限有关系 ?不清楚就不要瞎扯! 鄙视楼上这种误导别人的行为。

shell脚本中不执行的原因只有一点 就是环境变量 用户的环境变量和crontab的环境变量是不一样的
首先 运行下 查看下你的ifconfig命令在那

whereis ifconfig
whereis sed
whereis awk

手动运行时 相当于是在bash里面运行 有自己的环境变量 你可以输出echo $PATH看一看

然后你写一个crontab echo $PATH >> /root/crontab.path 用定时任务用行下 看看crontab运行时的环境变量是什么
他的环境变量路径有没有包含你执行的这几个命令

我相信你得到的答案是 /usr/bin:/bin 看清楚了么 sed awk 都在/bin下 所以你不用写绝对路径

但是 ifconfig在/sbin 目录下 crontab执行的时候找不到 所以不执行 现在懂了吧

还用那个 稍微修改下

 * * * * *  echo `/sbin/ifconfig eth0| sed -n '2p' | awk -F":" '{print $2}' | awk -F' ' '{print $1}'`  >> /root/crontab.path

过一分钟你去看看是不是有ip了
图片说明

sh手动执行可以 crontab执行不可以 永远第一个想到环境变量