Bash 进程已终止--是否删除输出文件?

Bash 进程已终止--是否删除输出文件?,bash,shell,Bash,Shell,我有一个bash脚本,它在我们的共享web主机上运行。它转储我们的mysql数据库并压缩输出文件。有时mysqldump进程会被终止,这会留下一个不完整的sql文件,仍然会被压缩。如何让脚本“注意到”终止,然后在终止发生时删除输出文件 编辑:这是我脚本中的一行 nice -19 mysqldump -uuser -ppassword -h database.hostname.com --skip-opt --all --complete-insert --add-drop-table data

我有一个bash脚本,它在我们的共享web主机上运行。它转储我们的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
下面是我偶尔从我的好友克朗那里得到的信息:

/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中有一种方法可以捕获命令的输出状态,是真是假,如果它是假,就做些什么。

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

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

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

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

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

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

这是一个编程问题,可能会迁移到stackoverflow.com。在那里创建一个帐户,并将其与超级用户帐户关联,以便在问题移动后,您可以拥有该问题的所有权。编辑:您可能应该编辑您的帖子,以包含脚本中的源代码,以便人们能够更轻松地回答。这是一个编程问题,可能会迁移到stackoverflow.com。在那里创建一个帐户,并将其与超级用户帐户关联,以便在问题移动后,您可以拥有该问题的所有权。编辑:你可能应该编辑你的文章,包括你脚本中的源代码,这样人们可以更容易地回答它;我想让脚本执行此操作。@user151841:脚本完全没有理由不能执行我描述的操作。我不想手动执行此操作;我希望脚本能做到这一点。@user151841:脚本完全没有理由不能完成我描述的任务。