特定のプロセスの.pidファイルを見つける方法


15

私はmonitをセットアップしていて、与えられたpythonアプリケーションをモニターしたいと思っています。Monitは、プロセスの.pidファイルを調べることでこれを行いますが、これがどこにあるかはわかりません。

また、独自の単純な実行可能ファイルを作成して実行しようとしました。ここでも、.pidファイルが作成された場所がわかりません。

また、すべてのプロセスに.pidファイルがありますか?


5
すべてのプロセスに.pidファイルがあるわけではありません。アプリケーション(またはその起動スクリプト)は、明示的に作成する必要があります。
バハマ

回答:


14

通常/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}

ソース/etc/init.d/functionsが何であれ、PIDは住んでい/var/run/*.pidます。

カスタムアプリケーションの場合、PIDはラッパースクリプトで定義されます(できれば)。ただし、私が知っているほとんどの開発者は、上記のデーモンと同じ規則に従います。

あなたがいる場合行う PIDファイルを使用せずに遭遇何かを、ことを覚えてMONITが同様のプロセス列摂餌に監視することができます


1
lot-私がしようとewwhite-おかげでmonit procmatch anything私が取得コマンドラインで monit: invalid argument -- procmatch。何か案は?
ヤリン

どのバージョンのMonitを使用していますか?(タイプmonit -V)どのOS /ディストリビューション?
ewwhite

CentOSの6にyummed MONIT 5.1.1
Yarin

また、複数の非デーモンプロセスのオプションは何ですか?この答え
ヤリン

@yarin EPELリポジトリからMonitを取得しているようです。EL6のバージョンRPMForgeは 5.4です。
ewwhite

1

私が取った別のアプローチ:

埋め込みモードで実行されているデータベースサーバーがあり、データは含まれているアプリケーションのディレクトリ内にあります。

データベースには.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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.