Das liegt daran, dass Sie -W 3
geschrieben haben statt -W 48
. Ihr Befehl enthält jedoch andere Fehler.
Die Option -G
bedeutet:
-G rotate_seconds
Falls angegeben, rotiert die mit -w
angegebene Dump-Datei Option alle rotate_seconds Sekunden. Sicherungsdateien haben den durch -w
angegebenen Namen die ein Zeitformat wie von strftime(3) definiert enthalten sollte. Wenn kein Zeitformat angegeben ist, überschreibt jede neue Datei die vorherige.
Bei Verwendung in Verbindung mit -C
Option haben Dateinamen die Form 'Datei
Da Sie -G 3
geschrieben haben , Sie werden dies alle 3 Sekunden drehen, während Sie angegeben haben
...die Daten im Wert von 30 Minuten erfasst
Außerdem ist das Namensschema falsch:von oben,
Bei Verwendung in Verbindung mit -C
Option haben Dateinamen die Form 'Datei
Daher macht es keinen Sinn, das Zeitformat für den Namen anzugeben.
Außerdem die -C
Die Option hat kein Argument, während sie laut der Manpage Folgendes tun sollte:
tcpdump [ -AdDefIKlLnNOpqRStuUvxX ] [ -B buffer_size ] [ -c zählen ]
[ -C Dateigröße ] [ -G rotate_seconds ] [ -F Datei ][ -I Schnittstelle ] [ -m Modul ] [ -M geheim ][ -r Datei ] [ -s Snaple ] [ -T tippen ] [ -w Datei ][ -W Dateianzahl ][ -E [email protected] algo:secret,... ][ -y Datenlinktyp ] [ -z postrotate-Befehl ] [ -Z Benutzer ] [ Ausdruck ]
In der Manpage heißt es:
-C
Bevor Sie ein Raw-Paket in eine Sicherungsdatei schreiben, überprüfen Sie, ob die Datei derzeit größer als file_size ist und wenn ja, schließen Sie die aktuelle Sicherungsdatei und öffnen Sie eine neue. Speicherdateien nach der ersten Speicherdatei haben den mit -w
angegebenen Namen Flagge, mit einer Zahl dahinter, beginnend bei 1 und weiter nach oben. Die Einheiten von file_size sind Millionen Bytes (1.000.000 Bytes, nicht 1.048.576 Bytes).
Sie sollten also -C 100
angeben um 100 MB Dateien zu erzeugen.
Am Ende sollte Ihr Befehl lauten:
tcpdump -i en0 -w /var/tmp/trace -W 48 -G 1800 -C 100 -K -n
Dadurch werden Dateien (mit den Namen trace1, trace2, ...) zyklisch rotiert, mit Periode 48, entweder alle 1800 Sekunden (=30 Minuten) oder alle 100 MB, je nachdem, was zuerst eintritt.
Erweiterung der Antwort von Flabdablet (Änderung von -G 1800
bis -G 300
–Rotation alle fünf Minuten –nur zu Testzwecken),
tcpdump -i en0 -w /var/tmp/trace-%m-%d-%H-%M-%S-%s -W 3 -G 300
gibt Ihnen %m=month
, %d=day of month
, %H=hour of day
, %M=minute of day
, %S=second of day
, %s=millisecond of day
, was zu
/var/temp/trace-03-02-08-30-56-1520002568
/var/temp/trace-03-02-08-35-56-1520002568
/var/temp/trace-03-02-08-40-56-1520002568
Sehr nützlich zum Organisieren von Ablaufverfolgungen für diese lästigen intermittierenden Probleme. Wenn Sie kein Root sind, können Sie auch sudo
eingeben und machen Sie es natürlich zu einem Nohup:
sudo bash -c "nohup tcpdump -i en0 -w /var/tmp/trace-%m-%d-%H-%M-%S-%s -W 3 -G 300 &"
Scheint mir, dass alles, was Sie brauchen, ist
tcpdump -i en0 -G 1800 -w /var/tmp/trace-%H-%M.pcap
Der Formatbezeichner strftime, den -G im Dateinamen -w erwartet, muss kein vollständiges Datum und keine vollständige Uhrzeit darstellen. Mit nur %H und %M darin und einer Rotationszeit von genau einer halben Stunde generiert jeder gegebene Aufruf von tcpdump immer nur zwei verschiedene %M-Werte im Abstand von einer halben Stunde, und die Trace-Dateien von gestern werden zur selben Stunde überschrieben und Minutenzahlen rollen wieder herum.