检查shell脚本中的上一步是否通过Cron运行

时间:2011-12-16 02:35:30

标签: linux shell shell-exec

---文件makebackup.sh

#!/bin/bash
DATE='date'
mysqldump --all-databases | gzip -9 > /backup/temp_db.gz
tar -Pcf /backup/temp_ftp.tar /public_html/
tar -Pcf /backup/temp_backup.tar /home/temp_db.gz /backup/temp_ftp.tar
sleep 60 && /backup/upload.sh $DATE

--- file upload.sh

#!/usr/bin/expect -f

# connect via scp
spawn scp /backup/temp_backup.tar root@mybackup.com:/home/backup_$argv.tar
#######################
expect {
-re ".*es.*o.*" {
exp_send "yes\r"
exp_continue
}
-re ".*sword.*" {
exp_send "mypassword\r"
}
}
interact

为什么这不起作用,我不想使用睡眠我需要知道什么时候最后一个tar结束并执行文件upload.sh。相反,它会在最后一个tar文件启动后立即执行。

&安培;&安培;即使我删除睡眠60也没有做任何事情

1 个答案:

答案 0 :(得分:0)

如你所说'相反,它总是在最后一个tar文件开始时执行',通常这意味着有一个'&'在行尾或者你确定焦油真的有效吗?你在看一个早期创建的旧tar.gz吗?确保它是一个大小正确的新tar文件。 编辑我并不是说你必须删除文件,只是dbl-检查放入最终tar的内容是否有意义。

您是否正在检查输入文件的大小到最终的tar cmd? (/home/temp_db.gz /backup/temp_ftp.tar)? 编辑我的意思是,未压缩的tar文件(temp_ftp.tar)应该略大于它包含的所有文件的大小总和。如果你知道你有1 Meg的文件组成temp_ftp.tar,文件是1.1 Meg,这很好,如果是.5 Meg,那就不好了。 (还要考虑gziping整个过程,以减少到远程主机的传输时间)。您的压缩db文件很难说,大概是可行的,如果文件大小大约是25个字节,则表示创建文件时出错。

否则你所说的 真的 似乎是不可能的。这是其中之一,或其他东西是bollixing事情。

调试最后一个tar所用时间的一种方法是将命令包装在两个日期命令中,即

date
tar -Pcf /backup/temp_backup.tar /home/temp_db.gz /backup/temp_ftp.tar
rc=$?
date

printf "return code from quick tar was ${rc}\n"

此外,根据您的标题,检查上一步',我已添加从tar获取返回代码并打印该值。

再一次,为了强化你已经知道的东西,在一个linux shell脚本中,没有办法(除了使用'&' char的后台作业)一个命令在前一个之前开始执行一个人完成了。

编辑您文件的所有权和权限可能会使您的文件的所有权和权限变得紧张。使用\

ls -l  /backup/temp_backup.tar /home/temp_db.gz /backup/temp_ftp.tar

确认您的userID拥有这些文件,并且您可以写入这些文件。如果您愿意,可以编辑您的帖子以包含该信息。


另外,你的标题是“cron' :您是否捕获此脚本的所有可能输出以帮助调试情况?在makebackup.sh顶部附近的set -vx打开shell调试。将调试输出添加到tar cmd' -v'。

捕获整个过程的cron输出,如

59 23 31 12 * { /path/to/makebackup.sh 2>&1 ; } > /tmp/makebackup.`/bin/date +\%Y\%m\%d.\%H\%M\%S.trace_log 

请确保您没有找到任何错误消息。

(Crontab样本,最小工作日星期一(星期几,0-6或*),更改日期/时间以满足您的测试需求)


您的预期脚本会使用' \ r',您不希望' \ n'在Unix / linux环境中。如果您是基于Windows的服务器,那么您需要' \ r \ n'

编辑预期脚本是否正常工作,您是否已证明您对文件正在被复制的满意度,它们在备份网站上的大小是否相同,日期是否会发生变化?


如果您希望备份有一天能够保存您的系统,那么您必须更好地了解整个过程应该如何工作以及它是否按预期工作。根据您的情况和备用计算机的可用性,您应该安排对还原备份的测试,以确定它们是否真的有效。当您使用-P保留完整路径信息时,您真的需要注意不要用旧文件覆盖您的工作系统。

总结一下我的建议,仔细检查一切。

我希望这会有所帮助。