GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So finden Sie die .pid-Datei für einen bestimmten Prozess

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

Linux
  1. So finden Sie die älteste Datei in einem Verzeichnisbaum in Linux

  2. Linux:So finden Sie den für ein Gerät verwendeten Gerätetreiber

  3. Wie finde ich das Kernel-Modul für ein bestimmtes Gerät?

  4. Wie finde ich die Anwendung für einen Mime-Typ unter Linux?

  5. Wie finde ich die Prozess-ID (PID) eines laufenden Terminalprogramms?

So finden Sie einen Prozessnamen mithilfe der PID-Nummer in Linux

So finden Sie den Prozessnamen anhand seiner PID

So finden Sie die PID und PPID eines Prozesses in Linux

Wie finde ich den my.cnf-Speicherort von MySQL?

Wie gebe ich die Schlüsseldatei für sshfs an?

Wie finde ich den Standard-Dateimanager?