Ich möchte meine Gtags automatisch aktualisieren, aber nur, wenn das System im Leerlauf ist.
Um dies zu erreichen, verwende ich, iupdate
um die interessanten Teile meines Quellordners zu überwachen. Aber ich habe ein Problem mit dem „Leerlauf“-Teil: Ich weiß, dass der batch
Befehl Jobs ausführen kann, wenn die Last unter 1,5 (oder einen konfigurierten Wert) fällt. Aber es kann vorkommen, dass er mehrmals iupdate
ausgeführt wird batch
, bevor der Job ausgeführt wird, was zu mehreren Gtags-Updates führen würde.
Natürlich könnte ich eine Sperrdatei erstellen und batch
nur starten, wenn sie vorher nicht aufgerufen wurde.
Aber gibt es eine standardisiertere Methode? Ich hoffe auf so etwas wie batch_only_once
...
Antwort1
Das hier erledigt es für Sie:
$ cat /etc/lsb-release | grep -i desc
DISTRIB_DESCRIPTION="Ubuntu 14.04 LTS"
$ apt-cache show run-one
....
Description-en: run just one instance of a command and its args at a time
This utility will run just one instance at a time of some command and
unique set of arguments (useful for cronjobs, eg).
Antwort2
Sie können ein Wrapper-Skript erstellen, das zuerst die atq
anderen Batch-Jobs analysiert und bereinigt, indem es verwendet atrm
.