有没有办法找到命令的输出重定向到的路径(如果已经)?
我尝试使用:
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/self/fd
您可以为此使用 proc 文件系统
readlink /proc/self/fd/1
对于标准输出或2
标准错误。
使用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
可写。
这个怎么样?
[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