Остановить запись в файл захвата после того, как он достигнет определенного размера

Я думаю это git это не хорошо для Вас, я также думаю это rsync это намного лучше подходит для Вашей задачи, так как просто необходимо сохранить файлы в синхронизирующем мерзавце, не идеально, по-моему, потому что:

  • Вам, по-видимому, не нужна никакая модель ветвления/управления версиями/распределять
  • необходимо иметь дело с файлами, мерзавец не имеет дело с файлами непосредственно, вкратце мерзавец видит каждый "объект" в файловой системе (файлы и директора в основном), поскольку SHA1 хеширует, как следствие нет никакого способа действительно восстановить файл или просто сделать что-либо характерное для файла, единственная вещь, которую мерзавец может сказать, состоит в том, если контент ответвления изменяется или нет, вот именно, и это не делает даже отслеживает в середине, например, контрольная сумма сделана, когда Вы фиксируете не, когда Вы добавляете файлы к этапу.

4
02.08.2015, 12:30
2 ответа

В man xz вы обнаружите, что -9 требует 674 MiB памяти для сжатия (и что это полезно, только если вы сжимаете файлы больше 32 MiB). Попробуйте добавить сведения об этом значительном свопе, чтобы обеспечить достаточное количество виртуальной памяти для операции (предполагая, что вы используете всю текущую память для других целей).

-121--98952-

dumpcap , низкоуровневая программа захвата трафика Wireshark , может получить команду прекратить захват после определенных условий с помощью опции -a . Вы можете прекратить захват после написания 60MB. Это не то же самое, что измерение трафика, поскольку он зависит от кодировки файла, но он должен быть достаточно близок для большинства целей (и в любом случае точный трафик зависит от того, на каком уровне протокола вы измеряете его - Ethernet, IP, TCP, приложение,...).

dumpcap -i eth0 -a filesize:61440 -w capture.dump
5
27.01.2020, 20:52

Вот действительно грязный метод, который можно использовать с Perl и командой perl system . tcpdump будет выгружать целые пакеты -s 0 интерфейса wlan0 -i wlan0 в файл tcpdump.pcap . В моем примере он остановит все процессы и отключит интерфейс после того, как размер файла превысит 1 МБ. Измените в соответствии с вашими потребностями. Запустите его с помощью sudo . Оператор sleep приостанавливает выполнение программы, чтобы дать возможность tcpdump запуститься.

Я использую Linux Mint, поэтому пути к программам и имена интерфейсов в вашей системе могут отличаться.

#!/usr/bin/perl
use warnings;
use strict;

my $file = 'tcpdump.pcap';
my $int = 'wlan0';
my $bytes = 1000000;

my $pid = open my $pipe, 
  "| /usr/sbin/tcpdump -n -i $int -s 0 -w $file &",
  or die $!;

sleep 3;

while (1){

    if (-s $file > $bytes){
        print "Killing PID $pid, tcpdump and disabling $int\n";
        system "kill -9 $pid; killall tcpdump";
        system "/sbin/ifconfig $int down";
        exit;
    }
}
1
27.01.2020, 20:52

Теги

Похожие вопросы