Shell脚本在命令行中运行良好,但在root cron中运行不正常

时间:2014-04-14 18:55:56

标签: bash shell cron osx-mavericks vmware-fusion

我不知道为什么这个脚本不起作用。该脚本已被设置为可执行文件,我在邮件或我设置的snap.log中没有输出以捕获任何内容。我在命令行以root身份运行并且运行正常,但是一旦它被添加到cron,没有任何反应。我完全难过,任何帮助都会受到赞赏。感谢。

在OS X Mavericks上运行。

#!/bin/bash

# Ignores white space in directory names
IFS=$'\n'

# Sets all variables needed
export DLY_BKP=/Volumes/BKP/Daily_bkp.`/bin/date +%m%d%y`
export DLY_LOG=AAAdaily_bkp.txt
export BKP_DIR=/Users/Backup_logs
export VMPATH=/Applications/VMware\ Fusion.app/Contents/Library


#####################################################

# Finds all running VMs
$VMPATH/vmrun list | /usr/bin/sed 1d > $DLY_BKP/$DLY_LOG

# Creates snapshots of all running VMs on the server
while read vm; do
    $VMPATH/vmrun -T ws snapshot $vm "snapshot `/bin/date +%m/%d/%Y`"
    $VMPATH/vmrun -T ws deleteSnapshot $vm "snapshot `/bin/date -v-2d +%m/%d/%Y`"
done < $DLY_BKP/$DLY_LOG > $DLY_BKP/snap.log 2>&1

1 个答案:

答案 0 :(得分:0)

为CRON使用设置脚本通常需要通过crontab设置或脚本本身添加路径。尝试将显式PATH添加到crontab或脚本中。

Crontab条目因操作系统而异,请检查您的文档 - 对于免费BSD,它们类似于“crontab -e”和编辑条目(有关您的操作系统的详细信息,请参阅“man crontab”或“man -a crontab”):

PATH=/some_custom_path # affect all JOBs in Crontab

 ### MM HH Day Month WEEk_Day << Order VARIES by OS!  
 ## run on 2nd/4th/6th days of week  
19 9 * * 2,4,6  /home/user/bin/some_script  

抛弃所有输出:

19 9 * * 2,4,6  /home/user/bin/some_script > /dev/null 2>&1  

将所有数据发送到您指定的日志文件:

19 9 * * 2,4,6  /home/user/bin/some_script > /tmp/cron_job.log 2>&1  

邮件结果&amp;错误

19 9 * * 2,4,6  /home/user/bin/some_script 2>&1 | mail -s "Cron results" user@your_dom.com