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

Re: [bash] PID file



Pol Hallen scrisse in data 05/04/2013 14:48:
> [...]
>
> ma il problema è: se mentre rsync è in esecuzione cade la rete (o
> altro), rsync si blocca e il PID file non viene rimosso, ergo rsync
> avviato da cron il giorno successivo non partirà più.
>
> Qualche idea?
>
Non ho ben capito cosa faccia rsync quando cade la rete... se si blocca
allora sei tu a killare il tuo processo è giusto?

Io comunque in queste situazione uso il comando trap; qualcosa come:

#!/bin/bash

[...]

# inizio fase critica
lock_path=/.../.../...
if [ -e $lock_path ]; then
    $logger "E: another instance of $(basename $0 .sh) is running: exit
forced"
    exit 1
fi
main_trap_exit="rm -f $lock_path"
trap "{ $main_trap_exit; exit 1 }" INT TERM EXIT
echo $$ > $lock_path

[inserisci qui il tuo codice critico]

eval $main_trap_exit
trap - INT TERM EXIT

Ciao

Piviul


Reply to: