Einfache Möglichkeit, die filegröße (Stdout) auf einer Shell-Skriptebene zu beschränken?

Ok, das ist ein sehr praktischer Anwendungsfall aus meiner Sicht.

Lassen Sie sagen, ich habe eine einfache Shell Oneliner, die logging der Ausgabe in eine file. Das kann einfach alles sein, zum Beispiel tcpdump. Gibt es irgendeine generische und triviale Weise, um sicherzustellen, dass die Ausgabedatei die angegebene Größe nicht überschreitet?

Resoning hinter diesem, ist zu schützen vor dem Ausfüllen der gesamten verfügbaren Platz auf der Mount-Punkt aus Versehen. Wenn ich das Skript vergesse, oder es wird GBs data pro Stunde geben, dann kann diese einfache Debugging-Aufgabe zu einem möglichen Systemabsturz führen.

Jetzt bin ich mir bewusst, dass die Optionen in einigen der Tools (wie Kombination von -W / -C in tcpdump). Was ich brauche, ist ein sehr generisches Failsafe.

Lange Geschichte kurz – wenn ich ein Skript wie:

% this -is --my=very|awsome|script >> /var/tmp/output.log 

So stellen Sie sicher, dass output.log nie größer als 1GB wird.

Skript kann abstürzen, getötet werden oder was auch immer.

Solution, die ich suche, sollte einfach und einfach sein, wobei nur Werkzeuge in beliebten Distributionen wie Ubuntu / Debian / Fedora zur Verfügung stehen. Im Allgemeinen etwas weit verbreitet. Kompliziertes, mehrzeiliges Programm ist hier keine Optionen, unabhängig von der Sprache / Technik.

  • Wie kann ich ein lokales bash-Skript auf entfernten Rechnern über ssh ausführen?
  • Gibt es einen Unterschied zwischen der Art und Weise, wie zwei Marken und ein Semikolon in bash arbeiten?
  • Skript zur Suche von Bots aus der Protokolldatei
  • Bash: Unterschied zwischen> und >> Operator?
  • Wie kann ich eine file aufteilen und direkt komprimieren?
  • Erwarten Sie Timeout, in Bash Scripting
  • Chmod 777 rückgängig machen
  • Binär wird nicht ausgeführt, wenn mit einem Pfad ausgeführt wird. ZB> ./ Programm funktioniert nicht aber> Programm funktioniert gut
  • 2 Solutions collect form web for “Einfache Möglichkeit, die filegröße (Stdout) auf einer Shell-Skriptebene zu beschränken?”

    Sie können den head dafür benutzen:

     command | head -c 1G > /var/tmp/output.log 

    Es akzeptiert K, M, G und dergleichen als Suffixe (Bytes sind die Voreinstellung). Anhängen 'B', um die Basis 10 Versionen zu verwenden.

    Legen Sie die maximale filegröße für einen Benutzer fest, der nur zum Ausführen dieser Skripts verwendet wird.

    Die file /etc/security/limits begrenzt einen Benutzer mit den Werten von "default", es sei denn, es gibt explizite Werte für einen bestimmten Benutzer. Diese benutzerspezifischen Werte überschreiben die Standardwerte. Die file kann je nach Betriebssystem einen etwas anderen Namen haben.

    Wenn Ihr Log-Benutzer log_maker heißt, fügen Sie diese Zeile zur file hinzu:

    log_maker hard fsize 1000000

    Die Zahl nach fsize ist die maximale filegröße in KB.

    Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de réseau.