【问题标题】:process killed -- delete output file?进程被杀——删除输出文件?
【发布时间】:2010-04-21 13:38:22
【问题描述】:

我有一个在我们的共享网络主机上运行的 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 中有某种方式可以捕获命令的输出状态,真或假,然后如果它是假的,就做点什么。

【问题讨论】:

  • 这是一道编程题,可能会迁移到stackoverflow.com。在那里创建一个帐户并将其与您的超级用户帐户相关联,以便您可以在问题移动后获得问题的所有权。编辑:您可能应该编辑您的帖子以包含脚本中的源代码,以便人们可以更轻松地回答它。

标签: bash shell


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我不想手动执行此操作;我希望脚本执行此操作。
    • @user151841:完全没有理由脚本不能完成我所描述的操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 2011-02-18
    • 1970-01-01
    相关资源
    最近更新 更多