Linux - endroits alternatifs où stocker le fichier pid au lieu de / var / run

21

Comme écrit dans le titre, où dois-je laisser le script init écrire le fichier pid? existe-t-il des chemins standard que je devrais choisir à la place de / var / run?

Est-ce que / tmp pourrait être un bon endroit où le stocker ou y a-t-il des inconvénients?

Murko
la source
6
Quel est le problème avec / var / run?
arved
Cette question de débordement de pile est pertinente: stackoverflow.com/q/5173636/1071869
Renan
le seul problème avec / var / run est que je n'y ai pas accès en écriture avec mon utilisateur ..
Murko
2
@Murko alors vous devez stocker le fichier pid dans le répertoire personnel de l'utilisateur.
Renan

Réponses:

22

En bref : vous pouvez le stocker n'importe où (par exemple, /tmpou /var/tmp), mais /var/runc'est la norme préférée.

/var/runest la norme de hiérarchie du système de fichiers :

Ce répertoire contient des informations sur le système décrivant le système depuis son démarrage. Les fichiers sous ce répertoire doivent être effacés (supprimés ou tronqués selon le cas) au début du processus de démarrage. Les programmes peuvent avoir un sous-répertoire de / var / run; ceci est encouragé pour les programmes qui utilisent plus d'un fichier d'exécution. [note 37]

Et une caractéristique souhaitable est que la plupart des distributions le nettoient automatiquement (contrairement à /tmpce qui n'est pas nettoyé au démarrage dans certaines distributions) - cela évite les fichiers pid périmés:

L'emplacement normal des fichiers pid est / var / run. La plupart des unités nettoieront ce répertoire au démarrage; sous Ubuntu, cela est réalisé par / var / exécuter un système de fichiers en mémoire (tmpfs).

C'est votre choix où le stocker, mais j'irais avec la norme.

Si vous n'y avez pas accès /var/run, vous devez stocker le fichier pid dans le répertoire personnel de l'utilisateur, par exemple ~/.my_app.pid.

Renan
la source
9

S'il s'agit d'un accès en écriture non root /var/rundont vous avez besoin, notez qu'il existe des sous-répertoires /var/run/userpour les utilisateurs individuels. Vous avez juste besoin d'obtenir l'UID de l'utilisateur actuel:

/var/run/user/[$uid]

dwk
la source