web-dev-qa-db-fra.com

Mon fichier pid doit-il se trouver dans / var / run?

Je pose la question dans les deux contextes: techniquement et stylistiquement.

Mon application/démon peut-elle conserver un fichier pid dans /opt/my_app/run/?

Est-ce très mauvais de le faire?

Mon besoin est le suivant: mon démon s'exécute sous un utilisateur spécifique et l'implémenteur doit mkdir un nouveau répertoire dans /var/run, chown et chgrp pour faire fonctionner mon démon. Semble plus facile de simplement garder le fichier pid local (pour le démon).

69
gmoore

Je ne mettrais pas un fichier pid dans un répertoire d'installation d'application tel que /opt/my_app/whatever. Ce répertoire peut être monté en lecture seule, peut être partagé entre des machines, peut être surveillé par un démon qui traite tout changement à cet endroit comme une tentative d'effraction…

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

Si vous démarrez votre démon à partir d'un script qui s'exécute en tant que root, demandez-lui de créer un sous-répertoire /var/run/gmooredaemon et le montrer à l'utilisateur exécutant le démon avant suing à l'utilisateur et démarrer le démon.

Sur de nombreux systèmes Linux modernes, si vous démarrez le démon à partir d'un script ou d'un lanceur qui ne s'exécute pas en tant que root, vous pouvez placer le pidfile dans /run/user/$UID, qui est un équivalent par utilisateur du traditionnel /var/run. Notez que la partie racine du lanceur, ou un script de démarrage s'exécutant en tant que root, doit créer le répertoire (pour un utilisateur humain, le répertoire est créé lorsque l'utilisateur se connecte).

Sinon, choisissez un emplacement sous /tmp ou /var/tmp, mais cela introduit une complexité supplémentaire car le nom du fichier pid ne peut pas être déterminé de manière unique s'il se trouve dans un répertoire accessible en écriture.

Dans tous les cas, faites en sorte qu'il soit facile (option en ligne de commande, plus peut-être une option au moment de la compilation) pour le distributeur ou l'administrateur de modifier l'emplacement du fichier pid.

96
Gilles

/ opt est utilisé pour installer des applications "autonomes", donc rien de mal ici. En utilisant /opt/my_app/etc/ pour les fichiers de configuration, /opt/my_app/log/ pour les journaux, etc. - pratique courante pour ce type d'application.

Cela vous permet de distribuer vos applications sous forme de fichier TGZ au lieu de gérer un package pour chaque gestionnaire de packages (au moins DEB depuis que vous avez tagué ubuntu). Je recommanderais ceci pour des applications internes ou des situations où vous avez un grand contrôle sur l'environnement. Le raisonnement est que cela n'a aucun sens si le coffre-fort coûte plus cher que ce que vous mettez à l'intérieur (le travail requis pour emballer l'application ne devrait pas Eclipse l'effort requis pour écrire l'application).

9
Paulo Scardine

L'emplacement du fichier pid doit être configurable./var/run est standard pour les fichiers pid, le même que/var/log est standard pour les journaux. Mais votre démon devrait vous permettre d'écraser ce paramètre dans un fichier de configuration.

8
Costi Ciudatu

Une autre convention, si vous n'exécutez pas le script en tant que root, est de mettre le pidfile dans ~/.my_app/my_app.pid. C'est plus simple de cette façon tout en étant sécurisé car le répertoire personnel n'est pas accessible en écriture.

6
pestrella