CentOS系统的ECS实例重启后无法远程登录

问题描述

ECS实例重启后,网络不通,无法远程登录。

问题原因

ECS实例的/etc/init.d/functions文件丢失。

解决方案

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
  1. 登录ECS实例,详情请参见通过VNC远程登录实例,执行如下命令,查看网卡状态。
    说明:不同版本的CentOS实例查看服务状态的命令不同。
    systemctl status network.service
    系统显示类似如下,确认网卡没有启动。
  2. 执行如下命令,启动网卡。

    service network restart /etc/sysconfig/network-scripts/

    系统显示类似如下。

    /sbin/service: line 3:  /etc/init.d/functions:  No such file or directary
  3. 将正常ECS实例的/etc/init.d/functions文件拷贝到问题ECS实例,重启网卡。

    说明:可以通过“挂载历史快照创建的按量付费磁盘”的方式,来拷贝文件。

更多信息

functions脚本文件是给/etc/init.d中的文件使用。提供了一些基础的功能,设置umask、PATH、语言环境,还会设置success、failure、warning、normal几种情况下的字体颜色。functions脚本文件提供了一些重要方法,如下所示:

  • checkpid:通过查看/proc目录,检查是否存在PID,如果至少有一个存在,返回0。
  • daemon:启动某个服务,/etc/init.d目录部分脚本的start会使用。
  • killproc:杀死某个进程,/etc/init.d目录部分脚本的stop会使用。
  • pidfileofproc:寻找某个进程的PID。
  • pidofproc:类似pidfileofproc方法,只是还多了pidof命令的作用。
  • status:返回一个服务的状态。
  • echo_success、echo_failure、echo_passed、echo_warning:分别输出各类信息。
  • success、failure、passed、warning:分别记录日志并调用相应的方法 。
  • action:打印某个信息并执行指定的命令,会根据命令执行的结果来调用success和failure方法。
  • strstr:判断$1是否含有$2。
  • confirm:显示“Start service $1 (Y)es/(N)o/(C)ontinue? [Y]”提示信息,并返回选择结果。

适用于

  • 云服务器ECS