nohup tensorflow_model_server \
--rest_api_port=8501 \
--model_name=fashion_model \
--model_base_path="${MODEL_DIR}" >server.log 2>&1
我在张量流服务指南中看到了这个这里。我想知道 的含义> server.log 2>&1
。我有点知道这是关于保存stdout
到一个文件,然后保存stderr
到另一个我不知道它是什么的文件。
答案1
此重定向的目的是还将stderr
输出写入服务器日志。
当您使用像这样的重定向时
some command > file.txt
它仅将程序写入的输出保存到stdout
通常连接到控制台的标准输出流。
然而,大多数程序都遵循将错误消息写入不同输出流的良好实践,stderr
虽然这些错误消息也打印在控制台上,但可以单独“捕获”和重定向,以确保错误消息不会在“ verbose”程序的正常输出。
然而,这也可能成为一个问题:如果您仅将某些冗长(因此通常无人值守)编译过程的“正常”输出重定向到文件中,则警告和错误只会打印到控制台。如果现在您稍后回来检查结果,您将在日志文件中看到标准的“一切正常”输出,并在控制台中看到看似不相关的错误输出。
因此,将错误输出“也重定向”到文件会很有帮助,以便所有消息都“在上下文中”。
这里的机制是
首先重定向
stdout
到文件(command > file
这部分可以明确写为command 1>file
,1
指示流的文件描述符stdout
)stderr
也以“合并”方式将 重定向到stdout
(这就是语法为 的原因2>&1
,&
意思是“复制”文件描述符),众所周知stdout
已经重定向到文件。
进一步阅读的好地方可能是