Isso porque você escreveu -W 3
em vez de -W 48
. Existem, no entanto, outros erros no seu comando.
A opção -G
significa:
-G rotate_seconds
If specified, rotates the dump file specified with the
-w
option every rotate_seconds seconds. Savefiles will have the name specified by-w
which should include a time format as defined by strftime(3). If no time format is specified, each new file will overwrite the previous.If used in conjunction with the
-C
option, filenames will take the form of 'file<count>'.
Como você escreveu -G 3
, você estará girando isso a cada 3 segundos, enquanto declarou
...which captures 30 minutes worth of data
Além disso, o esquema de nomes está errado: acima,
If used in conjunction with the
-C
option, filenames will take the form of 'file<count>'.
Assim, não faz sentido especificar o formato da hora para o nome.
Além disso, a opção -C
não tem argumento, enquanto
de acordo com a página de manual , ela deve:
tcpdump [ -AdDefIKlLnNOpqRStuUvxX ] [ -B buffer_size ] [ -c count ]
[ -C file_size ] [ -G rotate_seconds ] [ -F file ] [ -I interface ] [ -m module ] [ -M secret ] [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ] [ -W filecount ] [ -E spi@ipaddr algo:secret,... ] [ -y datalinktype ] [ -z postrotate-command ] [ -Z user ] [ expression ]
A página do manual afirma:
-C
Before writing a raw packet to a savefile, check whether the file is currently larger than file_size and, if so, close the current savefile and open a new one. Savefiles after the first savefile will have the name specified with the
-w
flag, with a number after it, starting at 1 and continuing upward. The units of file_size are millions of bytes (1,000,000 bytes, not 1,048,576 bytes).
Portanto, você deve especificar -C 100
para produzir arquivos de 100MB.
No final, seu comando deve ser:
tcpdump -i en0 -w /var/tmp/trace -W 48 -G 1800 -C 100 -K -n
Isso rotacionará os arquivos (dos nomes trace1, trace2, ...) ciclicamente, com o período 48, a cada 1800 segundos (= 30 minutos) ou a cada 100MB, o que ocorrer primeiro.