正在运行的脚本可以识别日志记录上下文吗?

Ama*_*mar 2 shell file-descriptors files stdout stderr

假设我将程序的STDOUT,重定向STDERR到文件。

./script.sh 1> output.log 2> error.log
Run Code Online (Sandbox Code Playgroud)

正在运行的程序能否找到这个,即知道这些文件的路径?

mik*_*erv 5

{ readlink /dev/fd/[1,2] ; echo "out" ; } >./file 2>./error    
{ readlink /dev/fd/0 ; cat ; } <./file
Run Code Online (Sandbox Code Playgroud)

输出:

/home/mikeserv/file
/home/mikeserv/file
/home/mikeserv/error
out

{ readlink /proc/$$/fd/[1,2] ; echo out ; } >./file 2>./error
{ readlink /proc/$$/fd/0 ; cat ; } <./file
Run Code Online (Sandbox Code Playgroud)

输出:

/home/mikeserv/file
/home/mikeserv/file
/home/mikeserv/error    
out
Run Code Online (Sandbox Code Playgroud)

  • 这很有用,但应注意并非所有 Unix 都实现 proc 文件系统。 (4认同)