2013-04-12 2 views
0

У меня есть сценарий, который записывается в файл, а затем выгружает этот файл в базу данных. Мне нужно, чтобы эта задача выполнялась как можно чаще, но никогда не запускать больше, чем экземпляр одновременно (или писать лишние вещи в один и тот же файл).Scheduled disk scan

Как я это делаю в скрипте оболочки Я проверяю, существует ли файл, и если это так, я выхожу из сценария. В конце каждого скрипта он удаляет файл.

Это работает в 95% случаев. Однако, если сервер перезагружен (что происходит получастотно), файл, который был записан, останется, и каждый раз, когда скрипт вызывается после этого, он выйдет, потому что файл уже существует.

Что было бы неплохо решить эту проблему?

+0

Как планировать сборку файлов на crontab для каждой перезагрузки? Это условие '@ restart' – fedorqui

+0

см. [Этот вопрос] (http://stackoverflow.com/questions/185451/quick-and-dirty-way-to-ensure-only-one-instance-of-a-shell -script-is-running-at), который в значительной степени зависит от вашего состояния. – Petesh

ответ

0

Вы можете проверить, используют ли какие-либо процессы файл с файлом 'fuser'. Он вернет PID любой программы, используя файл. Если нет PIDS, вы можете стереть его и начать снова.

+0

Спасибо, какая команда 'grep' или' fuser' проверит, используется ли файл example.txt пользователем " корень "? – David542

+0

"fuser example.txt" , хотя всегда лучше всего включить полный путь к файлу – Tony