排查服务器启动失败故障

2020-12-30 07:00河南刘建臣
网络安全和信息化 2020年1期
关键词:命令界面启动

河南 刘建臣

某单位的一台服务器使用的是CentOS 6.X 系统,最近出现了无法启动的故障,原因是该机上的某个服务无法正常启动,技术员采取重新启动的方式,试图恢复该机的正常运行。但是,该机却出现了无法启动的问题。

因为该机安装了OpenSSH 服务,笔者直接从客户机上执行“ssh root@xx.x.x”命令,想从远程连接该机进行检测。但是连接无法进行,使用ping 命令,对该机进行探测,发现该机没有任何响应。

笔者到机房直接开启该机,发现屏幕出现了“/bin/chown:incalid user:'root:Ip'”,“invalid user:'rot:root '”之类的提示。

故障排查

根据以上信息,可以看到该机是因为无效的Root 用户引发的。Root 用户是系统的管理员,该用户如果出现问题,自然无法进行远程访问。

笔者重新开始开机,当系统启动到Grub 引导界面时,点击ESC 键,出现引导项目。选择当前系统使用的引导内核选项,在编辑状态中点击上下箭头键,选择以“Kernel”开头的项目,点击“e”键,在其编辑栏尾部添加空格,输入“single”,点击回车键保存修改。之后点击“b”键,让系统引导到单用户模式下,因为单用户模式只加载最基本的系统,便于进行维护操作。

但是,系统仍然“固执”的上述引导画面中,很显然无法进入单用户模式。无奈之下,只有使用CentOS 的镜像优盘或者光盘来引导了,这里使用光盘进行引导,在欢迎界面中选择“Rescue installed system”项,之后选择语言和键盘布局,并启动网络配置,在“Rescue”窗口中点击“Continue”按钮,之后按照提示选择“shell Start shell”项,进入拥有读写功能的修复环境下,因为在该模式下,分区实际上挂载到了“/mnt/sysimage”路径下。

然后执行“vi/mnt/sysimage/etc/password”命令,查看所有用户的属性信息,奇怪的是,其中找不到Root 账户的踪影。

继续执行“vi/mnt/sysimage/etc/shadow”命令,在Shadow 文件可以找到Root 账户信息,显示Root 用户处于永不过期状态。

根据以上信息,可以看到这其实是因为误操作,导致Root 用户信息丢失所引发的。

知道了原因,处理起来就简单了,无非是在上述“/mnt/sysimage/etc/password”文件中加入“root:x:0:0root:/root:/bin/bash”行,即可修复该文件。

故障解决

之后重启系统,原以为这下就万事大吉了,但是新的问题又出现了,系统虽然可以顺利引导,不再显示上述错误信息,但是在依次加载各服务时,却出现卡顿的情况,当系统启动了“Iptables”服务后就无法引导了,无法顺利启动。

反复启动均如此,既然无法直接启动,笔者只有重新进入上述修复环境,来查找具体原因。

对于Linux 来说,其启动时会先开机自检,之后依次执行MBR 引导,GRUB 菜单选择,加载系统内核,运行INIT进程,读取“/etc/inittab”配置文件,执行“/etc/rc.d/rc.sysinit”脚本,执行“/etc/rc.d/rc”脚本,启动mingetty 等进入登录界面等环节。对于INIT 内核进程来说,负责产生其他的进程和服务。这些服务会按照一定的顺序依次启动,如果其中某个服务出现问题,就很容易导致系统启动失败。

Linux 系统提供了7 种运行级别,常用的是第三种级别,即完全的的多用户状态,登录后进入控制台命令行界面,在“/etc/rc.d/rc.3d”目录下保存了一些符号链接文件,指向init.d 目录下的Service 脚本文件。

在修复环境下进入“/mnt/sysimage/etc/rc.d/rc.3d”目录,执行“ls -al”命令,来查看这些链接文件和其与特定服务的映射关系,发现在上述“IPtables”服务之后是Mysqld 服务,可能是因为Mysqld 出现了问题,无法正常跟随系统启动的原因。

执 行“chroot/mnt/sysimage”,“chkconfig--level 35 mysqld off”命令,禁止Mysld 服务开机自运行。之后重启系统,终于可以顺利进行了。

在客户机上运行“ssh root@x.x.x.x”命令,也可以顺利连接到本机。因为该机安装了MySQL,那么其为何无法启动呢?执行“service mysqld start”命令,出现“MySQL Daemon failed to start.Starting mysqld:[FAILED]”的错误提示。造成MySQL 无法启动。

为了便于查看错误日志,打开“my.cnf”文件,在其中添加“log-error=/usr/local/mysql/mysql-error.log”行,配置MySQL 的错误日志。

再次启动失败后,执行“tail -30/usr/local/mysql/mysql-error.log”命令,查看错误日志信息,发现MySQL 无法在“/tmp”目录中创建文件。执行“chmod -R 1777/tmp”命令,赋予其读写权限,之后执行“service mysqld start”命令,可以顺利启动MySQL。

猜你喜欢
命令界面启动
只听主人的命令
微重力下两相控温型储液器内气液界面仿真分析
国企党委前置研究的“四个界面”
安装和启动Docker
扁平化设计在手机界面中的发展趋势
《悦读·家》暨“悦读·家@万家”活动启动
移防命令下达后
解析Windows10的内部命令
电启动机的正确使用
西部最大规模云计算中心启动