如何知道 Linux 中某个设备是否正在使用

如何知道 Linux 中某个设备是否正在使用

我使用多种方式移动大量数据(命令、后台程序、nautilus),有时这些程序会通知我进程结束,但我看到设备的 LED 闪烁,我需要知道设备是否仍在使用中才能将其移除。是否有 shell 命令可以知道设备是否正在传输数据并显示此信息?

答案1

你应该卸载设备后再移除(通过命令或 GUI 无关umount)。如果仍有数据正在传输 - 卸载将暂停,直到所有传输完成(如果无法在某个时间范围内卸载,GUI 可能会给出一些错误)。

您还可以使用:

  • sync(可能几次)刷新未写入的数据(然后卸载);
  • df检查您要移除的设备是否已被卸载。

PS:umount如果某个程序仍然打开了此设备中的某个文件/文件夹(通常是某个 shell,但您可以尝试用 找到它lsof),则会显示“设备忙”。

答案2

iostat是跟踪磁盘流量的最简单方法。只需运行iostat<间隔(秒)> 它会显示每个设备上的活动。它的第一个输出是自启动以来的活动,因此至少要等待第二个输出。

 [admin@centos6 ~]$ iostat 30
 Linux 2.6.32-358.0.1.el6.x86_64 (centos6)  20/09/14    _x86_64_    (1 CPU)

 avg-cpu:  %user   %nice %system %iowait  %steal   %idle
            6.92    0.01    0.41    0.42    0.00   92.24

 Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
 sda               2.64        48.41       247.81    5396088   27622750
 dm-0              1.67        42.88         1.44    4779498     161072
 dm-1              0.05         0.05         0.35       5840      39104
 dm-2             29.65         3.31       236.22     368442   26330928
 dm-3              0.16         0.04         1.28       4610     142128
 dm-4              1.08         0.43         8.51      48194     949032

 avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           94.60    0.00    3.96    1.44    0.00    0.00

 Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
 sda              14.12       122.78      2437.28       3504      69560
 dm-0            241.00       118.01      1901.61       3368      54272
 dm-1             59.88         0.00       479.05          0      13672
 dm-2              0.14         1.12         0.00         32          0
 dm-3              0.18         0.00         1.40          0         40
 dm-4              7.32         3.08        55.22         88       1576

 ^C
 [admin@centos6 ~]$ 

如果你想跟踪哪些进程正在写入哪个磁盘,你需要系统水龙头。Red Hat 网站有一个很好的例子

相关内容