我正在尝试创建基本脚本,该脚本将在 cron 中每分钟运行一次。脚本script.sh
是:
#!/bin/bash
DATE=`date +"%Y-%m-%d %H:%M:%S"`
IP=`ifconfig | grep "inet addr" | awk --field-separator ':' '{print $2}' | awk '{print $1}' | head -1`
echo "$DATE $IP" >> test.log
当我通过输入“ ./script.sh
”运行此脚本时,我在 test.log 中以这种格式获得了 IP 地址(没关系):
2017-11-08 16:33:33 10.0.0.1
2017-11-08 16:34:33 10.0.0.1
2017-11-08 16:35:33 10.0.0.1
但是,当我创建这样的 cron 作业时:
* * * * * /path/to/my/script.sh
在 test.log 中我只有日期:
2017-11-08 16:36:13
2017-11-08 16:37:13
2017-11-08 16:38:13
但为什么?为什么我里面没有IP地址?你有什么主意吗?
答案1
date
可能/bin/date
并且是在$PATH
cron 作业的默认值$PATH
,与用户登录时的设置不同。
ifconfig
很可能/sbin/ifconfig
不在 中$PATH
。
更改ifconfig
为明确的完整路径(例如)以在 cron 中/sbin/ifconfig
运行。ifconfig