Ank*_*wal 9 linux shell filesystems kernel dd
我正在将一个 550MB 的文件读入 /dev/null 并且我得到
dd: writing '/dev/null': No space left on device
Run Code Online (Sandbox Code Playgroud)
我很惊讶。我认为 /dev/null 是一个黑洞,您可以在其中随意发送(因为它是虚拟文件系统)。
是的,当我收到此错误时,我的磁盘几乎已满。除了从磁盘中删除内容之外,我还能做什么?
ls -l /dev/null
-rw-r--r-- 1 root root 0 July 7 21:58 /dev/null
Run Code Online (Sandbox Code Playgroud)
代替
crw-rw-rw- 1 root root 1, 3 July 7 02:58 /dev/null
Run Code Online (Sandbox Code Playgroud)
我正在使用的命令:
time sh -c "dd if=$filename of=/dev/null"
Run Code Online (Sandbox Code Playgroud)
Gil*_*il' 18
/dev/null是一个特殊的文件,类型为字符设备。该字符设备的驱动程序会忽略您尝试写入设备的任何内容,并且写入总是成功的。如果写入/dev/null失败,则意味着您以某种方式设法删除了正确的/dev/null文件并将其替换为常规文件。您可能不小心删除了/dev/null;然后下一个… >/dev/null会将其重新创建为常规文件。
运行ls -l /dev/null并检查该行是否类似于
crw-rw-rw- 1 root root 1, 3 Sep 13 2011 /dev/null
Run Code Online (Sandbox Code Playgroud)
它必须以crw-rw-rw-:开头,c用于字符设备,以及允许所有人读写的权限。该文件应该归 root 所有,尽管它不是很重要。所有者和组后面的两个数字标识设备(主设备号和次设备号)。上面我显示的是Linux下的数值;不同的 unix 变体有不同的值。日期通常是安装系统的日期或上次重新启动的日期,并不重要。
如果您需要重新创建文件,某些系统MAKEDEV会在 root 的 PATH 或/dev. 运行cd /dev; ./MAKEDEV std或类似的东西来重新创建标准的基本设备,例如/dev/null. 或者手动创建设备,提供正确的设备编号;在 Linux 上,那是
mknod -m 666 /dev/null c 1 3
Run Code Online (Sandbox Code Playgroud)