Назад | Перейти на главную страницу

Как найти файл .pid для данного процесса

Я настраиваю 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