进程被杀 - 删除输出文件?

时间:2010-04-21 13:38:23

标签: bash shell

我有一个在我们的共享网络主机上运行的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中有一些方法可以捕获命令的输出状态,无论是真还是假,然后如果它是假的,就做一些事情。

2 个答案:

答案 0 :(得分:2)

如果mysqldump被杀死,它将有一个退出代码!= 0:

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

答案 1 :(得分:-1)

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