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
:
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"
exit 0
elif [ -f "$pausefile" ]; then
@ -503,6 +503,7 @@ elif [ "$action" == "run" ]; then
if [ -n "$uscrontab" ]; then
default_lockfile="/var/run/$scriptname$uscrontab.lock"
lockdesc="$scriptname $uscrontab"
else
set_usercrontabs usercrontabs
ac_set_tmpfile uscrontab
@ -511,6 +512,7 @@ elif [ "$action" == "run" ]; then
cat "$usercrontab" >>"$uscrontab"
done
default_lockfile="/var/run/$scriptname$USCRONTAB_USER.lock"
lockdesc="$scriptname $USCRONTAB_USER"
fi
if [ "$lockfile" == auto ]; then
@ -524,9 +526,7 @@ elif [ "$action" == "run" ]; then
[ -n "$lockdelay" ] || lockdelay="$USCRONTAB_LOCKDELAY"
if [ -n "$lockfile" ]; then
lockwarn="${lockfile%.lock}.lockwarn"
autoclean "$lockwarn"
lastmsgfile="${lockfile%.lock}.lastmsg"
retry=1
while [ -n "$retry" ]; do
case "$(lf_trylock -h "$lockdelay" "$lockfile")" in
@ -535,13 +535,16 @@ elif [ "$action" == "run" ]; then
exit 0
;;
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"
if [ -f "$lockwarn" ]; then
edebug "$msg"
else
touch "$lockwarn"
if [ "$msg" != "$lastmsg" ]; then
ewarn "$msg"
echo "$msg" >"$lastmsgfile"
else
edebug "$msg"
fi
exit 1
;;
@ -550,7 +553,7 @@ elif [ "$action" == "run" ]; then
esac
done
ac_clean "$lockwarn"
rm -f "$lastmsgfile" 2>/dev/null
autoclean "$lockfile"
fi