Lösung 1:
Normalerweise finden Sie die PID-Dateien für daemonisierte Prozesse in /var/run/
auf Systemen im Stil von Redhat/CentOS.
Abgesehen davon können Sie immer im Prozess-Init-Skript nachsehen. Beispielsweise wird der SSH-Daemon mit dem Skript in /etc/init.d/sshd
gestartet . Manchmal wird dort die PID definiert (Suche nach pid, PID, PIDFILE, PID_FILE, etc.).
Die meisten anderen Daemons auf Systemen im RHEL-Stil beziehen jedoch den /etc/init.d/functions
Skript für einige allgemeine Funktionen.
# 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}
Für alles, was /etc/init.d/functions
liefert , die PID befindet sich in /var/run/*.pid
.
Für benutzerdefinierte Anwendungen wird die PID (hoffentlich) in einem Wrapper-Skript definiert. Die meisten Entwickler, die ich kenne, folgen jedoch der gleichen Konvention wie die oben genannten Daemons.
Wenn Sie tun auf etwas ohne eine PID-Datei stoßen, denken Sie daran, dass Monit auch ein Prozess-String-Muster überwachen kann.
Lösung 2:
Ein anderer Ansatz, den ich gewählt habe:
Ich habe einen Datenbankserver, der im eingebetteten Modus ausgeführt wird, und die Daten befinden sich im Verzeichnis der enthaltenden Anwendung.
Die Datenbank hat so etwas wie eine .pid-Datei, aber sie nennt sie Sperrdatei. Um diese Sperrdatei zu finden, habe ich alle Dateien aufgelistet, die von der App offen gehalten werden:
$ ls -l /proc/18264/fd | cut -d'>' -f2
Das gab mir eine lange Liste mit Sockets, Pipes, Serverdateien usw. Wenige Filter und ich kam zu dem, was ich brauchte:
$ 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