linux下显示dd命令的进度

worktile 其他 1203

回复

共3条回复 我来回复
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    在Linux下,dd命令是一个非常强大的磁盘工具,它可以用来复制文件、创建磁盘镜像和磁盘备份等操作。然而,dd命令默认不会显示进度条,这给用户带来了一定的困扰。但是,我们可以通过一些方法来实现在Linux下显示dd命令的进度。下面我将介绍两种实现方法:

    方法一:使用pv命令

    pv是一个命令行工具,可以显示进度条和估计剩余时间。我们可以通过将dd命令的输出重定向到pv命令来实现显示进度条的效果。

    命令格式如下:
    “`
    dd if=<输入文件> | pv | dd of=<输出文件>
    “`

    示例:
    “`
    dd if=/dev/zero bs=1M count=100 | pv | dd of=/dev/sdb
    “`

    这个命令会从/dev/zero设备读取100MB的数据,并通过pv命令显示进度条,最后将数据写入/dev/sdb设备。你可以根据实际情况修改命令中的输入文件和输出文件参数。

    方法二:使用status=progress参数

    在较新版本的dd命令中,添加了一个status=progress参数,可以用来显示进度条。

    命令格式如下:
    “`
    dd if=<输入文件> of=<输出文件> status=progress
    “`

    示例:
    “`
    dd if=/dev/zero of=/dev/sdb bs=1M count=100 status=progress
    “`

    这个命令会从/dev/zero设备读取100MB的数据,通过status=progress参数显示进度条,并将数据写入/dev/sdb设备。

    需要注意的是,旧版本的dd命令可能不支持status=progress参数,如果你的系统上的dd命令没有这个参数,可以尝试更新到最新版本或者使用方法一中的pv命令。

    总结:

    通过使用pv命令或者status=progress参数,我们可以在Linux下显示dd命令的进度。这些方法可以帮助我们更直观地了解dd命令的执行情况,提高工作效率。同时,我们也可以根据实际需要选择适合自己的方法来显示进度条。

    2年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    在Linux下使用dd命令复制文件时,默认情况下不会显示进度条,只会在任务完成时显示复制的字节数和耗时。然而,有几种方法可以在Linux下显示dd命令的进度。

    1. 使用status=progress选项:
    最简单的方法是在dd命令中加上status=progress选项。该选项会显示复制的进度条和已复制的字节数。例如,以下命令将从/dev/sda复制到/dev/sdb,并显示进度条:
    “`
    dd if=/dev/sda of=/dev/sdb status=progress
    “`

    2. 使用pv命令:
    另一种方法是使用pv命令(pipe viewer)。pv命令可以将数据流传递给它,并显示传递的数据的进度条。首先安装pv命令(如果尚未安装),然后使用以下命令将dd命令与pv命令结合使用:
    “`
    dd if=/dev/sda | pv | dd of=/dev/sdb
    “`
    该命令会从/dev/sda读取数据,通过pv显示进度条,然后将数据写入/dev/sdb。

    3. 使用watch命令:
    还有一种方法是使用watch命令,该命令可以周期性地执行一个命令并显示其输出。可以使用以下命令来监视dd命令的进度:
    “`
    watch -n 1 ‘kill -USR1 `pgrep ^dd`’
    “`
    这将每秒执行一次命令,并向正在执行的dd命令发送USR1信号,以显示进度。

    4. 使用dstat命令:
    dstat命令是一个监控和统计工具,可以显示各种系统资源的实时信息。可以使用以下命令来监视dd命令的进度:
    “`
    dstat -N sdb,sdc –noheaders –bw 2
    “`
    该命令会每2秒钟显示一次/dev/sdb和/dev/sdc的带宽使用情况,并显示当前读写速度。

    5. 使用progress命令:
    如果系统上没有安装pv命令,还可以使用progress命令来显示dd命令的进度。首先安装progress命令,然后使用以下命令来复制文件并显示进度:
    “`
    dd if=/dev/sda of=/dev/sdb bs=1M | progress -mp % -w $COLUMNS
    “`
    这将在命令行中显示一个进度条,以显示复制的进度。

    请注意,以上方法中的一些命令可能需要root权限。另外,显示进度条可能会稍微降低复制的速度,因为计算和显示进度需要一定的系统资源。

    2年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    在Linux下,使用dd命令复制文件或设备时,默认情况下是没有显示进度的。然而,可以通过一些技巧来实现显示dd命令的进度。

    以下是几种方法。

    ## 方法一:使用pv命令

    pv(Pipe Viewer)是一个命令行工具,可以用于显示数据传输的进度。

    首先,确保已经安装了pv命令。如果没有安装,可以使用以下命令进行安装:

    “`shell
    sudo apt-get install pv
    “`

    然后,使用以下命令将dd命令和pv命令结合起来使用:

    “`shell
    dd if=<输入文件> | pv | dd of=<输出文件>
    “`

    其中,`<输入文件>`是要复制的输入文件路径,`<输出文件>`是要复制到的输出文件路径。

    这样,pv命令会显示复制的进度以及剩余时间。

    ## 方法二:使用status=progress选项

    从dd的版本1.7开始,增加了一个status选项来显示进度。

    通过在dd命令后面添加`status=progress`,可以实现显示进度的效果。

    例如:

    “`shell
    dd if=<输入文件> of=<输出文件> status=progress
    “`

    这样,dd命令会显示复制的进度。

    ## 方法三:使用kill命令

    如果你已经在运行dd命令,可以使用kill命令查看复制的进度。

    首先,打开一个新的终端窗口,并使用以下命令查找dd命令的进程ID(PID):

    “`shell
    ps aux | grep dd
    “`

    然后,在新的终端窗口中,使用以下命令通过发送SIGUSR1信号来查看dd命令的进度:

    “`shell
    kill -USR1 “`

    这样,dd命令会在原来的终端窗口中显示复制的进度。

    以上是在Linux下显示dd命令进度的几种方法。可以根据自己的需求选择使用其中的一种方法。

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部