Esprit & Schmackes

Kuriositäten um das Verzeichnis /var/run

Randnotizen zu /var/run, tmpfs und Startup-Scripts so um die 282 Wörter

Früher oder später stößt man vielleicht auf das Problem, dass einige Dateien und Verzeichnisse in /var/run nach einem Systemstart nicht mehr vorhanden sind. Bei mir waren es die Sockets für php-fpm, die sich bei jedem Server-Neustart verabschiedet und mich mit meinen mit Gateway-Fehlern gespickten Webseiten allein gelassen haben.

Hier also mal die Fakten zu /var/run:

 

/var/run ist ein symbolischer Link auf das Verzeichnis /run.

$ ls -hail /var
23 lrwxrwxrwx  1 root root        4 Aug 28 00:02 run -> /run

 

/run wiederrum ist mit tmpfs eingebunden, lebt also im RAM/Swap.

$ mount  -l
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)

 

Das Verzeichnis wurde eingeführt, damit es Programmen ermöglicht wird, frühzeitig nach dem Booten gestartet zu werden. Vorher ging das nur über das Verzeichnis /dev, welches aber nur Gerätedateien beinhalten soll, keine Programme oder Sockets.

size=10% meint hier, dass maximal 10% des physischen RAMs bei Bedarf verwendet werden - die 10% sind also nicht automatisch belegt sondern bleiben frei, bis sie gebraucht werden.

/var/run ist demzufolge nach dem Systemstart leer (oder gar nicht vorhanden), bis es von den Startup-Scripten der entsprechenden Programme angesprochen wird.

 

php-fpm schreibt seinen Standard-Socket und seine PID-Datei beim Startup in /var/run. Wenn man nun custom Sockets nutzt, wie hier beschrieben, werden diese nicht automatisch erstellt. Warum, weiß ich leider auch nicht. Bislang lasse ich als Workaround erstmal nur im Startup-Script von php-fpm das Verzeichnis /var/run/php5-fpm erstellen, worin dann automatisch die benötigten Sockets geboren werden.

 

# vi /etc/init.d/php5-fpm
[...]
#
# Function that starts the daemon/service
#
do_start()
{
        #check socket-dir
        mkdir -p /var/run/php5-fpm
       [...]
}
[...]

Kommentare

was zu melden?