有没有办法找到命令将输出重定向到的路径(如果有的话)?
我尝试使用:
ps -p PID -o cmd
以为我可以寻找>
并从中提取路径,但输出中没有该部分。我很确定它不会被截断。
答案 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