获取已重定向命令输出的路径

时间:2013-02-15 15:21:32

标签: linux

有没有办法找到命令将输出重定向到的路径(如果有的话)?

我尝试使用:

ps -p PID -o cmd

以为我可以寻找>并从中提取路径,但输出中没有该部分。我很确定它不会被截断。

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

您可以将proc文件系统/proc/self/fd用于此

readlink /proc/self/fd/1

表示stdout或2表示stderr。

答案 2 :(得分:0)

使用lsof(列表打开文件)命令查看进程已打开哪些文件进行编写。

例如:

$ 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

FD(文件描述符)列中的w表示/tmp/t已开放供写入。

答案 3 :(得分: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