在qnx系统中,参考host_server >/dev/slog2/stdout 2> /dev/slog2/stderr &,将top -d 10 -n 10 >到slog2中,如何实现
时间: 2023-12-25 12:07:02 浏览: 40
在QNX中,要将top命令的输出定期写入到slog2中,可以使用以下命令:
```
top -d 10 -n 10 > /dev/slog2/stdout 2> /dev/slog2/stderr &
```
这个命令将会每隔10秒钟打印一次top命令,共打印10次,将标准输出和标准错误输出都重定向到/dev/slog2/stdout和/dev/slog2/stderr中,并且在后台运行。
需要注意的是,这个命令将会将所有的标准输出和标准错误输出都写入到slog2中,包括top命令的输出和其他命令的输出。如果你只想将top命令的输出写入到slog2中,可以使用前面提到的slog2命令的方式来实现。
相关问题
qnx中为什么host_server > /dev/slog2/stdout 2> /dev/slog2/stderr &是running状态top -d 10 > top.log却是Stopped (tty output)
QNX 操作系统中的运行状态与其他操作系统可能有所不同,这里给出一些可能的解释:
1. `host_server > /dev/slog2/stdout 2> /dev/slog2/stderr &` 命令将标准输出和标准错误输出重定向到 `/dev/slog2/stdout` 和 `/dev/slog2/stderr` 设备中,不会阻塞终端交互,因此该命令可以在后台运行并保持运行状态。
2. `top -d 10 > top.log &` 命令将标准输出重定向到 `top.log` 文件中,但是由于 QNX 操作系统的特殊性,该命令可能会尝试与终端交互,并且由于被重定向的标准输出被关闭,因此会提示 "Stopped (tty output)"。此时,你可以使用 `bg` 或 `disown` 命令将该命令移到后台继续执行。
使用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` 放到后台运行,避免被终端的控制机制终止。希望这个解决方法能够帮到您!