如何查找给定进程的 .pid 文件

Yar*_*rin 18 linux monitoring pid monit

我正在设置 monit 并想监控给定的 python 应用程序。Monit 通过查看进程的 .pid 文件来做到这一点,但我不知道这会在哪里。

我还尝试创建自己的简单可执行文件并运行它 - 在这里我也无法弄清楚 .pid 文件的创建位置。

并且所有进程都有一个 .pid 文件吗?

eww*_*ite 17

您通常会/var/run/在 Redhat/CentOS 风格的系统上找到守护进程的 PID 文件。

除此之外,您始终可以查看进程初始化脚本。例如,SSH 守护进程使用/etc/init.d/sshd. 有时会在那里定义 PID(搜索 pid、PID、PIDFILE、PID_FILE 等)。

但是,RHEL 样式系统上的大多数其他守护程序都/etc/init.d/functions为一些常见功能提供脚本。

# 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}
Run Code Online (Sandbox Code Playgroud)

对于任何来源/etc/init.d/functions,PID 将存在/var/run/*.pid

对于自定义应用程序,PID 将在包装器脚本中定义(希望如此)。不过,我认识的大多数开发人员都遵循与上述守护程序相同的约定。

如果您确实遇到没有 PID 文件的情况,请记住Monit 也可以监视进程字符串模式