命令 pkill -USR1 -n -x dd 到底是什么意思?

use*_*339 14 kill signals dd

我正在使用dd网络将磁盘映像传输到 BeagleBone 上的 SD 卡。

pkill -USR1 -n -x dd在与此 BeagleBone 的 ssh 连接中使用为我提供了传输过程的状态更新,这很棒。我只是好奇它是如何实际工作的,以便我将来可以有效地使用它。

阅读man pkill后仍然没有完全解释如何pkill -USR1 -n -x dd为我提供这个非常有用的状态更新。

Mic*_*zek 17

这是特定于dd. 从dd手册页:

向正在运行的 'dd' 进程发送 USR1 信号使其将 I/O 统计信息打印到标准错误,然后恢复复制。

$ dd if=/dev/zero of=/dev/null& pid=$!
$ kill -USR1 $pid; sleep 1; kill $pid

18335302+0 records in 18335302+0 records out 9387674624 bytes (9.4 GB) copied,  34.6279  seconds, 271 MB/s
Run Code Online (Sandbox Code Playgroud)

-USR1告诉pkill 发送USR1信号。-n并且-x只是过滤器,以确保您发送到正确的进程(-n发送到最新的进程并-x意味着该进程必须准确命名dd

  • 这仅在 'dd' (AFAIK) 的 GNU 版本中。默认情况下,其他操作系统(例如 AIX、HP-UX 和 Solaris)的 SIGUSR1 到 'dd' 将终止该进程。 (2认同)