我熟悉 DD 命令在运行时不会产生输出。但是,如果我向它发送 USR1 信号,它可以打印当前状态。
我可以用 AWK 做同样的事情吗?打印它的变量,注册signal_handler?
答案1
您不能跨平台依赖这种行为,即使对于dd
. POSIX没有指定对 SIGUSR1 的响应,实际上,dd
如果您尝试使用它,您的进程将会终止操作系统X或者BSD,甚至有时嵌入式Linux(Busybox)。以这种方式使用SIGUSR1
ondd
似乎是 GNU 扩展。实际上,在大多数桌面 Linux 系统上您都可以执行此操作。
同样,如果您使用 GNU awk
,您可能能够发送它SIGUSR1
来获取一些 GNU 特定的内部状态信息。在这种情况下,它不会打印到标准输出,而是打印到文件。支持此功能的 awk 版本是 GNUawk
4.1.0 及更高版本如果使用-p
( --profile
) 标志运行,或者3.1 及更高版本当编译并运行为pgawk
.
有关信号功能的详细信息,请参阅gawk
手册页 (3.1版或者版本 4.1),然后搜索“信号”。
请注意,与 GNU 相比,您的桌面 Linux 是否运行 GNU awk 不太确定dd
;mawk
是我见过的另一个在桌面 Linux 上运行的 awk。