Я настраиваю monit и хочу отслеживать данное приложение Python. Monit делает это, просматривая файлы .pid для процессов, но я не знаю, где это может быть.
Я также попытался создать свой собственный простой исполняемый файл и запустить его - здесь я тоже не могу понять, где создается файл .pid.
А есть ли у всех процессов файл .pid?
Обычно вы найдете файлы PID для демонизированных процессов в /var/run/
в системах в стиле Redhat / CentOS.
Если не считать этого, вы всегда можете посмотреть сценарий инициализации процесса. Например, демон 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 также может отслеживать образец технологической строки..
Другой подход, который я использовал:
У меня есть сервер базы данных, работающий во встроенном режиме, и данные находятся в каталоге содержащего приложения.
В базе данных есть что-то вроде файла .pid, но он называется файлом блокировки. Чтобы найти этот файл блокировки, я перечислил все файлы, открытые приложением:
$ ls -l /proc/18264/fd | cut -d'>' -f2
Это дало мне длинный список, включая сокеты, каналы, файлы сервера и т. Д. Несколько фильтров, и я получил то, что мне было нужно:
$ 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