1

コマンドの出力がリダイレクトされたパスを見つける方法はありますか (リダイレクトされている場合)?

私は使用してみました:

ps -p PID -o cmd

を探して>そこからパスを抽出できると考えていますが、出力にはその部分がありません。切り捨てられただけではないことは確かです。

4

4 に答える 4

2

PID がわかっている場合は、単に調べて/proc/ID/fd/1ください。実際のパスにリンクする必要があります。

$ watch date > /tmp/1 &
[1] 27346
$ ls -l /proc/27346/fd/1
l-wx------ 1 choroba users 64 2013-02-15 16:28 /proc/27346/fd/1 -> /tmp/1
于 2013-02-15T15:29:17.327 に答える
2

これにはprocファイルシステム/proc/self/fdを使用できます

readlink /proc/self/fd/1

stdout または2stderr 用。

于 2013-02-15T15:29:53.443 に答える
0

どうですか?

[root@us04 ~]# ls -l /proc/14170/exe
lrwxrwxrwx 1 root root 0 Feb 15 10:36 /proc/14170/exe -> /usr/sbin/httpd

もう 1 つの例:

[root@us04 ~]# readlink -f /proc/5352/exe
/sbin/syslogd
于 2013-02-15T15:39:37.010 に答える
0

lsof(list open files) コマンドを使用して、プロセスが書き込み用に開いているファイルを確認します。

例えば:

$ lsof -p 31714
COMMAND   PID  USER      FD   TYPE DEVICE    SIZE       NODE NAME
bash    31714 dogbane    0u   CHR  136,4                  6 /dev/pts/4
bash    31714 dogbane    1w   REG    8,1      15    2032202 /tmp/t

wFD (ファイル記述子) 列の は、書き込み用に開いていることを意味します/tmp/t

于 2013-02-15T15:37:21.090 に答える