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/self/fd您可以为此使用 proc 文件系统

readlink /proc/self/fd/1

对于标准输出或2标准错误。

于 2013-02-15T15:29:53.443 回答
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 回答
0

这个怎么样?

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

再举一个例子:

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