如何从“gnome-terminal -x”捕获打印的日志?

如何从“gnome-terminal -x”捕获打印的日志?

sudo fio myjog | tee mylog当我在终端窗口中发出命令时,我可以将fio日志保存到文件中mylog

但是如果我发出命令sudo gnome-terminal -x sudo fio myjog | tee mylogmylog则会创建内部没有任何文本的文件。

如何从中捕获打印日志gnome-terminal -x

答案1

命令行中运行的每个命令按顺序如下:

  • 由 shell 解释;
  • 由可执行文件解释;

在这种情况下|,使 shell 解释sudo gnome-terminal -x sudo fio myjog | tee mylog为两个通过管道传输的命令(sudo gnome-terminal -x sudo fio myjog并且tee mylog,第一个命令通过管道传输到第二个命令)。

这样做的结果是的输出通过sudo gnome-terminal -x sudo fio myjog管道传输到tee mylog;由于gnome-terminal没有输出任何内容,因此mylog为空。

使用-e选项将要执行的命令作为参数传递;

通过选项传递的命令-e在中执行sh

在这种情况下,由于您想要使用管道bash(以及其他 shell 的)功能,您需要明确运行该命令bash(附注:如果您要在/选项的参数中使用,则无需sudo运行):gnome-terminalsudo-x-e

gnome-terminal -e "bash -c \"sudo fio myjog | tee mylog\""

答案2

要求 gnome-terminal 使用特定命令运行 bash。例如,

gnome-terminal -x bash -c " printf "YOLO"; sleep 5 " 

就你的情况而言,

gnome-terminal -x bash -c "sudo fio myjog | tee mylog"

选择,

询问script命令来记录输出,而不是tee。例如,

gnome-terminal -x script -c "sudo apt-get update" myLog 

相关内容