Linux 常见紧急情况处理方法
使用急救盘组进行维护
急救盘组(也称为 boot/root 盘组),是系统管理员必不可少的工具。用它可以独立地启动和运行一个完整的 Linux 系统。实际上,急救盘组中的第 2 张盘上就有一个完整的 Linux 系统,包括 root 文件系统;而第 1 张盘则存放了可启动的内核。
使用急救盘组维护系统很简单。只需用这两张盘启动系统后,进入急救模式,这时使用的是 root 账户。为了能访问硬盘上的文件,需要手工安装硬盘文件系统。例如,用下面的命令可在 / mnt 目录中安装 /dev/hda2 盘上的 ext2fs 类型的 Linux 文件系统:
# monut -t ext2/dev/hda2/mnt 注:现在根目录是急救盘上的根目录。为了访问硬盘文件系统中的文件,必须先把它安装到某个目录下。这样,如果将硬盘上文件系统安装在 / mmt 目录下,则硬盘上原来的 / etc/passwd 文件的路径就是 /mnt/etc/passwd。文件系统被破坏时的处理方法
当文件系统被破坏时,如果使用的是 ext2fs 类型的文件系统,就可从软盘运 e2fsck 命令来修正文件系统中被损坏的数据。对于其他类型的文件系统,可以使用相应的 fsck 命令。
当从软盘上检查文件系统时,最好不要 mount 安装。注:文件系统被破坏的常见原因是超级块被损坏,超级块是文件系统的 “头部”。它包含文件系统的状态、尺寸和空闲磁盘块等信息。如果损坏了一个文件系统的超级块(例如不小心直接将数据写到了文件系统的超级块分区中),那么系统可能会完全不识别该文件系统,这样也就不能安装它了,即使采用 e2fsck 命令也不能处理这个问题。 不过,ext2fs 类型的文件系统将超级块的内容进行了备份,并存放于驱动程序的块组(block group)边界。可以用如下的命令通知 e2fsck 使用超级块的备份 # e2fsck -b 8193
是指文件系统所在的分区,-b 8193 选项用于显示使用存放在文件系统中的 8193 块的超级块的备份数据。
恢复丢失的文件
如果不小心删除了重要的文件,那么没有办法直接恢复。但是还可以将相应的文件从急救盘复制到硬盘上。例如,如果删除了文件 / bin/login,此时系统无法正常进到登录界面,可以用急救盘组启动系统,将硬盘文件系统安装到 / mnt 目录下,然后使用下述命令:
#cp -a /bin/login /mnt/bin
“-a” 选项用于告诉 cp 在拷贝时保持文件的访问权限。当然如果被删除的基本文件不在 “急救盘组” 中, 也就不能用这种方法了。如果以前做过系统备份的话,那么也可以用以前的备份来恢复。
函数库破坏时的处理方法如果不小心将系统函数库文件破坏了,或者破坏了 / lib 目录下符号链接,那么将导致依赖这些库的命令无法执行。最简单的解决办法是用急救盘组启动系统, 在 / mnt 目录中安装硬盘文件系统,然后修复 / mnt/lib 目录下的库。
无法用 root 账号登录系统由于系统管理员的疏忽,或者由于系统受到黑客的入侵, 系统管理员可能无法用 root 帐号登录系统。 对于第 1 种情况,可能是系统管理员忘记了 root 密码,用急救盘组就可以解决问题。
对于第 2 种情况,由于很可能是密码被黑客修改了,因此系统管理员无法进入系统,也就是说,Linux 系统完全失去了控制,因此应尽快重新获得系统的控制权。在取得 root 权限后,还应检查系统被破坏的情况,以防被黑客再次入侵。 需要做的最主要的工作就是重新设置 root 的密码,获得 Linux 操作系统的控制权。首先用急救盘组启动系统,然后将硬盘的文件系统安装到 / mnt 目录下,编辑 / mnt/etc/passwd 文件,将其对应于 root 账户的一行加密口令域置空,如下所示:
root::0:0:root:/root:bin/bash 注:如果系统使用 shadow 工具,就需要对文件 / etc/shadow 进行上述的操作,使 root 登录系统不需要口令。 这样,root 账户就没有口令了。当重新从硬盘启动 Linux 系统时,就可以用 root 账户登录(系统不会要求输入密码)。进入系统后,再用命令 passwd 设置新的口令。
Linux 系统不能启动
一般来说,如果系统管理员不能正常进入系统,就需要考虑使用急救盘组进入急救模式排除系统的故障。但在没有制作急救盘组的情况下,Linux 系统不能启动,该怎么办?
在个人计算机使用 Linux 系统时,通常都是 Linux 和 MS Windows 9x 或 MS Windows NT 并存的。
由于重新安装其他的操作系统,经常会导致原有的 Linux 不能启动。这主要是因为,这些操作系统默认为计算机中没有其他的操作系统,因而改写了硬盘的主引导记录(MBR),冲掉了 Linux 的 LILO 系统引导程序。 如果有急救盘组,那么很简单,用第一张启动盘启动硬盘的 Linux 系统,重新运行 LILO 命令,就可以将 LILO 系统引导程序写回硬盘的主引导记录。再次开机即可。
如果没有系统启动盘,怎样恢复硬盘上的 Linux 呢?在这种情况下,如果知道 Linux 在硬盘上的确切安装分区,且有 loadlin 程序,就可以重新返回 Linux。loadlin 程序是 DOS 下的程序,运行它可以从 DOS 下直接启动 Linux,快速进入 Linux 环境。在 Red Hat Linux 6.0 光盘的 dosutil / 目录下就有这个程序。除此之外,还需要一个 Linux 启动内核的映像文件。在 Red H at linux 6.0 光盘的 images / 目录下有这个文件——vmlinuz。
例如,在 Windows 98 系统下面,进入 DOS 的单用户模式,然后运行下述的 loadlin 命令,即可重新进入 Linux 系统:
loadlin vmlinuz root=/dev/hda8
/dev/hda8 是 Linux 的 root 文件系统所在的硬盘分区位置。命令执行后,就引导 Linux 系统。用 root 登录后,运行 LILO 命令,则重新将 LILO 装入 MBR,回到以前多操作系统并存使用的状态。
Linux 常见紧急情况处理方法的更多相关文章
- Linux - 常见Shell文本处理方法
Common Shell Text Processing 珠玉在前,不再赘言. Linux Shell 文本处理工具集锦:http://blog.jobbole.com/99063/ 数据工程师常用的 ...
- centos linux 系统日常管理4 scp,rsync,md5sum,sha1sum,strace ,find Rsync 常见错误及解决方法 第十七节课
centos linux 系统日常管理4 scp,rsync,md5sum,sha1sum,strace ,find Rsync 常见错误及解决方法 第十七节课 rsync可以增量同步,scp不行 ...
- Linux 常见安全检查方法
Linux 常见安全检查方法进行概要说明: 一.检查系统密码文件,查看文件修改日期 # ls -l /etc/passwd 二.查看 passwd 文件中有哪些特权用户 # awk -F: '$3= ...
- Linux常见疑难问答
Linux常见疑难问答 (1)按a~z顺序排列启动服务进程. #exportLC_ALL=C #英文环境变量设置,主要用于解决乱码问题 #chkconfig –list | gre ...
- 【转】linux shell实现随机数多种方法(date,random,uuid)
在日常生活中,随机数实际上经常遇到,想丢骰子,抓阄,还有抽签.呵呵,非常简单就可以实现.那么在做程序设计,真的要通过自己程序设计出随机数那还真的不简单了.现在很多都是操作系统内核会提供相应的api,这 ...
- Linux 常见的trouble shooting故障排错
Linux 常见的trouble shooting故障排错 备份开机所必须运行的程序对一个运维人员来说是非常有必要的.在实际生产环境中,系统和数据基本都是安装在不同的硬盘上面,因为企业最关心的还是数据 ...
- 嵌入式Linux开发教程:Linux常见命令(上篇)
摘要:这是对周立功编著的<嵌入式Linux开发教程>的第7期连载.本期刊载内容有关LinuxLinux常见命令中的导航命令.目录命令和文件命令.下一期将连载网络操作命令.安装卸载文件系统等 ...
- Linux常见系统故障
Linux常见系统故障 1.修复MBR扇区故障 2.修复GRUB引导故障 3./etc/inittab文件丢失 4.遗忘root用户密码 5.修复文件系统 6.磁盘资源耗尽故障 一.修复MBR扇区故障 ...
- MySQL常见错误分析与解决方法总结
MySQL常见错误分析与解决方法总结 一.Can't connect to MySQL server on 'localhost' (10061)翻译:不能连接到 localhost 上的mysql分 ...
随机推荐
- MVC5为WebAPI添加命名空间的支持1
前言 默认情况下,微软提供的MVC框架模板中,WebAPI路由是不支持Namespace参数的.这导致一些比较大型的项目,无法把WebApi分离到单独的类库中. 本文将提供解决该问题的方案. 微软官方 ...
- docker build 指定dockerfile
1. Dockerfile文件使用 docker build命令会根据Dockerfile文件及上下文构建新Docker镜像.构建上下文是指Dockerfile所在的本地路径或一个URL(Git仓库地 ...
- ios中开始页面做法
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launc ...
- db_table--Spring Security3.1 最新配置实例
2011-04-28 这几天学习了一下Spring Security3.1,从官网下载了Spring Security3.1版本进行练习,经过多次尝试才摸清了其中的一些原理.本人不才,希望能帮助大家. ...
- 键盘录入, if语句
1.运算符 (1).算数运算符 A:+ - * / % ++ -- 注意:%运算符号取决于被摸数. ++ --的两种用法:1.单独使用 ,都 ...
- kafaka可视化工具
许多中间件系统都提供了良好的可视化系统.MySQL有workbench,navcat,php版的mysqladmin等可视化程序.Redis.MongoDB也有开源的可视化程序.只要官方提供了探索数据 ...
- Python学习笔记(九)—— 函数
一.函数调用: 1.python内部函数查询:http://docs.python.org/3/library/functions.html#abs 2.注意调用函数的参数个数和类型. 3.函数名其实 ...
- POJ 1862 Stripies (哈夫曼树)
Stripies Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 10263 Accepted: 4971 Descrip ...
- 在Linux上yum安装运行Redis,只能安装2.4.10(主从)
Installing Redis on CentOS 6.4 First, install the epel repo sudo rpm -Uvh http://download.fedoraproj ...
- 为什么 c = tf.matmul(a, b) 不立即执行矩阵乘法?
在 TensorFlow Python API 中,a.b 和 c 是 tf.Tensor 对象.Tensor 对象是指令结果的符号句柄,但它实际上并不存放指令的输出值.相反,TensorFlow ...