有时,Linux 内核不知道外部 USB 存储设备的驱动器写入缓存。在这种情况下是否有必要在分离这些设备之前显式刷新这些缓存?
我使用 WD Elements 外置 USB 硬盘,上面hdparm -I写着
...
Commands/features:
Enabled Supported:
...
* Write cache
...
Run Code Online (Sandbox Code Playgroud)
和hdparm -W:
...
write-caching = 1 (on)
Run Code Online (Sandbox Code Playgroud)
另一方面,当我插入驱动器时,我收到以下内核消息:
... No Caching mode page found
... Assuming drive cache: write through
Run Code Online (Sandbox Code Playgroud)
根据Kyle Jones 的这个回答,这些内核消息表明内核假设它的写操作将直接进入盘片。
Linux 内核文档中的文件Documentation/block/queue-sysfs.txt 的“write_cache (RW)”部分描述了内核假设通过缓存写入模式的含义(感谢Wayne Conrad):
...“直写”,...还将消除内核发出的缓存刷新。
到目前为止,我从 Linux 系统分离外部 USB 存储设备的标准方法是卸载它上所有已安装的分区,等到驱动器的 LED 停止闪烁,物理拔下 USB 连接器,如果这不会关闭电源设备(有些具有单独的电源),以明确关闭电源。
这种方法是否安全,或者它是否意味着在驱动器写入缓存中丢失未刷新数据的风险,特别是如果内核不知道该缓存?
在后一种情况下,似乎建议在卸载后通过发送 SCSI 同步命令显式刷新驱动器上的写入缓存。例如sg_sync,可以使用 sg3-utils 附带的 which来完成: …
所以我们都diff默认安装了命令。我当然不知道如何很好地使用它。但我希望有一些合理的默认用法。但是当我打字时,diff file1 file2我得到了……一个文本……我必须在脑子里解析……这无济于事,因为这是两个文本的奇怪组合,而这两个文本本身又非常复杂。
所以我寻找了一个图形解决方案,例如meld. 开箱即用的效果要好得多。
然而,我更愿意一直保持在命令行上。是否有一个相当标准的命令:
libncursesvim,emacs也不依赖于IDE如果没有,为什么不呢?我看了看,colordiff但它并没有完全削减它。
有时,软件包会显示安装后消息。如何在 Debian 系统上为给定的软件包重播此消息?
与 FreeBSD 相比:pkg info -D PACKAGE
与 MacPorts 相比:port notes PACKAGE
什么是 Debian 等价物?
command-line ×2
cache ×1
debian ×1
diff ×1
linux ×1
merge ×1
ncurses ×1
programming ×1
unmounting ×1
usb ×1