top -d 10 > /dev/slog2/stdout 2> /dev/slog2/stderr &搭配tee如何使用
时间: 2023-07-11 12:42:15 浏览: 138
可以将 `top -d 10` 的标准输出和标准错误输出通过管道传递给 tee 命令,然后将 tee 命令的输出重定向到 /dev/slog2/stdout 和 /dev/slog2/stderr 中,实现同时将标准输出和标准错误输出保存到 slog2 中的效果。具体命令如下:
```
top -d 10 2>&1 | tee /dev/slog2/stdout /dev/slog2/stderr &
```
其中,`2>&1` 表示将标准错误输出重定向到标准输出,`|` 表示将前面命令的输出作为后面命令的输入,`tee /dev/slog2/stdout /dev/slog2/stderr` 表示将输入内容同时输出到 /dev/slog2/stdout 和 /dev/slog2/stderr 中,`&` 表示将命令放入后台运行。这条命令的作用是每隔 10 秒钟输出一次系统进程信息,并将输出结果保存到 slog2 中的 stdout 和 stderr 文件中。
相关问题
使用nohup top -d 10 > /dev/slog2/stdout 2> /dev/slog2/stderr &终端输出top -d 10 > /dev/slog2/stdout 2> /dev/slog2/stderr &为什么
在 QNX 系统中,使用 `nohup top -d 10 > /dev/slog2/stdout 2> /dev/slog2/stderr &` 命令时,终端会输出 `top -d 10 > /dev/slog2/stdout 2> /dev/slog2/stderr &` 的信息,这是因为命令解释器在解析命令时,会先将 `>` 和 `2>` 等符号进行重定向操作,将标准输出和标准错误输出重定向到指定的文件中,然后再执行 `top -d 10` 命令。
因此,终端会先输出重定向的命令,再执行 `top -d 10` 命令。为了避免这种情况,可以使用 `nohup` 命令和子shell的方式来执行命令,例如:
```
nohup sh -c 'top -d 10 > /dev/slog2/stdout 2> /dev/slog2/stderr' >/dev/null 2>&1 &
```
这样,终端就不会输出 `top -d 10 > /dev/slog2/stdout 2> /dev/slog2/stderr &` 的信息了,同时也能够将 `top -d 10` 放到后台运行,避免被终端的控制机制终止。希望这个解决方法能够帮到您!
top -d 10 > /dev/slog2/stdout 2> /dev/slog2/stderr &这种方式可行吗
这种方式也是可行的,可以将 `top -d 10` 的标准输出重定向到 `/dev/slog2/stdout` 中,将标准错误输出重定向到 `/dev/slog2/stderr` 中。命令如下:
```
top -d 10 > /dev/slog2/stdout 2> /dev/slog2/stderr &
```
这样,`top -d 10` 的输出就会分别被重定向到 `/dev/slog2/stdout` 和 `/dev/slog2/stderr` 中。但是需要注意的是,如果程序在输出时使用了缓冲区,可能会导致输出的延迟,甚至可能会出现输出乱序的情况。为了避免这个问题,可以使用 `stdbuf` 命令来禁用缓冲区,例如:
```
stdbuf -o0 top -d 10 > /dev/slog2/stdout 2> /dev/slog2/stderr &
```
这样就可以禁止 `top -d 10` 的输出缓冲区,避免输出延迟和乱序的问题。希望这个解决方法能够帮到您!
阅读全文