On Thu, Jul 19, 2012 at 10:53:11AM +0300, Igor Chumak wrote: > Защиту от запуска второй копии я делал так: > > if [ -f $lockfile ] > then > echo "Lock file $0.lock exist!" > while [ -f $lockfile ] > do > pid=`cat $lockfile` > if [ -n "$pid" ]; then
Скрипт мог умереть, не потерев за собой свой lockfile, а его PID - мог быть занят новым процессом (каким-нибудь рефоркающимся демоном, например). В результате - deadlock. > echo "pid=$pid in lockfile; our pid=$$" > if ps $pid ; then > echo "Process exist; waiting" > else > echo "no process with $pid; remove lockfile" > rm -f $lockfile > fi > else > echo "no process with $pid; remove lockfile" > rm -f $lockfile > fi > echo "sleep 10s"; sleep 10 > done > fi Ну и тут, строго говоря, имеет место быть race condition. > echo $$>$lockfile > > (Если обнаруживаем вторую копию - ждем пока она завершится.) -- Stanislav -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected] Archive: http://lists.debian.org/[email protected]

