процесс убит - удалить выходной файл? - PullRequest
1 голос
/ 21 апреля 2010

У меня есть скрипт 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

Ивот что я получаю иногда от моего приятеля Крона:

/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

Так что, когда это произойдет, я хочу просто удалить имя файла.sql, потому что у него будет некоторое количество вставок,но не все.Я знаю, что в bash есть способ зафиксировать состояние вывода команды, true или false, а затем, если это false, сделать что-то.

Ответы [ 2 ]

2 голосов
/ 21 апреля 2010

Если mysqldump будет убит, у него будет код выхода! = 0:

if ! mysqldump ...;then 
  rm ...
fi
0 голосов
/ 21 апреля 2010

Вы можете использовать ps или pgrep, чтобы узнать, работает ли процесс по его имени. Или вы можете использовать lsof в файле SQL, чтобы узнать, обращается ли процесс к файлу. Однако, если процесс завершится нормально, этого «открытого» соединения больше не будет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...