[OSM-Devserver] Filedeskriptoren unter Linux (was: hstore Import, Rechenzeitverteilung etc.)

Sven Geggus lists at fuchsschwanzdomain.de
Mo Mai 10 17:49:34 CEST 2010


"Stefan Dettenhofer (StefanDausR)" <osm at dentro.info> wrote:

> Das bedeutet, dass ein Programm eine Quelldatei bis zum Ende seiner 
> Laufzeit geöffnet halten muss und nicht zwischendurch schließen darf, oder?

Im Prinzip ja, wenn man sie zwischendurch schließt könnte sie von einem
anderen Prozess zwischenzeitlich gelöscht werden. Beim Planet ist das aber
unwahrscheinlich, dass der geschlossen wird bevor die letzte Info
rausgelesen wurde.

> Und was passiert, wenn der Prozess gekillt wird? Wird die inode dann 
> ggf. auch noch freigegeben?

Da sorgt der Kernel dafür, dass in diesem Fall alle offenen Deskriptoren
geschlossen werden.

Welche Dateien ein Prozess offen hat sieht man unter Linux übrigens im
/proc filesystem unter /proc/<prozess-id>/fd

Als Beispiel nehm ich mal Christophs mkgmap für den AIO:

 ~/ # ls -l /proc/21211/fd
insgesamt 0
lrwx------ 1 master master 64 2010-05-10 17:46 0 -> /dev/pts/3
l-wx------ 1 master master 64 2010-05-10 17:46 1 -> /osm/garmin/aio/logfile.log
lr-x------ 1 master master 64 2010-05-10 17:46 10 -> /dev/random
lr-x------ 1 master master 64 2010-05-10 17:46 11 -> /dev/urandom
lr-x------ 1 master master 64 2010-05-10 17:46 12 -> /osm/garmin/aio/regions/europe/tiles/66210135.osm.gz
lrwx------ 1 master master 64 2010-05-10 17:46 13 -> socket:[8447405]
lr-x------ 1 master master 64 2010-05-10 17:46 14 -> /osm/garmin/aio/styles/addr_style/version
lr-x------ 1 master master 64 2010-05-10 17:46 15 -> /osm/garmin/aio/styles/addr_style/info
lr-x------ 1 master master 64 2010-05-10 17:46 16 -> /osm/garmin/aio/styles/addr_style/options
lr-x------ 1 master master 64 2010-05-10 17:46 17 -> /osm/garmin/aio/styles/addr_style/relations
lr-x------ 1 master master 64 2010-05-10 17:46 18 -> /osm/garmin/aio/styles/addr_style/points
lr-x------ 1 master master 64 2010-05-10 17:46 19 -> /osm/garmin/aio/styles/addr_style/lines
l-wx------ 1 master master 64 2010-05-10 17:45 2 -> /osm/garmin/aio/logfiles/europe/20100510/mkgmap_addr.log
lr-x------ 1 master master 64 2010-05-10 17:46 20 -> /osm/garmin/aio/styles/addr_style/polygons
l-wx------ 1 master master 64 2010-05-10 17:46 3 -> /osm/garmin/aio/logfiles/europe/time_makefile
l-wx------ 1 master master 64 2010-05-10 17:46 4 -> //osm/garmin/aio/logfiles/europe/20100510/time_mkgmap_addr
lr-x------ 1 master master 64 2010-05-10 17:46 5 -> /usr/lib/jvm/java-6-openjdk/jre/lib/rt.jar
lr-x------ 1 master master 64 2010-05-10 17:46 6 -> /osm/garmin/aio/mkgmap.jar
lr-x------ 1 master master 64 2010-05-10 17:46 7 -> /usr/lib/jvm/java-6-openjdk/jre/lib/ext/pulse-java.jar
lr-x------ 1 master master 64 2010-05-10 17:46 8 -> /usr/share/java/gnome-java-bridge.jar
lr-x------ 1 master master 64 2010-05-10 17:46 9 -> /usr/lib/jvm/java-6-openjdk/jre/lib/jsse.jar

0,1 und 2 sind speziell weil immer stdin,stdout und stderror.

Gruss

Sven

-- 
"Der wichtigste Aspekt, den Sie vor der Entscheidung für ein Open
Source-Betriebssystem bedenken sollten, ist, dass Sie kein
Windows-Betriebssystem erhalten." (von http://www.dell.de/ubuntu)
/me is giggls at ircnet, http://sven.gegg.us/ on the Web