2010-04-21 152 views
1

我有一个运行在我们共享的Web主机上的bash脚本。它执行我们的mysql数据库转储并压缩输出文件。有时mysqldump进程会被终止,这会留下一个仍然被压缩的不完整的sql文件。如何让我的脚本“通知”查杀,然后在发生查杀时删除输出文件?进程死亡 - 删除输出文件?


编辑:这里是从我的脚本行

nice -19 mysqldump -uuser -ppassword -h database.hostname.com --skip-opt --all --complete-insert --add-drop-table database_name > ~/file/system/path/filename.sql 

这里就是我得到有时从我的好友的Cron:

/home/user/backup_script.bash: line 17: 12611 Killed      nice -19 mysqldump -uuser -ppassword -h database.hostname.com --skip-opt --all --complete-insert --add-drop-table database_name > ~/file/system/path/filename.sql 

所以,当发生这种情况,我想只是删除filename.sql,因为它会有一些插入,但不是全部。我知道在bash中可以捕获一个命令的输出状态,是true还是false,然后如果它是错误的,请执行一些操作。

+1

这是一个编程问题,它可能会被迁移到stackoverflow.com。在那里建立一个帐户并将其与您的超级用户帐户相关联,以便您可以在问题移动后获得所有权。编辑:你可能应该编辑你的文章以包含你的脚本的源代码,这样人们可以更容易地回答它。 – marcusw 2010-04-21 13:43:53

回答

2

如果mysqldump的就会被杀死,将有一个退出代码= 0:

if ! mysqldump ...;then 
    rm ... 
fi 
-1

您可以使用pspgrep来查看该进程是否仍在基于其名称运行。或者您可以在SQL文件上使用lsof来查看进程是否正在访问该文件。但是,如果进程正常完成,那个“打开”连接将不再存在。

+0

我不想这样做手动;我想要脚本来做到这一点。 – user151841 2010-04-21 14:15:07

+0

@ user151841:脚本无法完成我所描述的任何内容。 – 2010-04-21 21:33:49

+0

哦?一定要告诉! :) – user151841 2010-04-22 17:44:37