1. 程式人生 > >linux小記:檢視dd進度

linux小記:檢視dd進度

經常使用dd命令製作linux系統盤,相當方便迅速。但是用了這麼久,突然就想,要是能夠知道dd現在的進度該多好,於是查了查,果然找到了。

刻盤的時候,我們先在一個shell中使用dd,比如我們把Arch Linux的映象刻到U盤/dev/sdc中:

lgl@pArch ~/Downloads $ sudo dd if=archlinux-2016.04.01-dual.iso of=/dev/sdc

此時,在另一個shell中,我們輸入:

lgl@pArch ~ $ sudo watch -n 5 pkill -USR1 ^dd$

或者:

[email protected] ~ $ sudo watch -n
5 pkill -USR1 -x dd

然後,當前終端會顯示:

Every 5.0s: pkill -USR1 -x dd 

此時,使用dd命令的終端會顯示進度:

[email protected] ~/Downloads $ sudo dd if=archlinux-2016.04.01-dual.iso of=/dev/sdc
[sudo] lgl 的密碼:
記錄了234881+0 的讀入
記錄了234881+0 的寫出
120259072 bytes (120 MB, 115 MiB) copied, 21.7691 s, 5.5 MB/s
記錄了286353+0 的讀入
記錄了286353
+0 的寫出 146612736 bytes (147 MB, 140 MiB) copied, 26.7881 s, 5.5 MB/s 記錄了338249+0 的讀入 記錄了338249+0 的寫出 173183488 bytes (173 MB, 165 MiB) copied, 31.8169 s, 5.4 MB/s ……

直到結束。

解釋:

watch - execute a program periodically, showing output fullscreen

watch負責週期性執行一個程式,使用-n可以指定執行的時間間隔。-d則會高亮出這次執行和上次執行的結果變化了的地方。所以watch -n 5 pkill -USR1 ^dd$

就是每五秒執行一次pkill -USR1 ^dd$

pgrep, pkill - look up or signal processes based on name and other attributes

pkill是根據名稱或其他屬性來查詢程序或給程序發訊號的。
所以pkill -USR1 ^dd$就是給dd程序傳送訊號USR1,USR1這個訊號在man dd裡有解釋:

Sending a USR1 signal to a running ‘dd’ process makes it print I/O statistics to standard error and then resume copying.

也就是說只要給dd傳送USR1訊號,它就會在標準錯誤輸出中輸出I/O資料,並繼續複製。這樣的話就實現了當前進度的輸出。
命令中最後的^dd$自然是篩選名稱中僅含有dd的程序,否則,所有名稱中包含dd欄位的程序都會被選中。我們做個實驗:

[email protected] ~ $ pkill -USR1 dd  
pkill: killing pid 2 failed: 不允許的操作
pkill: killing pid 43 failed: 不允許的操作
pkill: killing pid 282 failed: 不允許的操作
pkill: killing pid 548 failed: 不允許的操作
pkill: killing pid 2475 failed: 不允許的操作

[email protected] ~ $ ps -A | grep dd
    2 ?        00:00:00 kthreadd
   43 ?        00:00:00 ipv6_addrconf
  282 ?        00:00:00 sddm
  548 ?        00:00:00 sddm-helper
 2475 pts/2    00:00:04 dd
 2488 ?        00:00:00 ksysguardd

由上面可以看到,pkill果然是向所有名稱中包含dd的程序都發送訊號了。

另外,除了使用正則的表示方式之外,我們還可以使用-x來指定程序名:

-x, –exact
Only match processes whose names (or command line if -f is specified) exactly match the pattern.

所以,pkill -USR1 -x dd的作用就是明確指定程序的名字就是dd。

所以說,我們通過pkill(發訊號)和watch(週期性執行命令)的結合來實現了dd進度的檢視。

相關推薦

linux小記檢視dd進度

經常使用dd命令製作linux系統盤,相當方便迅速。但是用了這麼久,突然就想,要是能夠知道dd現在的進度該多好,於是查了查,果然找到了。 刻盤的時候,我們先在一個shell中使用dd,比如我們把Arc

linuxlinux命令檢視linux伺服器的jdk、Tomcat、mysql、maven版本號

目錄 一、jdk 一、jdk 輸入命令,可以看到jdk版本是:1.8.0_181: cd ~ java -version 二、Tomcat (1)切換到Tomcat安裝目錄的bin目錄下: cd /usr/local/tomcat8-dev/b

linux系統中檢視命令進度

使用cp命令複製大量檔案時,無法監視當前的進度,progress工具很好地解決了這個問題。 1、官網提供了下載連結,地址:https://github.com/Xfennec/progress 或者使用命令 $git clone [email protected]

Linux檢視dd命令執行進度

轉載地址,同時也進行了一些補充。謝謝原作者。 經常使用dd命令製作linux系統盤,相當方便迅速。但是用了這麼久,突然就想,要是能夠知道dd現在的進度該多好,於是查了查,果然找到了。 刻盤的時候,我們先在一個shell中使用dd,比如我們把Arch Linux的映象刻到U

Linux基礎命令二檢視檔案內容

1.cat 文字檢視。檢視指定檔案的內容 [[email protected] ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

Linux ps命令檢視系統中正在執行的程序

ps 是用來靜態地檢視系統中正在執行的程序的命令。 “ps aux"可以檢視系統中所有的程序;(使用BS作業系統格式。但是這個選項不能加入”-"。) "ps -le"可以檢視系統中所有的程序,而且還能看到程序的父程序的PID和程序優先順序;( 使用Linux標準命令格式) "ps -l"

Linux基本命令10檢視記憶體的使用命令

1.top命令 PID:當前執行程序的ID USER:程序屬主 PR:每個程序的優先級別 NInice:反應一個程序“優先順序”狀態的值,其取值範圍是-20至19,一     共40個級別。這個值越

Linux基本命令20檢視當前登入主機使用者終端資訊(who命令)

who命令 who用於檢視當前登入主機的使用者終端資訊,格式為“who[引數]”。 這三個字母可以快速顯示出所有正在登陸本機的使用者名稱稱以及他們正在開啟的終端資訊。 執行who命令的結果 顯示內容:登

Linux終端用cat命令檢視不可見字元

時常,某個程式或軟體並沒有語法錯誤,並且你檢查它的相關內容也確實沒有發現問題。這是因為你用普通文字編輯器軟體來檢視的時候,有許多字元沒有顯示出來,但在終端使用 cat 命令可以很容易地檢測出是否存在這些字元。 首先,我們建立一個簡單的文字檔案,寫入一些特殊字元。開啟終端,執行命令: printf 'test

linux命令使用less從後向前檢視日誌資訊

線上出問題的時候,我們常用tail-n 或者tail-f或者grep或者vicat等各種命令去檢視異常資訊,但是日誌是在不停地刷屏,tail是動態的在變的,我們往往期望從日誌最後一行往前一頁一頁的翻頁檢視,從而找到異常資訊,而less命令我覺得是最實用和方便的  一個日

linux命令 - du檢視目錄下檔案和資料夾的大小

連結:(轉)Linux下檢視檔案和資料夾大小 刪除日誌 - CS408 - 部落格園https://www.cnblogs.com/lixuwu/p/5944062.html#_label0 linux檢視目錄大小 - CSDN部落格https://blog.csdn.net/learner19

Linux Pmap 命令檢視程序用了多少記憶體

Pmap 提供了程序的記憶體對映,pmap命令用於顯示一個或多個程序的記憶體狀態。其報告程序的地址空間和記憶體狀態資訊。Pmap實際上是一個Sun OS上的命令,linux僅支援其有限的功能。但是它還是對檢視完整的程序地址空間很有幫助。我們需要PID或者執行的程序的唯一程序ID來檢視程序記憶體狀態,我們

Linux入門常用命令檢視硬碟、分割槽、CPU、記憶體資訊

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++   學習是一

Linux下的檢視檔案格式命令file

###Date: 2017/9/3 Linux下的檢視檔案格式命令: file fileaname e.g     第一個後面顯示not stripped,第二個後面顯示stripped,這兩者有什麼

linux小記 -檢視當前服務執行狀態

#service servicename status是當前狀態#chkconfig --list servicename是檢視啟動狀態,也就是是否開機自動啟動如果service和chkconfig 找不到,可以試試/sbin/service和/sbin/chkconfig如果用ubuntu好像是要用/etc

linux工具快速返回某級父目錄--bd

cert tps nes style program 名稱 class bashrc o-c 當我們在linux服務器上切換父目錄時,通常使用cd ../../,有幾級目錄就輸入幾次"../",如果目錄嵌套的過深,就會有點暈菜...因此,本次介紹的這款工具,可以快速

開發人員學Linux(3)CentOS7中安裝JDK8和Tomcat8

java tomcat jdk service centos 題外話:直到今天開始寫本系列的第三篇時本人才想好為這個系列取一個名字,本系列不是為Linux運維人員準備的,而是主要為開發人員準備的,包括但不限於:希望了解Linux的開發人員;需要在Linux上部署一些組件的開發人員,如Mem

Linux基礎history命令

linux history bash histfile 一、為什麽要學習 history 命令 ? history命令是bash shell 內置命令,history命令有助於我們縮短輸入命令的時間,達到節省命令快捷操作的要求。我們也可以通過查詢history命令,從而審計操作日誌。同

linux學習持續集成篇--安裝Jenkins持續集成平臺-05

持續集成 jenkins 一、Jenkins需要使用maven,所以首先安裝maven1、解壓[[email protected]/* */ tar]# tar -zxvf apache-maven-3.5.0-bin.tar.gz -C /opt2、重命名[[email pro

Linux 技巧讓進程在後臺可靠執行的幾種方法

stl 選項 con 中斷 program ng- dem 不同 正在 我們常常會碰到這種問題。用 telnet/ssh 登錄了遠程的 Linux server,執行了一些耗時較長的任務, 結果卻因為網絡的不穩定導致任務中途失敗。怎樣讓命令提交後不受本地關閉終端