Solution 1 :
Vous trouverez généralement les fichiers PID pour les processus démonisés dans /var/run/
sur les systèmes de style Redhat/CentOS.
En dehors de cela, vous pouvez toujours regarder dans le script d'initialisation du processus. Par exemple, le démon SSH est démarré avec le script dans /etc/init.d/sshd
. Parfois, le PID y sera défini (recherche de pid, PID, PIDFILE, PID_FILE, etc.).
Cependant, la plupart des autres démons sur les systèmes de style RHEL source le /etc/init.d/functions
script pour certaines fonctionnalités courantes.
# Set $pid to pids from /var/run* for {program}. $pid should be declared
# local in the caller.
# Returns LSB exit code for the 'status' action.
__pids_var_run() {
local base=${1##*/}
local pid_file=${2:-/var/run/$base.pid}
Pour tout ce qui source /etc/init.d/functions
, le PID vivra dans /var/run/*.pid
.
Pour les applications personnalisées, le PID sera défini dans un script wrapper (espérons-le). Cependant, la plupart des développeurs que je connais suivent la même convention que les démons ci-dessus.
Si vous faites rencontrez quelque chose sans fichier PID, rappelez-vous que Monit peut également surveiller un modèle de chaîne de processus.
Solution 2 :
Une autre approche que j'ai adoptée :
J'ai un serveur de base de données fonctionnant en mode intégré et les données se trouvent dans le répertoire de l'application contenante.
La base de données a quelque chose comme un fichier .pid, mais elle l'appelle un fichier de verrouillage. Pour localiser ce fichier de verrouillage, j'ai répertorié tous les fichiers maintenus ouverts par l'application :
$ ls -l /proc/18264/fd | cut -d'>' -f2
Cela m'a donné une longue liste comprenant des sockets, des pipes, des fichiers de serveur, etc. Quelques filtres et j'ai obtenu ce dont j'avais besoin :
$ ls -l /proc/18264/fd | cut -d'>' -f2 | grep /home/ | cut -b40- | sort | uniq | grep titan
/windup/reports/group_report.LJfZVIavURqg.report/graph/titangraph/00000000.jdb
/windup/reports/group_report.LJfZVIavURqg.report/graph/titangraph/je.info.0
/windup/reports/group_report.LJfZVIavURqg.report/graph/titangraph/je.info.0.lck
/windup/reports/group_report.LJfZVIavURqg.report/graph/titangraph/je.lck