xhxy 发表于 2006-5-7 20:44:42

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

我今天利用root执行了这样一个命令:mv zxh.jpg /dev/null,以为它的功能是把zxh.jpg文件给删除,可是重新启动系统后,系统无法登陆。请问是怎么回事?紧急求救,非常谢谢!!

根据系统提示输入root密码进入修复模式后,想改变/dev/null的属性和所有权限,删除/dev/null都提示“read-only file system”而无法进行所有这些操作,真不该测试那个命令的呀!!

xhxy 发表于 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

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

hohoxu_hao115 发表于 2006-5-7 21:51:19

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

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

xhxy 发表于 2006-5-8 08:16:45

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


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

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

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

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

guazi111 发表于 2006-5-8 08:29:45

第一条命令是重新挂载了一遍,而且在挂载的时候设置了读写权限

hohoxu_hao115 发表于 2006-5-8 08:49:24

当对/dev/null写入时,它就是个黑洞。/dev/null也是一个文件,只不过是个字符设备文件,执行mv命令自然是将其替换掉了。

KDE 发表于 2006-5-8 19:03:08

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


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

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

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

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

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

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

xhxy 发表于 2006-5-10 08:40:52

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



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

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

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

sejishikong 发表于 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才可以的。

xhxy 发表于 2006-5-11 08:38:16

呵呵,所以呢,平时不要用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才可以的。

讲的非常清楚,现在完全明白了:-)
页: [1]
查看完整版本: 紧急求救:由于/dev/null问题导致的系统无法登陆。