Linuxで実行中プロセスのフルパスを取得する方法
Linuxで実行中プロセスのフルパスを取得する方法を紹介します。
1.問題点
Linuxサーバをシャットダウン→再起動したあと、httpdを起動させたのですが、アクセスしたページが「Not Found」になってしまいました。
おそらくApacheが複数インストールされていて、いつも使っていないバイナリを起動させてしまったようです。
いくつかあるうちのどれかを起動すれば解消すると思います。
で、色々試しているうちに解消したのですが、結局どのhttpdが起動しているのか分からなくなりました。
psコマンドでは次のような相対パス表示なので絶対パス(フルパス)が分かりません。
# ps -ef |grep httpd
root 3033 1 0 14:24 ? 00:00:00 ./httpd
daemon 3034 3033 0 14:24 ? 00:00:00 ./httpd
daemon 3035 3033 0 14:24 ? 00:00:00 ./httpd
daemon 3036 3033 0 14:24 ? 00:00:00 ./httpd
daemon 3037 3033 0 14:24 ? 00:00:00 ./httpd
daemon 3128 3033 0 14:25 ? 00:00:00 ./httpd
root 3265 2696 0 14:31 pts/1 00:00:00 grep httpd
2.実行中プロセスのフルパスを取得する
実行中プロセスのフルパスを取得するには
/proc/[PID]/exe
を利用します。
前述のpsコマンドでhttpdのプロセスIDは3033なので
/proc/3033/exe
のシンボリックリンクに、実行ファイルのパス(/usr/local/apache2/bin/httpd)が表示されます。
# ls -l /proc/3033/exe
lrwxrwxrwx. 1 root root 0 11月 2 14:32 2017 /proc/3033/exe -> /usr/local/apache2/bin/httpd
Posted by yujiro このページの先頭に戻る
- VMをundefineできない場合の対処
- cpanflute2でエラーになる場合の対処
- シェルスクリプトをバイナリ化する「shc」
- OpenSSLで文字列を暗号化・複号化する方法
- sshログインに時間がかかる場合の対処
- vi/vimで範囲指定して置換する方法
- vi/vimでマークした行に移動する方法
- vi/vimで複数行を一括削除する方法
- LinuxでOSキャッシュをクリアする方法
- lessで検索文字列だけを表示する方法
- tailコマンドでファイルがローテートされても追従する方法
- svnでファイルやディレクトリを削除する方法
- phpMyAdminで「unknown system variable 'lc_messages'」となる場合の対処
- Linux(CentOS)でapxsがみつからない場合の対処
- PHP7.3とApacheを連携させる方法
トラックバックURL
コメントする
greeting