GNU/Linux >> Tutoriels Linux >  >> Linux

Comment trouver le fichier .pid pour un processus donné

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

Linux
  1. Linux :Comment trouver le pilote de périphérique utilisé pour un périphérique ?

  2. Comment trouver le type d'un fichier Img et le monter ?

  3. Comment trouver l'ID de processus (pid) d'un programme de terminal en cours d'exécution ?

  4. Comment trouver l'ID de processus dans Ubuntu ?

  5. Vérifier la limite FD ouverte pour un processus donné sous Linux

Comment trouver un nom de processus à l'aide d'un numéro PID sous Linux

Comment trouver le nom du processus à partir de son PID

Comment trouver le PID et le PPID d'un processus sous Linux

Comment puis-je trouver l'emplacement MySQL my.cnf

Comment spécifier le fichier de clé pour sshfs ?

Comment trouver le gestionnaire de fichiers par défaut ?