Shell脚本不是通过Cron来工作的,而是手动的



我在shell脚本中使用以下命令:

echo "1" > log.txt  
if [ `ifconfig eth0 | grep 'inet addr' | cut -d ":" -f 2 |  
awk {'print $1'}` = 'ipaddress' ] && [ `whoami` = 'userid' ]; then  
echo "2" >> log.txt  
crontab -l > Cron.txt  
echo "3" >> log.txt  
fi 

脚本在手动运行时运行良好,但在通过cron安排时,如果。

cron entry: 31 11 * * * /home/abc/cron_backup.sh  

log.txt手册运行中的输出:在log.txt中打印1,2,3cron:在log.txt

中打印1

我建议将命令解释器行#的第一行作为脚本的第一行!为了确保SH会运行

之后,您是否考虑使用双括号语法[[]?

#!/bin/sh
echo "1" > log.txt  
if [[ `ifconfig eth0 | grep 'inet addr' | cut -d ":" -f 2 |  
awk {'print $1'}` = 'ipaddress' ]] && [[ `whoami` = 'userid' ]]; then  
echo "2" >> log.txt  
crontab -l > Cron.txt
echo "3" >> log.txt  
fi 

问题可能在于ifconfig,grep,cut awk和whoami呼叫。当您从命令行运行时,您的个人资料具有路径设置。

从cron运行时,它没有您的个人资料。如果您修改路径变量以指向这些程序的位置,那么从Cron运行时就不会进行更改。

尝试将每个命令的完整路径放置在整个命令中,并在cron运行时会产生任何区别。

相关内容

  • 没有找到相关文章

最新更新