Portál AbcLinuxu, 4. června 2025 23:11


Dotaz: Smazany bezici script

9.2.2009 18:32 Roman
Smazany bezici script
Přečteno: 386×
Odpovědět | Admin
Rad bych se zeptal, spustil jsem script na pozadi (pres screen) ktery mi bude neco zalohovat cca 2-3 hodiny... Bohuzel se mi ho ale podarilo omylem smazat. Script momentalne bezi ale az dobehne tak bude po nem.. Ma otazka zni.. je nekde ulozen otisk toho scriptu (ktery stale jeste bezi), abych z nej mohl data vytahnout?
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

9.2.2009 19:02 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Smazany bezici script
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pravděpodobně je ten skript stále ještě na disku, protože na něj drží odkaz ta spuštěná instance. Pokud víte, co v tom skriptu bylo (a skript je relativně krátký), můžete zkusit grep přímo na diskový oddíl, kde skript byl (např. /dev/hda1). Možná byste ho také mohl najít v /proc/pid_procesu/mem.
9.2.2009 19:31 Roman
Rozbalit Rozbalit vše Re: Smazany bezici script
/proc/pid_procesu/mem bohuzel je prazdny.. grep na partysne vzhledem k tomu ze je to plny 1Tb nepripada v uvahu. I tak ale dekuji za odpoved.
9.2.2009 21:20 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Smazany bezici script
Odpovědět | | Sbalit | Link | Blokovat | Admin
1.) poslat procesu signal SIGSTOP. Cim ziskas viac casu ako 2-3h na najdenie riesenia.

2.) pravedpodobne niektory z linkov v /proc/<cislo_procesu>/fd/* ukazuje na subor so skriptom. Skopirovat jeho obsah do noveho suboru a mas to zachranene.

3.) Ak si na ten disk nezapisoval, tak prikaz stylu grep -C200 "retazec zo skriptu" /dev/sda1 >vystup by ti mohol vyrobit subor, kde sa ten skript uz najde rucne. Pokial nie je tak velky, ze je fragmentvany po disku (v tom pripade podobnym sposobom najst vsetky kusy)
If you hold a Unix shell up to your ear, you can you hear the C.
9.2.2009 21:28 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Smazany bezici script
pravedpodobne niektory z linkov v /proc/cislo_procesu/fd/* ukazuje na subor so skriptom. Skopirovat jeho obsah do noveho suboru a mas to zachranene.
Tam jsou bohužel symbolické linky…
9.2.2009 21:38 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Smazany bezici script
To je pravda, ale nevadi to. Prave som to vyskusal. Link vyzera ako:
$ ls -la /proc/9918
total 0
dr-x------ 2 semo users  0 2009-02-09 21:34 .
dr-xr-xr-x 6 semo users  0 2009-02-09 21:34 ..
lrwx------ 1 semo users 64 2009-02-09 21:35 0 -> /dev/pts/9
lrwx------ 1 semo users 64 2009-02-09 21:35 1 -> /dev/pts/9
lrwx------ 1 semo users 64 2009-02-09 21:34 2 -> /dev/pts/9
lr-x------ 1 semo users 64 2009-02-09 21:35 255 -> /home/semo/tmp/aaa (deleted)
lrwx------ 1 semo users 64 2009-02-09 21:35 6 -> /dev/pts/9
l-wx------ 1 semo users 64 2009-02-09 21:35 8 -> pipe:[66564]
ale cat /proc/9918/255 vypise kod skriptu.

Subor sa maze z disku, az ked na neho neexistuje ziadny odkaz a beziaci skript ma odkaz minimalne od procesu, takze by sa mal dat dohladat. Ale to asi pre teba nebude novinka.
If you hold a Unix shell up to your ear, you can you hear the C.
10.2.2009 09:01 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Smazany bezici script
Tak to je ten symbolický odkaz v /proc pěkný podvod... Protože symbolický odkaz ukazuje na jméno souboru, které bylo tím smazáním souboru zrušeno. Navíc normální hardlink nemůže odkazovat na jiný oddíl. Takže to musí být nějaký speciální typ odkazu, který se do uživatelského prostoru tváří jako symbolický odkaz, ale při čtení nebo zápisu se chová jako hardlink.
10.2.2009 12:25 marbu | skóre: 31 | blog: hromada | Brno
Rozbalit Rozbalit vše Re: Smazany bezici script
No tak prece jenom musite brat ohled na to, ze ten soubor je z /proc. Ono je to obecne cely takovy maly jaderny „podvod“, vzdyt napr. vetsina souboru v nem ma nulovou velikost :-)
There is no point in being so cool in a cold world.
10.2.2009 13:26 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Smazany bezici script
Napadlo mne to, zda mám tomu ls -l v /proc věřit, ale říkal jsem si, že když je ten soubor pro uživatelský prostor speciálně označen jako symbolický link, asi se tak opravdu bude chovat. Nějak mi totiž uniká, jaká je výhoda v tom, že se ten soubor netváří jako normální soubor s obsahem, ale zároveň jako symbolický link. Tedy kromě toho, že se tím ušetří jeden soubor (pro každý deskriptor souboru každého procesu) a obsah souboru i cesta k němu mohou být vyjádřeny jednou entitou.
10.2.2009 14:25 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Smazany bezici script
Mozno je to kvoli pocitaniu odkazov na realne subory. Symlink nezvysi counter a nemusi sa upravovat logika odmazavania suborov podla toho ci je alebo nie je namountovany /proc.
If you hold a Unix shell up to your ear, you can you hear the C.
10.2.2009 14:30 marbu | skóre: 31 | blog: hromada | Brno
Rozbalit Rozbalit vše Re: Smazany bezici script
Osobne mi to prijde mi elegantnejsi nez mit na kazdy deskriptor souboru dva soubory - jeden „jako-simlink“ a druhy „jako-hardlink“. Protoze dokud ten soubor nikdo nesmazal, nemusi vas ten rozdil zajimat a vystacite si se simlinkem, z ktereho dostanu jak obsah tak cestu. A v momente, kdy samotny soubor nekdo smaze a ten deskriptor je posledni odkaz na nej, by se stejne musela udelat nejaka magie i v pripade tech 2 linku: protoze pokud by ten prvni link mel byt normalni soubor, musel by pak tvrdit, ze je souborem s 0 hardlinky, ale presto z nej de cist. Navic pro zjisteni stavu jednoho deskriptoru bych vzdy musel zjistovat stav obou tech linku (ale to asi zalezi na tom, jak by se to presne udelalo).
There is no point in being so cool in a cold world.
10.2.2009 14:38 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Smazany bezici script
musel by pak tvrdit, ze je souborem s 0 hardlinky, ale presto z nej de cist
Nikoli. Odkaz na ten soubor stejně drží ten proces jako takový, takže když by jej navíc držel ještě soubor v /proc, ničemu by to nevadilo. Se zánikem procesu nebo uvolněním toho souboru by zanikl i ten odkaz v /proc (a FS by pak ten soubor mohl konečně fyzicky smazat).
10.2.2009 15:00 marbu | skóre: 31 | blog: hromada | Brno
Rozbalit Rozbalit vše Re: Smazany bezici script
Ano, tak by to take slo udelat (a urcite by se dala vymyslet spousta dalsich moznosti). Ale pak byste bud musel zvetsovat s kazdym desktriptorem pocet hadrlinku, nebo by ten pocet hardlinku byl nesmyslny v pripade, ze jedinym odkazem na soubor je jeho deskriptor (a pak by neslo se samotneho „jako-hardlinku“ poznat, zda je smazany nebo ne).
Ona vubec moznost zjistit byvalou cestu z deskriptoru na smazany soubor je v Linuxu „navic“, nebo aspon jsem slysel, ze existuji unixy, ktere to neumi - coz by mohl byt dalsi duvod pro reprezetaci deskriptoru jednou entitou.
There is no point in being so cool in a cold world.
10.2.2009 15:16 karel
Rozbalit Rozbalit vše Re: Smazany bezici script

/proc je virtualni filesystem, o zadnych hardlincich apod. v nem nejde vubec uvazovat - vsechno v nem je "podvod"

9.2.2009 21:55 marbu | skóre: 31 | blog: hromada | Brno
Rozbalit Rozbalit vše Re: Smazany bezici script
To sice ano, ale stale je mozne pouzit klasicky cp, napr.: cp /proc/28653/fd/255 ~/obnoveny_skript (schvalne si to zkuste, je to rychlejsi nez grepovat celou pamet ;-). Jedine co nesmite udelat je nakopirovat ten simlink zpatky na sve puvodni umisteni.
There is no point in being so cool in a cold world.
9.2.2009 21:31 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Smazany bezici script
Skusil som si pregrepoval 20GB partitionu na mojom novom 1TB disku = 4 minuty. T.j. za 3.5-4h by si mal precitat cely disk. Nie je to malo, ale asi je to stale menej ako pisat skript odznova. Navyse to nie je tvoj cas. Pokial je predmetom zalohovania aj skript samotny, tak je aj lepsi sposob ako ho ziskat.
If you hold a Unix shell up to your ear, you can you hear the C.

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.