我有一个在我们的共享网络主机上运行的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中有一些方法可以捕获命令的输出状态,无论是真还是假,然后如果它是假的,就做一些事情。
答案 0 :(得分:2)
如果mysqldump被杀死,它将有一个退出代码!= 0:
if ! mysqldump ...;then
rm ...
fi
答案 1 :(得分:-1)
您可以使用ps
或pgrep
根据其名称查看进程是否仍在运行。或者您可以在SQL文件上使用lsof
来查看进程是否正在访问该文件。但是,如果该过程正常完成,那么“打开”连接将不再存在。