2010-04-21 188 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