Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Potíže se symbolickými odkazy

Jan Štěpánek
Jan Štěpánek
13. 11. 2007 15:20

Potíže se symbolickými odkazy

Ahoj,
Na linuxu provozujeme software pro simulační výpočty dynamiky katalyzátoru. Vstup a výstup se odehrává pouze přes soubory. Simulační program má spoustu vstupních souborů, z nichž většina popisuje katalyzátor a zbytek vstupní směs. Potřebuji provést několik simulací (každá ve vlastním adresáři). Chci ušetřit místo, a tak jsem shromáždil soubory s parametry katalyzátoru na jednom místě (aby se mi změna jednoho souboru projevila ve všech simulacích) a do adresářů simulací jsem umístil symbolické odkazy na tyto soubory. Zbylé soubory (data vstupní směsi) jsou specifické pro každou simulaci, takže jsou přímo v adresáři simulace. Teď ten problém:

Změním parametr v jednom z těch souborů, na něž se simulační program dostává přes symbolický odkaz. Když v textovém editoru prohlížím vstup (i přes symbolický odkaz), je vše za všech okolností v pořádku (tedy parametr je změněn). Nicméně simulační program tuto změnu jaksi nepostřehne a načítá stále stará data (ta, která načetl při jeho prvním spuštění po přihlášení). Existuje nějaký příkaz, co by vymazal veškeré vyrovnávací paměti, aby k tomuto nedocházelo?

Dík

Honza
sustmi
sustmi (neregistrovaný)
13. 11. 2007 16:12 Nový

Hmm, vyrovnávací paměti....

celé vlákno
Já myslím, že vyrovnávacími pamětmi to nebude (ledaže nějaký bug v kernelu).
Spíš myslím, že bude problém v tom simulačním programu.
V čem je naprogramován C, Perl, Python, shell skript nebo něco jiného?
Jan Štěpánek
13. 11. 2007 16:34 Nový

Re: Hmm, vyrovnávací paměti....

celé vlákno
Simulační program je ve Fortranu 77. Jako překladače používáme g77 a ifort (podle toho, na kterém počítači počítáme). To by ale roli hrát nemělo. Když nepoužívám symbolické odkazy, tak je vše v úplném pořádku.

Nějaký bug v kernelu? Možná, ale tenhle problém na tom není závislý. Projevuje se na jádrech 2.4 i 2.6 nejrůznějších subverzí a je jedno, jestli linux pro x86 nebo x86-64. Na distribuci taky nezáleží (RedHat 7, RedHat 9, Fedora 5, Fedora 6).
Ondra aura:79
13. 11. 2007 16:16 Nový

sync

celé vlákno
Zkuste napsat samostatne prikaz sync, ten vysypava buffery...
Jan Štěpánek
13. 11. 2007 16:25 Nový

Re: sync

celé vlákno
Díky, zkusím to hned, jak se k tomu dostanu.
sustmi
sustmi (neregistrovaný)
13. 11. 2007 17:07 Nový

Re: sync

celé vlákno
Ten sync uloží data z bufferů na disk. V tomhle případě to možná pomůže, ale spíše si myslím, že je třeba přidat nejaký sync do toho simulačního programu.
Aby si program uvědomil, že data, která má v nějakém svém readahead bufferu, by měl aktualizovat.
Nevím, ve Frotranu jsem nikdy nedělal.
V céčku bych použil funkci fflush.
Jan Štěpánek
13. 11. 2007 17:34 Nový

Re: sync

celé vlákno
Možná si nerozumíme... Tohle podle mě není třeba. Ten program neběží stále, nejedná se o žádné prostředí jako jsou např. programy Maple nebo Matlab. Nastavím parametry v souborech, spustím ho a ten program za chvíli skončí. Pokaždé tedy startuje nanovo z čistého stolu. Proto hledám šotka jinde.
sustmi
sustmi (neregistrovaný)
13. 11. 2007 18:41 Nový

Re: sync

celé vlákno
Já jsem nikdy nic podobného nezpozoroval.
Nejlepší by bylo poslat zde přímo nějaký zjednodušený postup, jak chybu reprodukovat.
(jaké soubory si vytvořit a jaké symlinky na ně + krátky zdrojáček, na kterém by se chyba projevovala)
VM
VM (neregistrovaný)
13. 11. 2007 17:29 Nový

Titulek:

celé vlákno
Z popisu to vypada, ze program drzi soubory otevrene (doporucuju overit pomoci lsof).
Pak by zmena symlinku nepomohla - symlink je jen odkaz, otevreny soubor je odkazovana inoda.
Pokud je to pravda, pak by nezbyvalo nez ty soubory, ktere chcete za behu upravovat, zkopirovat pro kazdy proces zvlast (pokud tedy chcete menit data jen jednomu procesu).
Jan Štěpánek
13. 11. 2007 17:39 Nový

Re: Titulek:

celé vlákno
Nedrží soubory otevřené. Spustím program -> otevře soubor -> načte parametry -> zavře soubor -> počítá a vypisuje -> program skončí a odstraní se z paměti.
cinqmars
cinqmars (neregistrovaný)
14. 11. 2007 0:59 Nový

Re: Titulek:

celé vlákno
Tak jsem si zkusil trivialni prikladek, abych se upamatoval na stary dobry fortran 77, ale zda se, ze cteni parametru ze souboru funguje, jak ma.

martin@DeepThought:~/Temp$ cat test.for
PROGRAM test

implicit none
integer i

open (1,file='vstup.txt')
read (1,*) i
write (*,*) i
close (1)

END

martin@DeepThought:~/Temp$ g77 test.for
martin@DeepThought:~/Temp$ ./a.out
999
martin@DeepThought:~/Temp$ echo 333 > vstup.txt
martin@DeepThought:~/Temp$ ./a.out
333
martin@DeepThought:~/Temp$


Mohl byste sem vlozit ten vas kus kodu, abychom se na nej mohli podivat?
Jan Štěpánek
14. 11. 2007 9:45 Nový

Re: Titulek:

celé vlákno
Díky za testovací program, vyzkouším to.

Kus kódu našeho programu sem bohužel dát nemohu. Kromě toho, že bych musel zveřejnit ještě několik hlavičkových souborů, jsem vázán jistou mlčenlivostí a nejsem oprávněn zveřejňovat ani "nekritické" části zdrojového kódu tohoto programu, neboť je majetkem Ústavu chemického inženýrství a součástí našeho know-how. Díky za pochopení.
Jan Štěpánek
14. 11. 2007 9:58 Nový

Re: Titulek:

celé vlákno
Tak ten příkládek zatím neselhal... Budu to muset probrat s vedoucím...

Díky za pomoc.
cinqmars
cinqmars (neregistrovaný)
14. 11. 2007 10:44 Nový

Re: Titulek:

celé vlákno
btw. kdo je vas vedouci?
Jan Štěpánek
14. 11. 2007 10:52 Nový

Re: Titulek:

celé vlákno
Petr Kočí, a nad ním jsou prof. Marek a Kubíček. Že by internista?
cinqmars
cinqmars (neregistrovaný)
14. 11. 2007 11:24 Nový

Re: Titulek:

celé vlákno
jj, ja jsem delal diplomku u prof. Kubicka v roce 2004, v tomtez roce jsem i absolvoval.
cinqmars
cinqmars (neregistrovaný)
14. 11. 2007 1:07 Nový

Re: Titulek:

celé vlákno
Podotykam jen, ze vstup.txt je symbolicky link na stejnojmenny soubor v nadrazenem adresari vytvoreny nasledujicim zpusobem:

martin@DeepThought:~/Temp$ ln -s ../vstup.txt vstup.txt
pet
pet (neregistrovaný)
13. 11. 2007 18:58 Nový

A není v tom zamotané i NFS?

celé vlákno
Podle poznámky, že se kompiluje různými kompilery podle počítače, mi to tak připadá. A NFS poměrně hodně kešuje a ne vždy správně (něco jsem si s tím užil při kompilacích z NFS disku: vzdálená kompilace - chyba - oprava chyby lokálně - nova vzdálená kompilace havaruje na stejném místě přestože je chyba opravena). Nám pomohlo jedině vždy prohnat přes NFS nejaký veliký soubor (cat soubor_z_nfs > /dev/null)
Jan Štěpánek
14. 11. 2007 9:40 Nový

Re: A není v tom zamotané i NFS?

celé vlákno
No, na síťovém disku to skutečně uloženo je, takže to je možné.

Školení: Hackujeme operační systém Android

 

Školení vám ukáže, jak se dostat k Linuxu (tzv. "rootování"), který se pod hezkou tváří Androida skrývá a jak ho naplno využít. Pomůže vám to při záloze dat, zvětšování prostoru pro aplikace nebo sdílení připojení k internetu a pokud chcete z telefonu dostat opravdové maximum, ukážeme vám, jak v něm vyměnit kompletní systém za lepší.

Podrobnější informace a přihláška