[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Несколько вопросов вразброс



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.
В упор не вижу. Где?


Reply to: