Solución 1:
Por lo general, encontrará los archivos PID para procesos daemonizados en /var/run/
en sistemas estilo Redhat/CentOS.
Aparte de eso, siempre puede buscar en el script de inicio del proceso. Por ejemplo, el demonio SSH se inicia con el script en /etc/init.d/sshd
. A veces, el PID se definirá allí (busque pid, PID, PIDFILE, PID_FILE, etc.).
Sin embargo, la mayoría de los otros demonios en los sistemas de estilo RHEL generan el /etc/init.d/functions
secuencia de comandos para algunas funciones comunes.
# 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}
Para cualquier cosa que genere /etc/init.d/functions
, el PID vivirá en /var/run/*.pid
.
Para aplicaciones personalizadas, el PID se definirá en un script contenedor (con suerte). Sin embargo, la mayoría de los desarrolladores que conozco siguen la misma convención que los demonios anteriores.
Si haces encuentra algo sin un archivo PID, recuerde que Monit también puede monitorear un patrón de cadena de proceso.
Solución 2:
Otro enfoque que tomé:
Tengo un servidor de base de datos que se ejecuta en modo incrustado y los datos están dentro del directorio de la aplicación contenedora.
La base de datos tiene algo así como un archivo .pid, pero lo llama archivo de bloqueo. Para ubicar este archivo de bloqueo, enumeré todos los archivos abiertos por la aplicación:
$ ls -l /proc/18264/fd | cut -d'>' -f2
Eso me dio una larga lista que incluye sockets, tuberías, archivos de servidor, etc. Pocos filtros y obtuve lo que necesitaba:
$ 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