【发布时间】:2014-04-15 19:02:36
【问题描述】:
我不知道为什么这个脚本不起作用。该脚本已成为可执行文件,我在邮件或我设置用于捕获任何内容的 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
【问题讨论】:
-
有可能
cron正在使用sh而不是bash执行脚本。 -
看起来在作业应该运行时甚至没有创建 snap.log。有什么会导致它不执行吗?现在我正在使用 $ +1 /path/to/script/script.sh
-
shebang 行不强制它使用 bash 吗?
-
循环后有一个
2>&1,但$VMPATH/vmrun list ...行上没有。尝试将2>&1附加到该行。也许它在进入循环之前就已经死了。 -
@nickg 取决于 cron 作业的设置方式。但依赖它是不安全的。
标签: bash shell cron osx-mavericks vmware-fusion