uscrontab: ne pas afficher plusieurs fois un même message quand le verrou est posé. n'afficher le message sur la pause qu'avec un tty

This commit is contained in:
Jephté Clain 2015-12-07 18:26:52 +04:00
parent 9821d2021d
commit dbc4d9a62f
1 changed files with 13 additions and 10 deletions

View File

@ -494,7 +494,7 @@ elif [ "$action" == "run" ]; then
# ne pas tenir compte de l'état de pause # ne pas tenir compte de l'état de pause
: :
elif check_pause "$pausefile" "$now"; then elif check_pause "$pausefile" "$now"; then
ewarn "En pause. Réactiver avec $scriptname -Y" isatty && ewarn "En pause. Réactiver avec $scriptname -Y"
ac_clean "$lockfile" ac_clean "$lockfile"
exit 0 exit 0
elif [ -f "$pausefile" ]; then elif [ -f "$pausefile" ]; then
@ -503,6 +503,7 @@ elif [ "$action" == "run" ]; then
if [ -n "$uscrontab" ]; then if [ -n "$uscrontab" ]; then
default_lockfile="/var/run/$scriptname$uscrontab.lock" default_lockfile="/var/run/$scriptname$uscrontab.lock"
lockdesc="$scriptname $uscrontab"
else else
set_usercrontabs usercrontabs set_usercrontabs usercrontabs
ac_set_tmpfile uscrontab ac_set_tmpfile uscrontab
@ -511,6 +512,7 @@ elif [ "$action" == "run" ]; then
cat "$usercrontab" >>"$uscrontab" cat "$usercrontab" >>"$uscrontab"
done done
default_lockfile="/var/run/$scriptname$USCRONTAB_USER.lock" default_lockfile="/var/run/$scriptname$USCRONTAB_USER.lock"
lockdesc="$scriptname $USCRONTAB_USER"
fi fi
if [ "$lockfile" == auto ]; then if [ "$lockfile" == auto ]; then
@ -524,9 +526,7 @@ elif [ "$action" == "run" ]; then
[ -n "$lockdelay" ] || lockdelay="$USCRONTAB_LOCKDELAY" [ -n "$lockdelay" ] || lockdelay="$USCRONTAB_LOCKDELAY"
if [ -n "$lockfile" ]; then if [ -n "$lockfile" ]; then
lockwarn="${lockfile%.lock}.lockwarn" lastmsgfile="${lockfile%.lock}.lastmsg"
autoclean "$lockwarn"
retry=1 retry=1
while [ -n "$retry" ]; do while [ -n "$retry" ]; do
case "$(lf_trylock -h "$lockdelay" "$lockfile")" in case "$(lf_trylock -h "$lockdelay" "$lockfile")" in
@ -535,13 +535,16 @@ elif [ "$action" == "run" ]; then
exit 0 exit 0
;; ;;
stale) stale)
msg="Un verrou sur '$scriptname $uscrontab' est posé depuis plus de $lockdelay heures. Veuillez faire vos vérification et supprimer le cas échéant le fichier $lockfile" msg="Un verrou sur '$lockdesc' est posé depuis plus de $lockdelay heures. Veuillez faire vos vérification et supprimer le cas échéant le fichier $lockfile"
lastmsg=
[ -f "$lastmsgfile" ] && lastmsg="$(<"$lastmsgfile")" || lastmsg=
logger -p cron.warn -t "$scriptname" -- "$msg" logger -p cron.warn -t "$scriptname" -- "$msg"
if [ -f "$lockwarn" ]; then if [ "$msg" != "$lastmsg" ]; then
edebug "$msg"
else
touch "$lockwarn"
ewarn "$msg" ewarn "$msg"
echo "$msg" >"$lastmsgfile"
else
edebug "$msg"
fi fi
exit 1 exit 1
;; ;;
@ -550,7 +553,7 @@ elif [ "$action" == "run" ]; then
esac esac
done done
ac_clean "$lockwarn" rm -f "$lastmsgfile" 2>/dev/null
autoclean "$lockfile" autoclean "$lockfile"
fi fi