将命令输出重定向到文件如何处理打开和关闭该文件?

将命令输出重定向到文件如何处理打开和关闭该文件?

如果我们重定向一个命令,那么sar -r 1> a_file.txt它如何打开、写入命令的输出并关闭文件?

换句话说,重定向命令输出在后台打开、写入和关闭文件?(特别是上述定期并连续向输出发送数据的命令)

我想知道是否涉及一些缓存,以及是否涉及一些冲洗(将内容写入文件)发生在最后

答案1

文件重定向 ( <input, >output, 2>error) 由父 shell 处理。执行的命令 (sar在您的示例中) 仅看到文件句柄 ( 0=> STDIN, 1=> STDOUT, 2=> STDERR) 并通过文件句柄进行读取/写入。执行的程序甚至不知道任何内容被重定向。

由于文件(> a_file.txt)由父 shell 打开,因此当执行的程序退出时,父 shell 只需将其关闭,并自动刷新所有缓冲区。

相关内容