On 20.07.2012 10:54, Stanislav Maslovski wrote: > 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. Кстати, точно... Надо тогда проверять процесс по имени файла. Хотя, не факт, что имя не могло измениться (переименовали программку просто - и всё). По идее, остаётся только мьютекс. Ну или тот же flock.
>> 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. В упор не вижу. Где? -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/5009953c.2060...@yandex.ru