Portál AbcLinuxu, 12. května 2025 04:33

Dotaz: (Ne)manipulace s otevřeným souborem

24.5.2010 09:00 Petr
(Ne)manipulace s otevřeným souborem
Přečteno: 267×
Odpovědět | Admin
Ahoj, jsem tu zpatky s novym dotazem a predem moc diky za pripadne odpovedi :)

Tcpdumpem chytam sitovy provoz po 100MB souborech, s nazevem test-datumcas.pcap, do adresare /home/test/ , jelikoz potrebuji se souborama dale pracovat, potrebuju je kronem presunout do adresare /home/test2 , jenze presunuti nebrani tomu, ze se presune i soubor, do ktereho je prave zapisovano a prave tomu potrebuji predejit. A priznam se, vubec nevim, jak na to. Jeste jednou diky za pomoc.

Petr
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

24.5.2010 10:52 ET
Rozbalit Rozbalit vše Re: (Ne)manipulace s otevřeným souborem
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zdar, reseni je spoustu: napada me nejjednodussi - aktualni soubor nazyvat treba current.pcap a potom stehovat ostatni soubory treba

mv test-*.pcap /tmp

pokud to nezlze at uz z tech ci onech duvodu, dal by se pouzit rsync --exclude "dneska-test.pcap" jeste s dalsima parametrama ktery najdes v manu (man rsync), musis ale nekde predem vypocitat jmeno exclude souboru

nebo sem nasel tohle http://www.experts-exchange.com/OS/Unix/HP-UX/Q_25274520.html

#!/bin/sh

SRCDIR="$1"; DSTDIR="$2"; NOSDAYS="$3"; EXCEPTIONLIST="/path/to/exception/list"

cd $SRCDIR

for file in $(find $SRCDIR -type f -mtime +$NOSDAYS | grep -F -f $EXCEPTIONLIST) do dir=$(dirname $file) [ -d $DSTDIR/$dir ] || mkdir -p $DSTDIR/$dir echo "Copying $file to $DSTDIR/$dir" mv $file $DSTDIR/$dir done

24.5.2010 11:34 NN
Rozbalit Rozbalit vše Re: (Ne)manipulace s otevřeným souborem
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nebude jednoduzsi je misto presouvani kopirovat ?

NN
24.5.2010 12:21 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: (Ne)manipulace s otevřeným souborem
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co potřebujete? Přestat do souboru zapisovat, přesunout ho jinam a začít zapisovat do nového souboru? Nebo zapisovat pořád do jednoho souboru, a vždy si vzít jeho aktuální stav a ten nějak zpracovat? V druhém případě soubor prostě okopírujte, ale moc bych nechápal smysl takového počínání. Pokud jde o první případ, budete muset zápis přerušit, soubor přesunout a začít nový zápis. Dalo by se to dělat nehezky ukončením tcpdumpu a jeho novým spouštěním, lepší ale bude přesměrovat výstup tcpdumpu do nějakého logovacího nástroje, který už má rotaci logů vyřešenou. Použít by na to šel např. multilog z Daemontools, ale podobných nástrojů bude víc.
24.5.2010 13:47 Petr
Rozbalit Rozbalit vše Re: (Ne)manipulace s otevřeným souborem
Spustim dumpcap(tcpdump), reknu mu, ze chci, aby ukladal traffic do 100MB souborů a nazval soubory test.pcap. Dumpcap uklada traffic tak, ze naplni prvni soubor, zavre, vytvori dalsi atd.. Vysledne soubory pak vypadaji takto: test1-datumcas.pcap test2datumcas.pcap test3-datumcas.pcap atd.. Pricemz potrebuju vsechny soubory presunout jinam, kde nad nimi provedu dalsi operace a puvodni soubor zahodim, kopirovani neni vhodne, opravdu potrebuju soubory premistit. Zaroven potrebuju, aby mi neutekly zadne pakety, tudiz neni mozne dumpcap vypnout, presunout soubory a pustit znova..

Dik :)
24.5.2010 13:56 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: (Ne)manipulace s otevřeným souborem
Pokud ty soubory umí rozdělit už dumpcap, pak nevím, na co se tedy ptáte.
24.5.2010 14:50 Petr
Rozbalit Rozbalit vše Re: (Ne)manipulace s otevřeným souborem
Ptam se, jak automatizovane presunout jiz hotove soubory, aniz bych presunul ten, ktery se prave tvori. Jelikoz operace presunuti, presune i soubor, do ktereho se prave zapisuje. Napada me udelat neco jako ls a posledni radek vynechat, ale opravdu nevim jak na to, jsem zacatecnik.

Diky
24.5.2010 15:09 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: (Ne)manipulace s otevřeným souborem
ls -1v vypíše soubory a adresáře – na každý řádek jeden, a seřadí je podle abecedy, čísla seřadí podle číselné hodnoty (takže a1, a2, a10…). ls -1v | head -1 vypíše vše až na poslední řádek (soubor s „abecedně posledním“ jménem).
24.5.2010 21:21 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: (Ne)manipulace s otevřeným souborem
To nevadí, že ten přesunutý soubor má otevřený (pokud to zůstává na stejném zařízení). Prostě do něj bude zapisovat pořád a až ho zavře, otevře si nový zase v původním adresáři. Pro zápis používá inody a cesta ho zajímá jen v okažiku otevírání, aby zjistil z cesty správný inode.
24.5.2010 21:22 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: (Ne)manipulace s otevřeným souborem
Vadí to asi z toho důvodu, že zpracovávající nástroj nepočítá s tím, že mu soubor poroste „pod rukama“.
24.5.2010 16:28 poko | skóre: 9
Rozbalit Rozbalit vše Re: (Ne)manipulace s otevřeným souborem
Odpovědět | | Sbalit | Link | Blokovat | Admin
mv `ls -I \`lsof -F n | grep test | grep pcap\`` /home/test2/ neviem ci to bude fungovat.. ale ls -> vsetky subory okrem toho ktory sa najde v lsof (neviem ako inak ho vygrepovat) a potom mv myslim ze existuje viac sposobov ako to spravit a toto je ten obskurnejsi ;) co tak findom najst a mv subory ktore maju 100M a viac? tie uz by mohli byt kompletne
24.5.2010 18:28 Marble | skóre: 27 | blog: marble
Rozbalit Rozbalit vše Re: (Ne)manipulace s otevřeným souborem
Otevřené soubory konkrétního známého procesu umí lsof vypsat rovnou pomocí parametru -p, což by bylo rozhodně lepší, než grepovat kompletní výpis (který navíc může čekat na kdovíjaký timeout při rozbitých sítových mountech apod.).

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.