【发布时间】:2010-06-08 08:59:53
【问题描述】:
我希望让 cron 执行 delete_snapshot.bash,但是当我尝试如下创建 cron 时:
*/1 * * * * /var/www/mango_gis/delete_snapshot.bash >/dev/空
它根本没有执行我的脚本,因为当我没有看到它删除亚马逊云中的快照时,我的脚本已经用 bash 进行了测试,它工作正常。
这是我的脚本如下:
#!/bin/bash
get()
{
local pos=$1
shift
eval 'echo ${'$pos'}';
}
length(){ echo $#; }
find_snapshots()
{
echo $(ec2-describe-snapshots | xargs -n1 basename);
}
snapshots=$(find_snapshots)
len=$(length $snapshots)
row_count=$(($len/6))
if(($row_count > 6)); then
delete_count=$(($row_count-6))
for (( i=1; i<=$delete_count; i++ )); do
ec2-delete-snapshot $(echo $(get $((2+$((6*$(($i-1)))))) $snapshots)) > /dev/null
done
fi
在上面,我发现问题是我调用了 EC2 命令的一个命令。
我已经测试创建一个 cron 作业来调用此命令是 ec2-describe-snapshots,
但它不起作用。
请指教...
泄密
【问题讨论】:
-
你怎么知道它“根本没有执行 [the] 脚本?”您两次丢弃标准输出 - 一次在您的 crontab 中,一次在脚本本身中 - 可能脚本 正在执行 但其他一些错误被丢弃或遗漏。你的
crond日志说什么?crond错误在哪里?是否会运行另一个微不足道的 cronjob(例如,*/1 * * * * logger -p daemon.err -- "I am a cronjob")? -
我知道它没有执行脚本,因为我没有从亚马逊云计算中删除我要删除的快照,所以它没有工作。有什么办法可以查看 cron 日志?
-
您可以在 syslog.conf 中使用“cron”定义日志文件