gpt4 book ai didi

linux - 检查已经运行的进程是否在 Linux 上重定向了 stdin?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:03:30 27 4
gpt4 key购买 nike

给定一个进程的 PID,有没有办法查明这个进程是否重定向了 stdin 或 stdout?

我有一个从标准输入读取的应用程序。为方便起见,我通常使用从文件重定向的标准输入启动此应用程序,如下所示:

app < input1.txt

问题是有时我启动应用程序却忘记了我使用的输入文件是什么。有没有办法找出哪个文件已用于重定向标准输入?

使用 ps -aux | grep PID让我看看使用的命令行。但是没有给我关于 stdin 的任何信息或 stdout .

我也尝试查看 top ,以及 /proc/PID/*但还没有找到任何东西。

如果有帮助的话,我正在使用 CentOS 7。

最佳答案

您应该能够查看 /proc/<PID>/fd 以获取此信息。例如,如果我为文件中的命令重定向标准输入:

sleep inf < somefile.txt

然后我在对应的/proc目录下填find:

$ ls -l /proc/12345/fd
lr-x------. 1 lars lars 64 Nov 4 21:43 0 -> /home/lars/somefile.txt
lrwx------. 1 lars lars 64 Nov 4 21:43 1 -> /dev/pts/5
lrwx------. 1 lars lars 64 Nov 4 21:43 2 -> /dev/pts/5

将 stdout 重定向到文件时,同样的事情会发生。如果我运行:

sleep inf > somefile.txt

然后我明白了:

$ ls -l /proc/23456/fd
lrwx------. 1 lars lars 64 Nov 4 21:45 0 -> /dev/pts/5
l-wx------. 1 lars lars 64 Nov 4 21:45 1 -> /home/lars/somefile.txt
lrwx------. 1 lars lars 64 Nov 4 21:45 2 -> /dev/pts/5

关于linux - 检查已经运行的进程是否在 Linux 上重定向了 stdin?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53134962/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com