Portál AbcLinuxu, 19. července 2025 12:09
LOCKFILE="/some/file/somewhere" if [ -f "$LOCKFILE" ];then echo "Already running"; exit; fi; touch "$LOCKFILE" . . . something . . . rm "$LOCKFILE"
flock -x -n
".
Tady je hlavní problém to, že skript nemusí skončit čistě a pak tam soubor zůstane.To mě ani nenapadlo, dobrý postřeh.
Čistší by bylo použít např. "flock -x -n
".
Můžete ten flock upřesnit? Dík
man flock
i s příkladem v sekci Description nebo EXAMPLES? ( flock -n 9 || exit 1 # ... commands executed under lock ... ) 9>/var/lock/mylockfileYMMV (Your Manual May Vary)
Vyhradíte si pro ten skript nějaký soubor pro účely zamykání a napíšete si wrapper, kde bude jen něco jako
#!/bin/bash flock -x -n /var/lock/cool_script -c /usr/bin/cool_script
Skript pak budete spouštět výhradně přes ten wrapper. Někdy se pro jednoduchost coby zamykací soubor používá přímo ten skript, ale tam se pak v závislosti na použitém filesystému a verzi linux-utils můžete dostat do problémů s právy.
trap 'rm -f "$lockfile"; exit $?' INT TERM EXIT
Vcelku pekne je to rozvedene zde:
imho lepci kontrolvat existenci procesu - ps nebo pgrepJako takto?
LOCK=$(ps -a | greep precedent.sh) if [ -z $LOCK ] then precedent() else echo "Je povolena pouze jedna instance....." fi
grep nazev
a grep [n]azev
??? Však to je to samé.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.