QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2885|回复: 9

紧急求救:由于/dev/null问题导致的系统无法登陆。

[复制链接]
发表于 2006-5-7 20:44:42 | 显示全部楼层 |阅读模式
我今天利用root执行了这样一个命令:mv zxh.jpg /dev/null,以为它的功能是把zxh.jpg文件给删除,可是重新启动系统后,系统无法登陆。请问是怎么回事?紧急求救,非常谢谢!!

根据系统提示输入root密码进入修复模式后,想改变/dev/null的属性和所有权限,删除/dev/null都提示“read-only file system”而无法进行所有这些操作,真不该测试那个命令的呀!!
 楼主| 发表于 2006-5-7 21:01:46 | 显示全部楼层
找到解救办法了,进入修复模式后,运行如下三条命令即可:

mount -n -o remount,rw /dev/hda(according to your boot partition)
rm /dev/null
mknod -m 666 /dev/null c 1 3

如还有谁遇到这个问题,可注意了。
回复

使用道具 举报

发表于 2006-5-7 21:51:19 | 显示全部楼层

Re: 紧急求救:由于/dev/null问题导致的系统无法登

我今天利用root执行了这样一个命令:move zxh.jpg /dev/null,以为它的功能是把zxh.jpg文件给删除,可是重新启动系统后,系统无法登陆。

哈哈,楼主是用zxh.jpg把/dev/null替换掉了。
回复

使用道具 举报

 楼主| 发表于 2006-5-8 08:16:45 | 显示全部楼层

Re: 紧急求救:由于/dev/null问题导致的系统无法登

[quote:b88d908986="hohoxu_hao115"]
哈哈,楼主是用zxh.jpg把/dev/null替换掉了。[/quote]

为什么在root下运行这个命令就是替换了呢,我在网上看到说/dev/null就是无底洞,运行那个命令的功能就相当于删除那个文件,却造成了系统无法启动。

请问有谁有没有关于/dev/null的全面的介绍?

另外,尽管运行上面三个命令解决了问题,但还是不知道第一条命令的意思是什么?为什么运行了第一个命令后就可以删除/dev/null了,没运行它却不可以?
回复

使用道具 举报

发表于 2006-5-8 08:29:45 | 显示全部楼层
第一条命令是重新挂载了一遍,而且在挂载的时候设置了读写权限
回复

使用道具 举报

发表于 2006-5-8 08:49:24 | 显示全部楼层
当对/dev/null写入时,它就是个黑洞。/dev/null也是一个文件,只不过是个字符设备文件,执行mv命令自然是将其替换掉了。
回复

使用道具 举报

发表于 2006-5-8 19:03:08 | 显示全部楼层

Re: 紧急求救:由于/dev/null问题导致的系统无法登

[quote:b462afd288="xhxy"][quote:b462afd288="hohoxu_hao115"]
哈哈,楼主是用zxh.jpg把/dev/null替换掉了。[/quote]

为什么在root下运行这个命令就是替换了呢,我在网上看到说/dev/null就是无底洞,运行那个命令的功能就相当于删除那个文件,却造成了系统无法启动。

请问有谁有没有关于/dev/null的全面的介绍?

另外,尽管运行上面三个命令解决了问题,但还是不知道第一条命令的意思是什么?为什么运行了第一个命令后就可以删除/dev/null了,没运行它却不可以?[/quote]

所谓“无底洞”是指输入输出数据流而言,是你要传递给它数据,而不是对其自身进行操作。“无底洞”这三个字具有多么大的误导性呀!

我想起一个有趣的现象,学 DOS 的时候,初学者常常在设置了 PATH 变量后,尝试在其它位置删除一个特定位置上的文件却不带完整路径,结果因为找不到文件而无法删除,非常困惑。
回复

使用道具 举报

 楼主| 发表于 2006-5-10 08:40:52 | 显示全部楼层

Re: 紧急求救:由于/dev/null问题导致的系统无法登

[quote:e92d86faf3="KDE"]

所谓“无底洞”是指输入输出数据流而言,是你要传递给它数据,而不是对其自身进行操作。“无底洞”这三个字具有多么大的误导性呀!

我想起一个有趣的现象,学 DOS 的时候,初学者常常在设置了 PATH 变量后,尝试在其它位置删除一个特定位置上的文件却不带完整路径,结果因为找不到文件而无法删除,非常困惑。[/quote]

这个例子很有意思。不过没完全弄明白什么叫对它输出数据,什么叫改变它的属性。mv,cp,vi都是改变它的属性?既然一经改变就会导致系统无法启动的,那为什么还允许对其属性进行修改?
回复

使用道具 举报

发表于 2006-5-10 11:06:20 | 显示全部楼层
呵呵,所以呢,平时不要用root用户,普通用户的话,执行这个命令应该不是这样的。

unix下设备都看成文件。/dev/null在DOS下实际上也有,就叫NUL,在XP上仍然有,你可以把这个设备看成和打印机、屏幕一样的设备,这样你可以给这个设备发送数据,而你给打印机发送数据会打印,给屏幕发送数据会显示,给它发送数据就什么也没有,什么也不做,相当于把数据扔了。所以如果你想向它扔数据呢,你需要发送数据,发送数据一般采取管道命令,就是>,>>或|,比如说你显示一个文件的内容,可以用cat foo,这样是在屏幕上显示,而如果cat foo > /dev/null,就会把显示的数据发送到/dev/null设备,也就是本来在屏幕上有,而现在屏幕上没有了。送到/dev/null里了。

因为linux下所有的设备都当做文件,所以/dev/null也同时是一个文件,和其它的文件一样,可以被覆盖,mv a b,是把a移动到b,利用/dev/null是不能删除文件的,只能把输出的数据扔掉而已。而文件是放在硬盘上的,必须得用rm才可以的。
回复

使用道具 举报

 楼主| 发表于 2006-5-11 08:38:16 | 显示全部楼层
[quote:db6f5ed8be="sejishikong"]呵呵,所以呢,平时不要用root用户,普通用户的话,执行这个命令应该不是这样的。

unix下设备都看成文件。/dev/null在DOS下实际上也有,就叫NUL,在XP上仍然有,你可以把这个设备看成和打印机、屏幕一样的设备,这样你可以给这个设备发送数据,而你给打印机发送数据会打印,给屏幕发送数据会显示,给它发送数据就什么也没有,什么也不做,相当于把数据扔了。所以如果你想向它扔数据呢,你需要发送数据,发送数据一般采取管道命令,就是>,>>或|,比如说你显示一个文件的内容,可以用cat foo,这样是在屏幕上显示,而如果cat foo > /dev/null,就会把显示的数据发送到/dev/null设备,也就是本来在屏幕上有,而现在屏幕上没有了。送到/dev/null里了。

因为linux下所有的设备都当做文件,所以/dev/null也同时是一个文件,和其它的文件一样,可以被覆盖,mv a b,是把a移动到b,利用/dev/null是不能删除文件的,只能把输出的数据扔掉而已。而文件是放在硬盘上的,必须得用rm才可以的。[/quote]

讲的非常清楚,现在完全明白了:-)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-24 22:04 , Processed in 0.113614 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表