如何查看 Beaglebone 上另一个 root 实例正在运行的进程

如何查看 Beaglebone 上另一个 root 实例正在运行的进程

我正在将 Raspbian Linux 映像安装到插入 BeagleBone Black 的 SD 卡上。稍后我将在我的 Raspberry Pi 中使用它。

为此,我使用 MacBook Pro 中的 dd 命令(通过 ssh)。

dd if=/Users/user/Downloads/2014-09-09-wheezy-raspbian.img | ssh [email protected] "dd of=/dev/mmcblk0"

最初看起来它正在工作,因为执行命令给了我:

Debian GNU/Linux 7

BeagleBoard.org BeagleBone Debian Image 2014-04-23

Support/FAQ: http://elinux.org/Beagleboard:BeagleBoneBlack_Debian

同时,我可以通过另一个终端窗口 ssh 到我的 beaglebone,再次以 root 身份登录ssh 192.168.7.2 -l root。现在如何通过 dd 命令监控 .img 文件复制到 /dev/mmcblk0 的情况?

不幸的是,SD 卡看起来并没有被填满(/dev/mmcblk0p1 在超过 5 分钟后使用了 15K):

root@beaglebone:/dev# df -ah
Filesystem                                              Size  Used Avail Use% Mounted on
rootfs                                                  3.4G  1.5G  1.9G  44% /
sysfs                                                      0     0     0    - /sys
proc                                                       0     0     0    - /proc
udev                                                     10M     0   10M   0% /dev
devpts                                                     0     0     0    - /dev/pts
tmpfs                                                   100M  624K   99M   1% /run
/dev/disk/by-uuid/88d655b6-c63d-4922-9b0e-340b5ece0b8c  3.4G  1.5G  1.9G  44% /
tmpfs                                                   249M     0  249M   0% /dev/shm
tmpfs                                                   249M     0  249M   0% /sys/fs/cgroup
cgroup                                                     0     0     0    - /sys/fs/cgroup/systemd
cgroup                                                     0     0     0    - /sys/fs/cgroup/cpu,cpuacct
cgroup                                                     0     0     0    - /sys/fs/cgroup/memory
cgroup                                                     0     0     0    - /sys/fs/cgroup/blkio
systemd-1                                                  0     0     0    - /proc/sys/fs/binfmt_misc
tmpfs                                                   5.0M     0  5.0M   0% /run/lock
debugfs                                                    0     0     0    - /sys/kernel/debug
tmpfs                                                   100M     0  100M   0% /run/user
mqueue                                                     0     0     0    - /dev/mqueue
securityfs                                                 0     0     0    - /sys/kernel/security
fusectl                                                    0     0     0    - /sys/fs/fuse/connections
/dev/mmcblk1p1                                           96M   74M   23M  77% /boot/uboot
binfmt_misc                                                0     0     0    - /proc/sys/fs/binfmt_misc
/dev/mmcblk0p1                                           15G   32K   15G   1% /media/6461-6136
root@beaglebone:/dev# 

答案1

看来你已经找到答案了。但另一个可能更容易记住的是

killall -USR1 dd

(这会向每个 dd 进程发出信号,通常只有一个)

输出显示在原始窗口上,因为您正在向现有的“dd”命令发送信号,并且 dd 有一个功能,当它收到该信号时,它会将进度转储到 stderr。

我还想指出,您似乎正在覆盖当前安装的分区。这是一件非常糟糕的事情,您可能会像这样损坏您的文件系统。在覆盖分区之前务必先卸载该分区。

另外,有时您可以通过给 dd 更大的块大小来加速 dd (并让 ssh 直接从文件中提取)。例如,将命令更改为

ssh [email protected] "dd of=/dev/mmcblk0 bs=1M" < /Users/user/Downloads/2014-09-09-wheezy-raspbian.img

答案2

这个命令最终起作用了,在我的 beaglebone 上以 root 身份执行:

pkill -USR1 -n -x dd

我可以一遍又一遍地运行该命令,它确实会更新(传输缓慢)。

有趣的是,更新将出现在其他终端窗口(即执行 dd 命令的窗口):

Debian GNU/Linux 7

BeagleBoard.org BeagleBone Debian Image 2014-04-23

Support/FAQ: http://elinux.org/Beagleboard:BeagleBoneBlack_Debian
39136+0 records in
39136+0 records out
20037632 bytes (20 MB) copied, 5.6016 s, 3.6 MB/s
89376+0 records in
89376+0 records out
45760512 bytes (46 MB) copied, 12.3178 s, 3.7 MB/s
205152+0 records in
205152+0 records out
105037824 bytes (105 MB) copied, 27.7496 s, 3.8 MB/s
296608+0 records in
296608+0 records out
151863296 bytes (152 MB) copied, 40.7469 s, 3.7 MB/s
361184+0 records in
361184+0 records out
184926208 bytes (185 MB) copied, 49.3917 s, 3.7 MB/s
432672+0 records in
432672+0 records out
221528064 bytes (222 MB) copied, 58.9498 s, 3.8 MB/s
648529+0 records in
648529+0 records out
332046848 bytes (332 MB) copied, 88.3797 s, 3.8 MB/s
702289+0 records in
702289+0 records out
359571968 bytes (360 MB) copied, 103.606 s, 3.5 MB/s
987329+0 records in
987329+0 records out
505512448 bytes (506 MB) copied, 194.866 s, 2.6 MB/s
991001+0 records in
991001+0 records out
507392512 bytes (507 MB) copied, 197.19 s, 2.6 MB/s

答案3

我用来监控正在进行的文件传输的工具(即我曾经在 RetroPie 中跟踪从 sdcard 到 USB 驱动器的 ROM 复制),它正是这样做的,足够恰当的是,progress.

它是一个“微小、肮脏、仅限 Linux 和 OSX 的 C 命令,用于查找系统上当前运行的coreutils基本命令(cpmvddtargzip/ gunzipcatrsync等)并显示复制数据的百分比。”

您可能必须安装它 ( sudo apt install progress) 然后以sudo.

我建议添加-m命令以使其持续监控和更新:

sudo progress -m

相关内容