コマンドの出力がリダイレクトされたパスを見つける方法はありますか (リダイレクトされている場合)?
私は使用してみました:
ps -p PID -o cmd
を探して>
そこからパスを抽出できると考えていますが、出力にはその部分がありません。切り捨てられただけではないことは確かです。
コマンドの出力がリダイレクトされたパスを見つける方法はありますか (リダイレクトされている場合)?
私は使用してみました:
ps -p PID -o cmd
を探して>
そこからパスを抽出できると考えていますが、出力にはその部分がありません。切り捨てられただけではないことは確かです。
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
これにはprocファイルシステム/proc/self/fd
を使用できます
readlink /proc/self/fd/1
stdout または2
stderr 用。
どうですか?
[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
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
w
FD (ファイル記述子) 列の は、書き込み用に開いていることを意味します/tmp/t
。