Ich möchte eine E-Mail senden, wenn eine Datei eine bestimmte Größenbeschränkung erreicht.
Die einzige Möglichkeit, dies zu tun, besteht darin, einen Cronjob durchzuführen, der die Dateigröße überprüft und die E-Mail sendet, wenn die Datei größer als die gewünschte Größe ist.
Es scheint mir jedoch eine schlechte Lösung zu sein, einen Cronjob hinzuzufügen, der beispielsweise alle 15 bis 30 Minuten die Größe einer Datei überprüft.
Ich habe mich gefragt, ob es eine bessere Möglichkeit gibt, automatisch zu erkennen, wann an die Datei Text angehängt wird (Ereignis?), Damit ich dann die Größe überprüfen und die gewünschte Behandlung durchführen kann.
inotify
ist etwas, auf das Sie achten sollten.Antworten:
Ich kann mir zwei Ansätze vorstellen, um dies zu tun. Sie können entweder eine while-Schleife verwenden, die einen "stat" -Befehl mit einer festgelegten Häufigkeit ausführt und eine Überprüfung durchführt, um festzustellen, ob die Dateigröße Ihre gewünschte Größe überschritten hat. Wenn ja, senden Sie eine E-Mail. Diese Methode ist in Ordnung, kann jedoch etwas ineffizient sein, da der Befehl "stat" unabhängig davon ausgeführt wird, ob ein Ereignis in der Datei vorhanden war oder nicht, und zwar mit der festgelegten Zeitfrequenz.
Die andere Methode umfasst die Verwendung von Dateisystemereignissen, die Sie mithilfe des Befehls für Beobachter abonnieren können
inotifywatch
.Methode 1 - Beispiel für alle X Sekunden
Wenn Sie Folgendes in ein Skript einfügen, sagen Sie
notify.bash
:Wenn Sie es dann ausführen, wird über jeden Zugriff auf die Datei berichtet. Wenn dieser Zugriff dazu führt, dass die Dateigröße Ihre Mindestgröße überschreitet, wird eine E-Mail zum Senden und Beenden ausgelöst. Andernfalls wird die aktuelle Größe gemeldet und die Datei weiter angezeigt.
Methode 2 - Überprüfen Sie nur das Beispiel für Zugriffe
Die effizientere Methode wäre, die Datei nur zu überprüfen, wenn tatsächlich Zugriffe vorliegen. Die Arten von Zugriffen können variieren. In diesem Beispiel wird veranschaulicht, wie nur Dateizugriffe überwacht werden. Sie können jedoch nur andere Ereignisse überwachen, z. B. das Schließen der Datei. Wieder werden wir diese Datei benennen ,
notify.bash
:Das Ausführen dieses Skripts würde zu folgender Ausgabe führen:
Die Datei generiert eine Aktivität für die Datei und gibt nun die folgende Größe an:
Die Ausgabe unseres Benachrichtigungsskripts:
An welchem Punkt würde es verlassen.
Email schicken
Um diese Aktivität auszuführen, können Sie einfach Folgendes im Skript ausführen:
Überlegungen
Die zweite Methode funktioniert in den meisten Situationen.
$maxsize
Dies ist nicht der Fall, wenn die Datei bereits den Zeitpunkt überschreitet, an dem das Skript aufgerufen wird, und die Datei vom Typ keine weiteren Ereignisse enthältaccess
. Dies kann entweder durch eine zusätzliche Überprüfung des Skripts beim Aufrufen oder durch Erweitern der Ereignisse behoben werden, auf dieinotifywatch
reagiert wird.Verweise
quelle