分类:
2008-05-11 22:17:51
telnetd: /bin/login: A file descrīptor does not refer to an open file.
.
这个错误提示很奇怪,网上都搜不到先例。幸好连上显示器,机器可以登录。后查明是root用户在/下执行了rm *,所以/bin(一个link)没有了,telnet时就报上面的错误。
知道原因,解决起来就很容易。ln -s /usr/bin bin之后,回到办公位置上telnet过来,因为还有些事情没做。
在网上找了一篇“在根目录(/)下执行了rm *,如何恢复系统”的文章,其中提到:
4.重建删除的文件和目录
#cd /mnt
#ln -s /usr/bin bin
#ln -s /usr/lib/boot/unix_up unix 或 #ln -s /usr/lib/boot/unix_mp unix
#ln -s /usr/lib lib
#ln -s /home u
文中“#ln -s /usr/lib/boot/unix_up unix 或 #ln -s /usr/lib/boot/unix_mp unix”这行有点问题,大概作者写文章时还没有64位内核的操作系统吧。
prtconf可以查明我的系统内核是64位,所以不能照搬原文。最终我改成这样:
myaix#/> prtconf |grep Kernel
Kernel Type: 64-bit
You have mail in /usr/spool/mail/root
myaix#/> ls -l |grep ^l
lrwxrwxrwx 1 root system 8 Nov 15 11:55 bin@ -> /usr/bin/
lrwxrwxrwx 1 root system 8 Nov 15 12:05 lib@ -> /usr/lib/
lrwxrwxrwx 1 root system 5 Nov 15 12:06 u@ -> /home/
lrwxrwxrwx 1 root system 21 Nov 15 12:12 unix@ -> /usr/lib/boot/unix_64*
myaix#/>
三者的区别如下:
/unix -> /usr/lib/boot/unix_up # 32 bit uniprocessor kernel
/unix -> /usr/lib/boot/unix_mp # 32 bit multiprocessor kernel
/unix -> /usr/lib/boot/unix_64 # 64 bit multiprocessor kernel