Le répertoire dans / var / run est supprimé après un redémarrage dur

19

Je garde mon pid sphinx dans /var/run/sphinx/searchd.pid mais à chaque redémarrage, le répertoire / var / run / sphinx disparaît et sphinx ne démarre pas. Existe-t-il un moyen de coller ce répertoire ou de le créer automatiquement? Comment les gens gèrent-ils généralement cette situation? J'utilise Ubuntu Hardy


la source
Pouvez-vous nous donner la sortie de mount?
reconbot

Réponses:

18

Ce répertoire est éphémère de par sa conception. Si son contenu était coincé entre les bottes, toutes sortes d'effets moches pouvaient se produire, car des scripts de contrôle de différentes sortes y regardaient pour voir quels processus ils devaient signaler. Sur les systèmes récents, cette nature temporaire est renforcée par le montage /var/runas tmpfs, tandis que les anciens systèmes ont simplement supprimé tout dans le répertoire au démarrage.

Par conséquent, vous devez configurer Sphinx ou son script de démarrage pour créer ce répertoire, ou simplement écrire le fichier PID /var/rundirectement.

Phil Miller
la source
4
+1 pour la description de / var / run. Mais notez qu'il ne veut pas que le fichier PID soit persistant pendant un redémarrage; juste le répertoire sphinx.
Steve Folly du
15

Vous avez au moins deux chances:

  • changer votre script init pour faire un mkdir -p /var/run/sphinx/

ou

  • mettre pid_file = /var/run/sphinx-searchd.piden/etc/sphinx.conf

Je suis pour le second.

drAlberT
la source
2
Et bien sûr, cela signifie que le script de démarrage doit s'exécuter en tant que root pour pouvoir écrire directement ou créer un répertoire dans / var / run. Ce qui est ennuyeux ...
Eloff
J'ai également choisi la deuxième solution. Il semble qu'il y ait priorité pour cela (cron, ssh, atd, syslog).
BillMan
2

il existe désormais un mécanisme centralisé de création de fichiers et répertoires temporaires tels que ceux-ci. Un service souhaitant utiliser cette méthode peut supprimer les commandes mkdir dans son propre script de démarrage et placer à la place un fichier .conf dans /etc/tmpfiles.d, /run/tmpfiles.d ou /usr/lib/tmpfiles.d, avec Ubuntu les services semblant préférer la dernière option. pour votre cas, créez un fichier /usr/lib/tmpfiles.d/sphinx.conf.
le contenu du fichier serait:
d /var/run/sphinx 0755 root root

ici dreprésente le répertoire, à côté se trouve le chemin, l'autorisation, le propriétaire et le groupe.
Cela créera le /var/run/sphnixrépertoire au redémarrage.

Consultez la documentation complète tmpfiles.d

Aakash Singhal
la source