有没有办法找到命令将输出重定向到(如果已经)的路径?获取命令输出已重定向到的路径
我试着使用:
ps -p PID -o cmd
想我可以找一个>
和提取的路径,但输出没有在它的一部分。我很确定它不仅被截断。
有没有办法找到命令将输出重定向到(如果已经)的路径?获取命令输出已重定向到的路径
我试着使用:
ps -p PID -o cmd
想我可以找一个>
和提取的路径,但输出没有在它的一部分。我很确定它不仅被截断。
您可以使用proc文件系统/proc/self/fd
此
readlink /proc/self/fd/1
标准输出或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
使用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
是打开用于写入。
怎么样?
[[email protected] ~]# ls -l /proc/14170/exe
lrwxrwxrwx 1 root root 0 Feb 15 10:36 /proc/14170/exe -> /usr/sbin/httpd
再举一个例子:
[[email protected] ~]# readlink -f /proc/5352/exe
/sbin/syslogd