我正在设置monit并希望监视给定的
python应用程序. Monit通过查看进程的.pid文件来做到这一点,但我不知道它会在哪里.
我也尝试创建自己的简单可执行文件并运行它 – 在这里我也无法弄清楚.pid文件的创建位置.
并且所有进程都有.pid文件吗?
解决方法
您通常会在Redhat / CentOS风格的系统上的/ var / run /中找到daemonized进程的PID文件.
除此之外,您始终可以查看进程init脚本.例如,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}
对于任何来源/etc/init.d/functions,PID将存在于/var/run/*.pid中.
对于自定义应用程序,PID将在包装器脚本中定义(希望如此).我知道的大多数开发人员遵循与上面的守护进程相同的约定.
如果您确实遇到没有PID文件的内容,请记住Monit can monitor on a process string patern as well.