相关疑难解决方法(0)

为什么我不能`tail -f /proc/$pid/fd/1`?

我写了一个简单的脚本echo-es 它的 PID:

#/bin/bash

while true; do
    echo $$;
    sleep 0.5;
done
Run Code Online (Sandbox Code Playgroud)

3844在一个终端中运行上述脚本(一遍又一遍),并尝试在另一个终端中运行tail文件描述符:

$ tail -f /proc/3844/fd/1
Run Code Online (Sandbox Code Playgroud)

它不会在屏幕上打印任何内容并挂起直到^c. 为什么?

此外,所有 STD 文件描述符 (IN/OUT/ERR) 都链接到相同的 pts:

$ ls -l /proc/3844/fd/
total 0
lrwx------ 1 mg mg 64 sie 29 13:42 0 -> /dev/pts/14
lrwx------ 1 mg mg 64 sie 29 13:42 1 -> /dev/pts/14
lrwx------ 1 mg mg 64 sie 29 13:42 2 -> /dev/pts/14
lr-x------ 1 mg mg 64 sie 29 13:42 …
Run Code Online (Sandbox Code Playgroud)

linux bash file-descriptors proc

10
推荐指数
1
解决办法
1万
查看次数

标签 统计

bash ×1

file-descriptors ×1

linux ×1

proc ×1