Chinaunix首页 | 论坛 | 博客
  • 博客访问: 383230
  • 博文数量: 82
  • 博客积分: 1855
  • 博客等级: 上尉
  • 技术积分: 846
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-12 12:28
文章存档

2013年(3)

2012年(8)

2011年(71)

分类: LINUX

2011-11-05 23:18:53

Linux文件系统损坏后的修复技巧详细介绍
Linux不正常关机,有时候再次启动时会报文件系统损坏,如何修复文件?

首先会让你输入root用户的密码。

1)出错的时候如果告诉你是哪一块硬盘的分区有问题,比如是/dev/hda3

接着用如下的命令去对付它呀:

#fsck -y /dev/hda3

结束后,reboot。这样就OK了!

2)如果你不知道时哪个地方出了问题。(常用此种方法)

可以直接

#fsck

在随后的多个确认对话框中输入:y

结束后,reboot。就ok了。

说明: 对Linux系统中常用文件系统的检查是通过fsck工具来完成的。

功能说明:检查文件系统并尝试修复错误。

语  法:fsck [-aANPrRsTV][-t <文件系统类型>][文件系统...]

补充说明:当文件系统发生错误四化,可用fsck指令尝试加以修复。

参  数:

-a 自动修复文件系统,不询问任何问题。

-A 依照/etc/fstab配置文件的内容,检查文件内所列的全部文件系统。

-N 不执行指令,仅列出实际执行会进行的动作。

-P 当搭配"-A"参数使用时,则会同时检查所有的文件系统。

-r 采用互动模式,在执行修复时询问问题,让用户得以确认并决定处理方式。

-R 当搭配"-A"参数使用时,则会略过/目录的文件系统不予检查。

-s 依序执行检查作业,而非同时执行。

-t<文件系统类型>指定要检查的文件系统类型。

-T 执行fsck指令时,不显示标题信息。

-V 显示指令执行过程。

用fsck检查文件系统完整性文件系统很复杂,因此易于发生错误。可以用fsck 命令检查文件系统是否正确和有效。它可以根据指令修复找到的小错误,并将未修复错误报告用户。幸运的是,文件系统的代码非常有效,所以根本极少出现问题,并且问题通常原因是电源失败、硬件失败、或操作错误,例如没有正常关闭系统。 大多数系统设置为启动时自动运行fsck ,因此任何错误将在系统使用前被检测到(并根据希望修正)。使用有错误的文件系统可能使问题变得更坏:如果数据结构有问题,使用这个文件系统可能使之更糟,导致更多的数据丢失。当然,在大的文件系统上运行fsck 会花一定的时间,如果系统正常关闭,几乎从不发生错误,因此有一些方法可以不进行检查。如果文件/etc/fastboot 存在,就不检查。另外,如果ext2文件系统在超级快中有一个特定的标记告知该文件系统在上次mount后没有正常unmount. 如果标记指出unmount正常完成(假设正常unmount指出没问题),e2fsck (fsck 的ext2文件系统版) 就不检查系统。/etc/fastboot 是否影响系统依赖于你的启动手稿,但ext2标记则在你使用e2fsck 时发生作用--基于一个e2fsck 选项(参阅e2fsck 手册页) 自动检查只对启动时自动mount的文件系统发生作用。使用fsck 手工检查其他文件系统,比如软盘。 如果fsck 发现为修复的问题,你需要深入了解文件系统的一般工作原理和有问题的文件系统的细节,或好的备份。最后一个办法容易(虽然冗长)安排,如果你自己不知道,有时可以通过朋友、linux新闻组、电子邮件列表或其他支持源安排。我很想告诉你更多,但我对这的学习和实践也并不多。

theodore tso的debugfs 程序应该有用。 fsck 只能运行于未mount的文件系统,不要用于已mount的文件系统(除了启动时的只读根文件系统)。这是因为它存取原始磁盘,在操作系统不知道的情况下修改文件系统。 there will be trouble, if the operating system is confused.
 
 
ubuntu man命令彩色高亮显示
 
ubuntu使用man的时候默认是黑底灰字的,不知道其他发行版本是不是这样。但是可以手动设置一下,让其也彩色高亮显示,做法如下:
在~/.bashrc中加入如下代码:
export LESS_TERMCAP_mb=$'\E[01;31m'
export LESS_TERMCAP_md=$'\E[01;31m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_se=$'\E[0m'
export LESS_TERMCAP_so=$'\E[01;44;33m'
export LESS_TERMCAP_ue=$'\E[0m'
export LESS_TERMCAP_us=$'\E[01;32m'
source .bashrc 直接生效
重启启动终端即可。
 
完善ubuntu的man手册
manpages-zh    中文的手册帮助页面
manpages-posix-dev ( Manual pages about using a POSIX system for development)
manpages-posix   
manpages-dev        
manpages man
1.添加库函数手册
ubuntu默认是没有安装c语言的库函数man手册的,所以你在man perror 和sendto之类的函数时会显示没有相关文档的问题,这个问题让我郁闷了我好久。解决方法:
sudo apt-get install manpages-dev
2.让man显示中文
ubuntu源里面已经包含了中文的man包,所以不用从其他地方down了,直接
sudo apt-get install manpages-zh
但是这样man默认显示的还不是中文,还需要以下两步
a.把中文man包转换成utf8格式的
新建一个脚本文件
gedit t.sh
把下面内容添加进去
#!/bin/bashcd /usr/share/man/zh_CN/for k in *docd $kfor i in *.gzdo j=`echo ${i%.gz}` gunzip $i iconv -f gb18030 -t utf8 $j >tmp mv tmp $j gzip $jdonecd ..done
然后
sudo ./t
b.修改man默认的语言
sudo gedit /etc/manpath.config 把里面的所有的 /usr/share/man 改成 /usr/share/man/zh_CN
保存后退出,然后你再试一下man ls
3.让没有中文帮助的显示英文
做完上面第二部还不够,这时你再man 一下一些c语言函数(不要用printf,socket之类比较有名的函数,这些已经有中文帮助了)的时候就会发现竟然没有帮助,而刚才明明在第一步已经安装了啊。这是因为你上面 把/usr/share/man 改成 /usr/share/man/zh_CN的操作使man只在中文帮助中搜索,如果没有就直接放弃,因此还需要以下操作,才能让man在没有中文帮助的时候自动显示英文的帮助,如果英文的也没有,哪就真的没有了。
sudo gedit /etc/manpath.config
然后搜索你刚才改过的地方,然后在其后面添加同样的一行,只是后面的目录还用原来的/usr/share/man,比如在修改后的
MANPATH_MAP /bin          /usr/share/man/zh_CN
再添加一行
MANPATH_MAP /bin          /usr/share/man
 
修改MAC地址
 
sudo ifconfig eth0 down
sudo ifconfig eth0 hw ether 00:00:00:00:00:00
sudo ifconfig eth0 up
sudo gedit /etc/network/interfaces
auto eth0
iface eth0 inet static
address 219.218.122.168
netmask  255.255.255.0
gateway  219.218.122.254
默认
auto lo
iface lo inet loopback
DNS sudo gedit /etc/resolv.conf
nameserver 202.194.15.12
sudo /etc/init.d/networking restart
阅读(1255) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~