如果我们重定向一个命令,那么sar -r 1> a_file.txt
它如何打开、写入命令的输出并关闭文件?
换句话说,重定向命令输出在后台打开、写入和关闭文件?(特别是上述定期并连续向输出发送数据的命令)
我想知道是否涉及一些缓存,以及是否涉及一些冲洗(将内容写入文件)发生在最后
答案1
文件重定向 ( <input
, >output
, 2>error
) 由父 shell 处理。执行的命令 (sar
在您的示例中) 仅看到文件句柄 ( 0
=> STDIN
, 1
=> STDOUT
, 2
=> STDERR
) 并通过文件句柄进行读取/写入。执行的程序甚至不知道任何内容被重定向。
由于文件(> a_file.txt
)由父 shell 打开,因此当执行的程序退出时,父 shell 只需将其关闭,并自动刷新所有缓冲区。