Ich versuche, ein Unix-Skript zu schreiben, das eine Datei abschneidet / leert, die kontinuierlich von einer Anwendung geschrieben / geöffnet wird, wenn sie beispielsweise 3 GB Speicherplatz erreicht. Ich weiß, dass der folgende Befehl es tun würde:
cp /dev/null [filename]
Aber ich werde dies in einer Produktionsumgebung automatisch als Cron-Job ausführen - nur hier posten, um zu sehen, ob ihr Probleme habt, während ihr etwas Ähnliches macht.
logrotate
möglicherweise einen gewissen Wert bietet (aber beim Einrichten ärgerlich ist (nur raten)!).Antworten:
Nur um eine weitere Antwort hinzuzufügen,
:
ist ein No-Op in Bash (POSIX-kompatibel), daher wird die Datei im Wesentlichen nur zum Schreiben geöffnet (wodurch die Datei natürlich abgeschnitten wird) und sofort geschlossen.BEARBEITEN: Wie der Shellter kommentierte, benötigen Sie für die Umleitung keinen Befehl:
Eine einfache Umleitung von selbst löscht die Datei.
quelle
> filename
(wie Sie sicher wissen). Viel Glück für jeden.Ich habe den folgenden Befehl für Debian verwendet
quelle
sudo sh -c ': > filename'
wird auch abgeschnittenfilename
sudo
:sudo cp /dev/null filename
. Ist auchcp
portabel, währendtruncate
nur modernes Linux ist.Das erscheint mir vernünftig. Mit Unix können Sie dies natürlich auf 50 verschiedene Arten tun. Beispielsweise,
quelle
trunc filename
funktioniert mit AIX-Version von UNIX
quelle