linux 日志输出重定向
./demo > /mnt/udisk/heliang-log.log 2>&1 &
这行命令在Unix/Linux系统中执行了几个操作,下面是对它的详细解释:
-
./demo
:这部分是命令的主体,表示执行当前目录下名为demo
的可执行文件。./
指的是当前目录,因此这个命令是在告诉系统在当前目录中查找名为demo
的文件,并尝试执行它。 -
>
:这个符号用于重定向命令的标准输出(stdout)。标准输出通常是显示在终端上的信息。在这个命令中,>
后面跟着的是/mnt/udisk/heliang-log.log
,意味着demo
命令的输出将被重定向到这个文件中,而不是显示在终端上。 -
/mnt/udisk/heliang-log.log
:这是输出重定向的目标文件路径。如果文件已经存在,它将被覆盖;如果不存在,系统将创建这个文件。这个路径指向挂载在/mnt/udisk
目录下的名为heliang-log.log
的文件。 -
2>&1
:这部分是另一个重定向操作,用于将标准错误(stderr,文件描述符为2)重定向到标准输出(stdout,文件描述符为1)。在这个上下文中,由于标准输出已经被重定向到/mnt/udisk/heliang-log.log
文件,标准错误也将被重定向到同一个文件。这意味着demo
命令的所有输出(无论是正常的输出还是错误信息)都将被写入到heliang-log.log
文件中。 -
&
:这个符号用于将命令置于后台执行。这意味着你可以在demo
命令运行的同时,继续在终端中执行其他命令。如果没有这个&
,终端将等待demo
命令执行完成,之后才能接受新的命令输入。
如果你希望在重定向输出时,如果文件 /mnt/udisk/heliang-log.log
已存在,则在其后面追加内容而不是覆盖它,你可以使用 >>
而不是 >
。>>
是追加重定向操作符。
因此,你的 shell 命令应该修改为:
./demo >> /mnt/udisk/heliang-log.log 2>&1 &
这里,>> /mnt/udisk/heliang-log.log
表示将 demo
命令的标准输出追加到指定的日志文件中。2>&1
仍然表示将标准错误重定向到标准输出(在这里,标准输出已经被重定向到文件,因此标准错误也会被追加到同一个文件中)。最后,&
表示在后台执行该命令。