重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

FreeBSDで、現在起動しているプロセスを表示させるコマンドなどございますでしょうか?また、自分が作成したプロセスのみを表示させることもしたいのですが、方法をご存知の方おられましたらなにとぞよろしくお願いいたします。

A 回答 (6件)

>find -inum 23993306


これだとエラーになると思いますが、エラーメッセージが出ませんでしたか?

>test.php がすでに終了していた場合はそのようになってしまうのでしょうか?

いえ、そういう事はありません。
iノード番号はファイルが存在していれば必ず存在しますから、消されていない限りiノード番号からファイルは特定出来ます。


%fstat -u user
USER CMD PID FD MOUNT INUM MODE SZ|DV R/W
user fstat 9627 root / 2 drwxr-xr-x 512 r
user fstat 9627 wd / 472591 drwx--x--x 1536 r
user fstat 9627 text / 1130653 -r-xr-sr-x 15236 r
user fstat 9627 0 /dev 83 crw--w---- ttyp0 rw
<省略>

実行されたコマンドは、FDがtextのもの。
findの実行は、MOUNTが/で、INUMが1130653だから

%find / -inum 1130653
<パーミッションの関係で出るエラーは省略>
/usr/bin/fstat

個人的には、こういう手間を行うならlsofコマンドの方がいいとは思いますが。

>また、whoami と打つと、「www」と出るのですが、logname と打つと「root」と出ます。これらは別々のものなのでしょうか?質問が逸れていますがどうぞよろしくお願いいたします。

whoami → 実効ユーザ名
logname → ログイン名

rootでログインして、suあたりでwwwになっているとか。
    • good
    • 0
この回答へのお礼

ありがとうございます。

>これだとエラーになると思いますが、エラーメッセージが出ませんでしたか?

はい。Permission denied と出ます。

>個人的には、こういう手間を行うならlsofコマンドの方がいいとは思いますが。

結局なんども試したものの、パーミションのエラーがでてスクリプトを特定できませんでした。

lsofコマンドもディレクトリまでは分かるのですが肝心のファイル名が分からないため、どうしたものかと思っています。

しかし、簡単にプロセスを起動しているプログラムが特定できないことが分かっただけでもありがたく思います。

お礼日時:2007/01/26 23:00

基本的にlsof、fstat共にプロセス情報を表示するコマンドではなくて、オープンされているファイルの情報を表示するコマンドです。


なので、プロセスがたくさんのファイルをオープンしているとその分表示されるのも多くなります。
lsofコマンド、fstatコマンドであるユーザがオープンしているファイルに絞りたい場合には-uオプションでユーザを指定すればいいです。

>COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
>httpd 82917 www cwd VDIR 157,131079 1536 10746765 /home/user/public_html/test

上記ですが、FDの項がcwdとあるようにカレントの作業ディレクトリになります。
スクリプトのファイルもオープンされているのでしたら、そちらも別に表示されていると思います。

>fstat とすると以下の項目が表示されました。ノード番号はINUMのことでよろしいでしょうか?

はい、INUMです。

fstatコマンド
http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=m …§=0
    • good
    • 0
この回答へのお礼

ありがとうございます。

まず、テスト用のスクリプト(test.php)を走らせ、そのPIDを取得し、fstat でPIDのマッチする inode 番号を得、その番号で以下のようにしましたが、何も表示されませんでした。(23993306がINUM)

find -inum 23993306

test.php がすでに終了していた場合はそのようになってしまうのでしょうか?

また、whoami と打つと、「www」と出るのですが、logname と打つと「root」と出ます。これらは別々のものなのでしょうか?質問が逸れていますがどうぞよろしくお願いいたします。

お礼日時:2007/01/24 15:12

>$ ps axuww | more



時絶対パス指定でコマンドを実行しているなら、それでパスまで表示されるでしょうが、コマンド名のみとか相対パス指定でコマンドを実行した時には分かりませんよね。

No.2で書いたlsofはFreeBSD標準のコマンドではないので、FreeBSD標準のコマンドだけでいうのであれば、1つのコマンドのみでというのは難しいかもしれません。

例えば、fstatコマンドあたりでオープンされているファイル(コマンド)のiノード番号とファイルシステムを調べて、findコマンドの-inum iノード番号でファイルを調べるという方法もあるかな。
    • good
    • 0
この回答へのお礼

ありがとうございます。
fstat とすると以下の項目が表示されました。ノード番号はINUMのことでよろしいでしょうか?

USER CMD PID FD MOUNT INUM MODE SZ|DV R/W

また、ひとつのプロセス(PID)でものすごい数の行がリストされるのですが、これを限定させて表示させたりできるのでしょうか?

どうぞよろしくお願いいたします。

お礼日時:2007/01/24 08:24

こんにちは。


僕は、手癖で、
$ ps axuww | more
といつもやっています。
深くオプションの意味は考えていませんが、、
パスとかも出ますよ。
    • good
    • 0
この回答へのお礼

ありがとうございます。テスト用のphpスクリプトを実行中に、「ps xuww | more」としたところ、そのスクリプトのプロセスが以下のように表示され、lsof とは違ったパスが表示されました。

USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
www 97995 0.0 1.0 31780 20548 ?? S 2:51PM 0:00.01 /usr/local/apache/bin/httpd -DSSL

実行したのは、/home/user/public_html/test/test.php というスクリプトです。このスクリプトはテスト用に作ったのですが、ブラウザからアクセスすると、一定時間プロセスが起動しPIDを返すようにしています。

lsofでは/home/user/public_html/test までは表示されましたので、最後のtest.phpが表示できないものかと思っています。どうぞよろしくお願いいたします。

お礼日時:2007/01/24 08:02

>あつかましい質問なのですが、プロセスを生成したスクリプトやプログラムの場所(パス)など一緒に表示できますでしょうか?



Ports/Packagesにあるlsofコマンド(sysutils/lsof)を使用するとか。
    • good
    • 0
この回答へのお礼

試しに、phpスクリプトを実行中にlsofコマンドを実行したところたくさんプロセスがリストされました。

その中で、そのphpのスクリプトと思われるものがあり、ディレクトリパス名が一致しているのですが、スクリプトファイル名が表示されません。これをファイル名も含ませることはできますでしょうか?

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 82917 www cwd VDIR 157,131079 1536 10746765 /home/user/public_html/test

お礼日時:2007/01/24 07:52

FreeBSDに限らず、UNIX系OSではpsコマンドで起動しているプロセスを表示させる事が出来ます。


基本的にはpsコマンドを実行したユーザ(自分)のプロセスのみ表示されます。
-aオプションを指定する事によってpsコマンドを実行したユーザ(自分)とそれ(自分)以外のユーザのプロセスについても表示出来ます。
指定のユーザのプロセスのみ表示したい場合には、-Uオプションを使用すると指定したユーザのプロセスを表示出来ます。
オプションの指定方法は下記のページのマニュアルを参照してください。

psコマンド
http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=m …
    • good
    • 0
この回答へのお礼

ありがとうございます。やってみると意外と簡単で、すごくシンプルで使いやすいという印象を受けました。

あつかましい質問なのですが、プロセスを生成したスクリプトやプログラムの場所(パス)など一緒に表示できますでしょうか?紹介して下さったページでは見つかりませんでした。

どうぞよろしくお願いいたします。

お礼日時:2007/01/22 20:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!