回答:
ほとんどの場合ps
、通常は実行するだけで十分であり、お気に入りのフラグを使用して幅広い出力を可能にします。私はに傾いてps -feww
いますが、ここでの他の提案は機能します。プログラムが誰かのから起動された場合、$PATH
フルパスではなく実行可能ファイル名のみが表示されることに注意してください。たとえば、これを試してください:
$ lftp &
$ ps -feww | grep ftp
lars 9600 9504 0 11:30 pts/10 00:00:00 lftp
lars 9620 9504 0 11:31 pts/10 00:00:00 grep ftp
で表示さps
れる情報は、実行中のプログラムによって完全に上書きされる可能性があることに注意することが重要です。たとえば、次のコード:
int main (int argc, char **argv) {
memset(argv[0], ' ', strlen(argv[0]));
strcpy(argv[0], "foobar");
sleep(30);
return(0);
}
これを「myprogram」というファイルにコンパイルして実行すると:
$ gcc -o myprogram myprogram.c
$ ./myprogram &
[1] 10201
実行するps
と、別のプロセス名が表示されます。
$ ps -f -p 10201
UID PID PPID C STIME TTY TIME CMD
lars 10201 9734 0 11:37 pts/10 00:00:00 foobar
を直接見ることもでき/proc/<pid>/exe
ます。これは、適切な実行可能ファイルへのシンボリックリンクである可能性があります。上記の例では、これは以下よりもはるかに有用な情報を提供しますps
:
$ls -l /proc/9600/exe
lrwxrwxrwx. 1 lars lars 0 Feb 8 11:31 /proc/9600/exe -> /usr/bin/lftp
最も信頼できる方法は/proc
、プロセスのディレクトリを確認することです。各プロセスには、次の/proc/<pid>/
ような情報を保持するディレクトリがあります。
cwd
現在の作業ディレクトリへのリンクfd
開いているファイル(ファイル記述子)へのリンクを含むdircmdline
プロセスを開始するために使用されたコマンドラインを確認するためにそれを読んでくださいenviron
そのプロセスの環境変数 root
プロセスがルートディレクトリと見なすものへのリンク(chrootされない限り/になります)各プロセス/ procにはさらにクールな情報がありますが、上記のものを使用すると、何が起こっているかを正確に知ることができます。
また、ps auxf
fork を使用すると、誰が何を分岐したかが表示されるため、perlを呼び出しているユーザーをより正確に把握できます。
/proc
プロセス情報が含まれています!誰かわかったね??私は永遠にそこに見えたすべてだったversion
とcpuinfo
とか...プラスPSの私のルータのバージョンは、すべてのパラメータは無視されているため、これは私の実際の問題を解決
chroot()
以前に呼び出された場合、どのディレクトリに/proc/ᴘɪᴅ/cwd
対応するかをどのように知ることができますか?
私にとっては、ちょうど今、pstree
プロセスがどのように開始されたかをより明確に示すことがわかりましたps aux
次のようになります。
├─lightdm─┬─Xorg
│ ├─lightdm─┬─init─┬─apache2───2*[apache2───26*[{apache2}]]
│ │ │ ├─at-spi-bus-laun─┬─dbus-daemon
│ │ │ │ └─3*[{at-spi-bus-laun}]
│ │ │ ├─at-spi2-registr───{at-spi2-registr}
│ │ │ ├─dbus-daemon
│ │ │ ├─dropbox───29*[{dropbox} ]
tryコマンドを使用
fuser -vu /var/spool/mail
このコマンドは、指定されたファイルまたはファイルシステムを使用しているプロセスのPIDを表示します。デフォルトの表示モードでは、各ファイル名の後に、アクセスのタイプを示す文字が続きます。
c-現在のディレクトリ。e-実行中の実行可能ファイル。f-ファイルを開きます。fはデフォルトの表示モードでは省略されます。r-ルートディレクトリ。m-mmapされたファイルまたは共有ライブラリ。
たぶんそれはあなたが探している答えにあなたの検索を進めるのに役立つでしょう。役に立つかどうかはわかりませんが、役に立つ情報が見つかるかもしれません。
2つのコマンドが思い浮かびます。
1) ' ps ' からプロセスの開始時間を取得します。
$ ps -ax -o pid,start,comm
PID STARTED COMMAND USER
1 Feb 06 init root
2 Feb 06 kthreadd root
[...]
13147 19:09:48 chrome hcooper
13270 19:13:51 chrome hcooper
13386 19:18:34 bash hcooper
2)lastcomm、今チェックしていますが、インストールしていません。とにかく、マニュアルページの説明は言う:
lastcomm prints out information about previously executed commands. If no arguments are specified, lastcomm will print info about all of the commands in acct (the record file).
しかし、数人が言ったように、「ls -al / proc /」は多くを語ってくれます!
/proc
、プログラムに関するすべての情報を提供しexe
、実行可能ファイルcwd
へのリンク、現在の作業ディレクトリfd
へのリンク、ディレクトリには開いているファイルへのリンクが含まれます(標準入力、出力、標準エラーを含む)