欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

马哥 17_02 _Linux系统故障排除 有大用

image.png

常见的系统故障排除:

1,确定问题的故障特征 (不能启动?某个命令无法正常执行?程序能够启动,但总是出现异常行为等)

2,重现故障(故障发生的可能性有哪些?人为的让故障再发生一次)

3,使用命令或工具收集进一步信息,以确定故障的真正根源

4,排除不可能的原因

5,定位故障:

    从简单的问题入手

    一次尝试一种方式 

原则

1,备份原文件

2,尽可能借助于工具


可能会出现的故障有:

1,管理员密码忘记        (进入单用户模式,直接改密码)

2,系统无法正常启动

    a,grub损坏了(MBR损坏,grub配置文件丢失,Stage2阶段的文件损坏)

    b,系统初始化故障(某文件系统无法正常挂载,驱动不兼容,系统时钟问题等)

            grub:编辑模式    进入1级别  emergency ( emergency  紧急情况) ,

                                      它是不会执行 rc.sysinit这个脚本的,所以但凡是rc.sysinit里面的问题,emergency 通通会略过它

                                      因此只要不加载这个脚本rc.sysinit,额外的工作不执行,那我们的系统就不会崩溃,此时进入系统后

                                      手动修复rc.sysinit,(一般先注释掉,系统启动之后再说)就可以了

            (如果文件系统无法正常挂载,(一般先注释掉rc.sysinit里面的相关内容,系统启动之后再说)

            (如果驱动不兼容,把装载的模块指令注释掉,在modprobe.conf或rc.sysinit)                                        

    c,服务故障也有可能会导致系统无法正常启动

    d,图形界面故障 (不重要,可以略过)

    e,用户无法登录系统(账号密码错了,bash程序故障)

3,命令无法运行,( 比如 export PATH=$PATH:/data/bin )(一不小心写成了 export PATH=/data/bin)

                (此时执行 ls 都执行不了了)

                (1,可以重新手动指定就可以了, export  PATH=/bin:/sbin/:.............)

                (2,只要修改不是改的配置文件,那么退出系统(关掉当前shell),重新登录就可以了(如果退出不了的话,就重新启动一个虚拟终端,重新登录就可以了))

                 (如果改了配置文件,重新登录也不行了,这个时候千万不能登出去(因为登出去的话,mingetty什么的都无法执行了,就无法再登录进来了),而是直接使用完整路径

/bin/ls /bin (/bin/ls /usr/bin)  (就可找到grub)

比如找到了 /usr/bin/vim 命令 (于是 /usr/bin/vim /etc/profile)(或者编辑其它文件) 这样就可以通过编辑来修复了

 PATH变量的损坏最多只是导致命令找不到,其实只需要使有绝对路径来尝试打开配置文件,编辑这个配置文件,然后重新登录即可



                

4,编译软件过程无法继续(开发环境缺少基本组件等)

            装上开发环境就可以了,装上去后未必能够正常编辑,一定要看编译最后所报的错误

(比如某一个头文件没有,某一个开发库没有),此时google 一下这个头文件或开发库,它就会告诉你这个头文件或开发库是由哪个rpm包提供的,或者是哪个项目提供的,此时只需要安装对应的rpm包即可


假如一不小心,把默认级别设定为0或6,

启动的时候传入一个参数,进行单用户模式(级别1),然后修改/etc/inittab 改为3即可

假如一不小心,删了 /etc/rc.d/rc3.d (或者/etc/rc.d/init.d)

当运行到3级别的时候,总是提醒 no more process in this level

仍然是启动的时候传入一个参数,进行单用户模式(级别1),尝试修复目录系统

假如某个服务故障了导致启动停止,怎么办?

     比如 sendmail,一旦系统时钟调整的时候,调整的不对的话,(往前调,或往后调),可能导致sendmail配置文件的时间戳检查无法通过

,一旦有这种错,就会发现sendmail服务卡在那儿了,无法进行下去了,

    有几种办法:

            1),重启启动系统,进行单用户模式(级别1),关了sendmail服务,在那个级别下,不让sendmail服务启动

            2),修复一下sendmail,修复一下sendmail配置文件的时间戳

            3),重启系统,看到 红色的 Red Hat 的时候 ,连续不断的按住 I 键,进入交互式模式,

一旦进入交互式模式,很麻烦,因为每一个服务都要问你要不要启动,因此,到了 sendmail这一项时,直接敲 I ,不启动即可

image.png


rc.local脚本语法错误或出现逻辑错误,怎么办?(进单用户模式,因为单用户不会启动rc.local服务)

[root@localhost rc.d]# pwd

/etc/rc.d

[root@localhost rc.d]# ls rc1.d/

K01dnsmasq         K15svnserve    K75netfs           K89iscsid

K01setroubleshoot  K20nfs         K80kdump           K89netplugd

K01smartd          K24irda        K85mdmonitor       K89pand

K02avahi-daemon    K25squid       K85mdmpd           K89rdisc

K02avahi-dnsconfd  K25sshd        K85messagebus      K90bluetooth

K02NetworkManager  K30sendmail    K85rpcgssd         K90network

K02rhsmcertd       K44rawdevices  K85rpcidmapd       K91capi

K03rhnsd           K50netconsole  K86nfslock         K91isdn

K03yum-updatesd    K50tux         K87irqbalance      K92ip6tables

K05anacron         K50xinetd      K87mcstrans        K92iptables

K05atd             K60crond       K87multipathd      K95firstboot

K05conman          K69rpcsvcgssd  K87portmap         K95kudzu

K05saslauthd       K72autofs      K87restorecond     K99microcode_ctl

K10cups            K73ypbind      K88auditd          K99readahead_early

K10dc_server       K74acpid       K88pcscd           K99readahead_later

K10psacct          K74apmd        K88syslog          K99vmware-tools

K10xfs             K74haldaemon   K88wpa_supplicant  S13cpuspeed

K12dc_client       K74ipmi        K89dund            S26lvm2-monitor

K15gpm             K74nscd        K89hidd            S99single

K15httpd           K74ntpd        K89iscsi

单用户模式下,只启动 S13cpuspeed  S26lvm2-monitor  S99single 这三个服务

所以说单用户模式下,基本不启动任何服务

[root@localhost rc.d]#

单用户模式下不会启动 rc.local服务,

所以在单用户模式,修复下 rc.local 文件就可以了







系统初始化过程

POST-->BIOS(启动设备顺序依次找其MBR中的bootloader)-->kernel(initrd,rootfs,/sbin/init)-->/etc/inittab 完成系统初始化,并打印成功提示符



模拟grub 即mbr损坏,(覆盖掉mbr),一定不会覆盖它的分区表,不然整个磁盘里面的所有的数据都找不回来

先备份mbr


如果分区表坏了,/root 当然也找不到了,所以最好放到其它磁盘上去,以便将来恢复

[root@localhost ~]# dd if =/dev/sda of=/root/mbr.backup count=1 bs=512        (if和等于号之间没有空格)

1+0 records in

1+0 records out

512 bytes (512 B) copied, 0.0235271 seconds, 21.8 kB/s

You have new mail in /var/spool/mail/root

[root@localhost ~]#



(不包括分区的应该是446 这里我们写成200)

[root@localhost ~]# dd if =/dev/zero of=/dev/sda count=1 bs=200        (if和等于号之间没有空格)

1+0 records in

1+0 records out

200 bytes (200 B) copied, 1.3797e-05 seconds, 14.5 MB/s

[root@localhost ~]#

[root@localhost ~]# sync            同步到磁盘上

[root@localhost ~]#

[root@localhost ~]# shutdown -r now        重启系统

mbr损坏的可能性是非常常见的,windows也是这样子的

mbr损坏了,里面的任何程序和命令都访问不到了

mbr损坏:

1,借助别的主机修复,把磁盘拆下来,借助于别的主机来修复

2,使用紧急救援模式:(救援模式也是一个小linux)使用grub的安装命令就可以了,借助于紧急救援模式,进入原来的根文件系统,就能实现

    a,  boot.iso    ( 要确保整个网络当中有一台主机可以提供安装环境的(相当于安装光盘))

    b, 使用完整的系统安装光盘,可以进入紧急救模式就行

            boot: linux rescue        进入紧急救援模式,只是运行了一个基于光盘的类似于win PE 一样的系统,要想执行修改,有可能需要切换到真正的根才可以, grub损坏了,与根是没有关系的,只要根在,那么所有命令都可以执行,因此可以直接安装grub

但是在紧急救援模式下,可能提示很多信息,比如你是不是要配置网络属性? 根文件系统 挂载到 救援模式的小linux 的一个特定的目录下    一般是  /mnt/sysimage 目录下(只读的方式挂载的),如果需要修改内容的话,需要重新挂载为读写方式(有时是直接挂载为读写的)    挂载完成之后,由于我们的源linux系统不是启动起来的,所以很可能探测不到某些特殊的硬件,比如切换到/mnt/sysimage目录,想通过光盘来复制一些文件并且安装,你会发现系统识别不了光盘(因为rc.sysinit中有一步是激活udev,udev就是专门用来创建设备文件的)(问题是切换过来的根文件系统 /mnt/sysimage 本身是没有rc.sysinnit脚本的执行过程)

(    chroot /mnt/sysroot ,dev目录下是不会有什么文件的,因为/mnt/sysroot 它是切换过来的虚根,只是把它当作根来用了,因此它不是一个启动意义上的系统,因此它的dev目录下不会有对应的设备文件的,没以设备文件,自然不能识别设备了,假如我们需要用到设备怎么办? 手动创建设备文件就可以了

mknod 

   )                                                    

        


重启后进入了光盘模式,(因为 mbr 被我们人为损坏了,硬盘进不去,自然就进入光盘模式了)

image.png

我们拆掉光盘吧

先关机再拆光盘

image.png

image.png

开机 找不到mbr,反正系统无法正常进入了

image.png


我们再关机,装上光盘

image.png

image.png

启动源linux

此时,硬盘启动不了了,于是就从光盘启动了

boot: 后面输入 linux rescue  敲回车

image.png

image.png

image.png

选择完成之后,它会尝试运行 anaconda ,在 anaconda的主使下,会启动一个小的linux,并将其作为我们的工作环境

启动网络接口 

image.png

配置eth0网卡

image.png

我们启用ipv4,禁用ipv6

image.png

指定一个ip地址吧        

image.png

配置网关和dns服务器(只配置一个吧)

image.png

接下来就会尝试试图启动eth0 , 启动完成之后,提醒我们已进入了 rescue(紧急救援)模式


此时小linux尝试 找 源linux,并且把linux根挂载到 /mnt/sysimage

continue(确认没有问题,就挂载 (读写挂载))  Read-only(只读方式挂载) Skip(不想让小linux系统搜索,自己搜索,就跳过,)

这里我们选择 continue

image.png

选择哪个是源linux的根

image.png

己经挂载到了 /mnt/sysimage 如果你想切换过去操作的话 ,就执行 chroot /mnt/sysroot


    image.png

下面的图说明己经切换过去了

image.png

# grub

image.png

grub 命令提示符下

查找 grub 所在的盘

grub> find (hd0,0)/   (找内核所在的分区) (斜杠后面要输Tab键) 发现了 vmlinuz (内核) 和 initrd.gz 说明,它就是我们的根

image.png

image.png

看上面 find (hd2,0) 应该是正确的

grub > root (hd2,0)        (这个功能是设定根) (根就是内核所在的分区)

image.png

安装grub (应该是指安装第一阶段吧)

grub >  setup (hd2)        

(只需要指定设备hd2,它会检查第二阶段 stage2 是否存在 )

image.png

grub > quit         退出grub

image.png


执行 sync 同步命令

image.png


reboot 重启系统 

image.png


(此时,是不是可以把光盘拆掉?退出光盘?)

其实我们这里没有用到网络功能,虽然我们刚刚配置了半天





grub配置文件丢失(或损坏,或配置文件里面出现了语法错误等等):

(通过键入以下的几个命令,手动唤起或手动启动系统即可)

如果grub配置文件丢失了,系统启动的时候,会给我们一个grub提示符

grub> find (hd2,0)        find 内存所在的分区

grub> root (hd2,0)        如果没问题了,设定根

grub> kernel  /vmlinuz-version ro root=/dev/vol0/root  rhgb quiet

grub> initrd /initrd-version     (initrd的版本号要与vmlinuz版本号要对应匹配)

grub> boot                      (boot 引导)启动起来了

启动起来后,在grub的目录下,重建一个配置文件就可以了

grub.conf    内容

default=0       # 选定一个默认启动的操作系统

timeout=10   # 超时时间间隔

#splash img图像文件有没有无所谓,它只是装饰

#隐不隐藏菜单也无所谓,它也是装饰

title RHEL 5.8 # RHEL 5.8 是随便写的

    root (hd0,0)

    kernel /vmlinuz-2.6.18-371.el5 ro root=/dev/vl10/root quiet # rhgb 有没有无所谓    quiet 有没有也无所谓,rhgb,quiet 都称为内核参数

    initrd /initrd-2.6.18-371.el5.img



/boot/grub下面的某个文件丢了,假如stage2丢了,怎么办?(应该也是进入单用户模式)

stage2是可以从某个目录下复制而来的, 

[root@localhost ~]# locate stage2

/boot/grub/stage2

/usr/share/grub/i386-redhat/stage2

/usr/share/grub/i386-redhat/stage2_eltorito



kernel panic:内核恐慌        ( panic 恐慌 ) 一旦看到kernel panic,等于是判了死刑







[root@localhost ~]# mv /boot/grub/grub.conf /root

[root@localhost ~]# sync

[root@localhost ~]# ll /boot/grub/

image.png

重启系统

[root@localhost ~]# shutdown -r now


重启后停在grub命令提示符下不动了

image.png


grub> find (hd0,0)/      后面跟着Tab 看能不能找到内核所在的分区    (内核必须能够被 grub找到,否则grub无法启动系统的)

image.pnggrub >  root (hd0,0)           (这个功能是设定根) (根就是内核所在的分区)

image.png

grub > kernel /vm Tab补全可以看到 kernel /vmlinuz-2.6.18-371.el5        (后面的什么 ro root 等等就不用指了 )

image.png

grub > initrd /ini    Tab补全可以看到 kernel /initrd-2.6.18-371.el5.img     (注意版本一定要与kernel指定的内核匹配)   然后敲回车

image.png

grub > boot         敲回车,进行启动,启动起来后,手动去建grub.conf的文件

image.png

启动后 进行登录

image.png

# cp /root/grub.conf /boot/grub

image.png




[root@localhost ~]# cd /etc/rc.d/rc3.d/

[root@localhost rc3.d]# ls

K01dnsmasq         K80kdump            S11auditd          S26lvm2-monitor

K02avahi-dnsconfd  K85mdmpd            S12restorecond     S28autofs

K02NetworkManager  K87multipathd       S12syslog          S55sshd

K05conman          K88wpa_supplicant   S13cpuspeed        S56cups

K05saslauthd       K89dund             S13irqbalance      S56rawdevices

K10dc_server       K89netplugd         S13iscsi           S56xinetd

K10psacct          K89pand             S13portmap         S80sendmail

K12dc_client       K89rdisc            S14nfslock         S85gpm

K15httpd           K91capi             S15mdmonitor       S90crond

K15svnserve        K99readahead_later  S18rpcidmapd       S90xfs

K20nfs             S00microcode_ctl    S19rpcgssd         S95anacron

K24irda            S03vmware-tools     S22messagebus      S95atd

K25squid           S04readahead_early  S23setroubleshoot  S97rhnsd

K50netconsole      S05kudzu            S25bluetooth       S97rhsmcertd

K50tux             S07iscsid           S25netfs           S97yum-updatesd

K69rpcsvcgssd      S08ip6tables        S25pcscd           S98avahi-daemon

K73ypbind          S08iptables         S26acpid           S99firstboot

K74ipmi            S08mcstrans         S26apmd            S99local

K74nscd            S09isdn             S26haldaemon       S99smartd

K74ntpd            S10network          S26hidd


S99firstboot  第一次安装完启动的服务(只运行一次,以后从来不会再运行)

S99smartd 跟设备驱动探测相关的(自动识别硬件特性的相关服务)

S99local

[root@localhost rc3.d]#


[root@localhost rc3.d]# cd ../rc5.d/

[root@localhost rc5.d]# pwd

/etc/rc.d/rc5.d

[root@localhost rc5.d]# ls

K01dnsmasq         K80kdump            S12restorecond     S28autofs

K02avahi-dnsconfd  K85mdmpd            S12syslog          S55sshd

K02NetworkManager  K87multipathd       S13cpuspeed        S56cups

K05conman          K88wpa_supplicant   S13irqbalance      S56rawdevices

K05saslauthd       K89dund             S13iscsi           S56xinetd

K10dc_server       K89netplugd         S13portmap         S80sendmail

K10psacct          K89pand             S14nfslock         S85gpm

K12dc_client       K89rdisc            S15mdmonitor       S90crond

K15httpd           K91capi             S18rpcidmapd       S90xfs

K15svnserve        S00microcode_ctl    S19rpcgssd         S95anacron

K20nfs             S03vmware-tools     S22messagebus      S95atd

K24irda            S04readahead_early  S23setroubleshoot  S96readahead_later

K25squid           S05kudzu            S25bluetooth       S97rhnsd

K50netconsole      S07iscsid           S25netfs           S97rhsmcertd

K50tux             S08ip6tables        S25pcscd           S97yum-updatesd

K69rpcsvcgssd      S08iptables         S26acpid           S98avahi-daemon

K73ypbind          S08mcstrans         S26apmd            S99firstboot

K74ipmi            S09isdn             S26haldaemon       S99local

K74nscd            S10network          S26hidd            S99smartd

K74ntpd            S11auditd           S26lvm2-monitor


rc5.d 下面也有 S99local 服务

[root@localhost rc5.d]#

[root@localhost rc5.d]# ll

image.png

[root@localhost rc5.d]# ls ..

init.d  rc0.d  rc2.d  rc4.d  rc6.d     rc.sysinit

rc      rc1.d  rc3.d  rc5.d  rc.local

[root@localhost rc5.d]#

image.png



[root@localhost rc5.d]# cd ..

[root@localhost rc.d]# pwd

/etc/rc.d

[root@localhost rc.d]# ll

总计 112

drwxr-xr-x 2 root root  4096 11-22 21:36 init.d

-rwxr-xr-x 1 root root  2255 2013-05-14 rc

drwxr-xr-x 2 root root  4096 11-22 21:36 rc0.d

drwxr-xr-x 2 root root  4096 11-22 21:36 rc1.d

drwxr-xr-x 2 root root  4096 11-22 21:36 rc2.d

drwxr-xr-x 2 root root  4096 11-22 21:36 rc3.d

drwxr-xr-x 2 root root  4096 11-22 21:36 rc4.d

drwxr-xr-x 2 root root  4096 11-22 21:36 rc5.d

drwxr-xr-x 2 root root  4096 11-22 21:36 rc6.d

-rwxr-xr-x 1 root root   220 2013-05-14 rc.local

-rwxr-xr-x 1 root root 27034 2013-08-16 rc.sysinit

[root@localhost rc.d]#

image.png



[root@localhost rc.d]# vim rc.local

#!/bin/sh

#

# This script will be executed *after* all the other init scripts.

# You can put your own initialization stuff in here if you don't

# want to do the full Sys V style init stuff.


touch /var/lock/subsys/local


任何写在这个里面的内容,开机都会自动执行一次的,每一次开机都会自动执行,

所以我们想让系统开机以后自动完成某些任务,而这些任务本身我们无法使用服务来实现,把它们写到这里面,是最好的解决方案,

后期的好多功能都要依赖于这个文件来完成的,因此一不小心,在这个里面写了错误的命令的话,有可能导致系统也无法正常启动的

比如一不小心,在里面写了reboot,会反复重启吧


[root@localhost rc.d]# ls /etc/rc.local

/etc/rc.local

[root@localhost rc.d]# ls -l /etc/rc.local

lrwxrwxrwx 1 root root 13 11-22 19:27 /etc/rc.local -> rc.d/rc.local

[root@localhost rc.d]#

image.png


许多人编辑的时候 都是 vim /etc/rc.local,编辑是同一个文件

[root@localhost rc.d]# vim /etc/rc.local

#!/bin/sh

#

# This script will be executed *after* all the other init scripts.

# You can put your own initialization stuff in here if you don't

# want to do the full Sys V style init stuff.


touch /var/lock/subsys/local


万一在  /etc/rc.local 文件中写了某个命令,导致系统无法启动怎么办?(进单用户模式,因为单用户不会启动rc.local服务)


假如一不小心 删了/bin/bash

[root@localhost ~]# rm /bin/bash

rm:是否删除 一般文件 “/bin/bash”? y

[root@localhost ~]# sync

[root@localhost ~]#

[root@localhost ~]# reboot


Broadcast message from root (pts/0) (Tue Jan  1 14:49:31 2019):


The system is going down for reboot NOW!



虚拟主机窗口

image.png

关机是要执行对应级别下面的脚本的 rc0.d 下面的所有的脚本,由于bash程序没了,所以所有的bash脚本就无法执行了,

由上图 /etc/rc.d/rc 脚本执行不了了

只能手动重启了

image.png


image.png

image.png


甚至连1级别都进不了了

因为在1级别下,在/bin 目录下,是需要运行shell的(sh是bash的链接),因为bash没了,所以sh也就执行不了了

所以只能进入紧急救援模式  安装下bash (从哪里获得bash的rpm安装包呢? 挂载光盘?)

先重启

image.png

设定光盘为第一启动盘 (是为了进入到紧急救援模式)

image.png

boot: linux rescue  敲回车

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

此时已连接好了光盘,并且进入了紧急救援模式

下面的目的就是装bash软件包

bash软件包就在我们的光盘上,

而紧急救援模式(这个小linux) 就在我们的光盘上,

所以不要挂载光盘了?还是要挂载的,切记是要挂载的


# ls /

# ls /mnt

# ls /mnt/source

# ls /mnt/runtime     (里面的内容就是我们的小系统)

# ls /mnt/sysimage     (就是我们的根所在的目录)

# ls /

# ls /dev    (/dev 目录下没有cdrom,所以不能挂载光盘)

(cdrom 通常(通常指的是hd的设备?)都是指向 hdc的链接)

(如果是光盘是sata口的话,就另当别论了)(我们这里仍然以hdc为例)

(光盘不能挂载到/mnt目录下,因为/mnt/sysimage 是我们的真正的根,要用到)

(这里我是建一个/media 目录, 把光盘挂载到/media 目录下 )

image.png

image.png

image.png

# mkdir /media

# mount /dev/hdc /media        (记住这里光盘 不是 /dev/cdrom,而是 /dev/hdc)

image.png

# cd /media

image.png

# ls 

image.png

image.png

# cd Server/

# ls | grep bash

image.png

# rpm -ivh --replacepkgs bash-3.2-32.el5_9.1.i386.rpm        (这里未执行)

 (虽然我们刚刚删除了 /bin/bash,但是/bin/bash这个软件包还存在,所以我们

使用 --replacepkgs 替换软件包, ) (但这里不能执行,因为一执行的话,就会安装在当前的

紧急救援的小linux上,而且这个小linux 到底支不支持还不知道)

image.png

# rpm -ivh --replacepkgs --root /mnt/sysimage bash-3.2-32.el5_9.1.i386.rpm 

(早期使用 --root /mnt/sysimage 把/mnt/sysimage 当作根来装bash)

image.png

image.png

重装好了

能 chroot 进行了,说明 sh指令能够正常执行了,说明bash肯定有的了

# chroot /mnt/sysimage        (切换到源linux)

image.png

# ls /bin | grep bash

image.png


# exit    退出,切换到紧急救援小linux

image.png


我们也可以基于网络来安装 bash

(我们不能接上光盘,但是知道网络服务器上有 bash,此时只需切换到对应的服务器里面,把bash 下载到

本地就可以了,安装方式过程是与上面的光盘安装是一样的,马哥说不用演示了)


当然可以chroot 过来 进行安装bash

# chroot /mnt/sysimage     (但是没有bash,chroot 是不能切换过来的(因为它默认使用bash切换过来的),

所以使用其它的shell作为sh程序)

image.png


如果损坏的不是bash,比如损坏的是mingetty 这个程序,它照样登录不了,不可能给你提示登录界面的,

因为单用户级别下是不会启动mingetty程序的,所以此时进入单用户级别就可以解决问题,但是进入单用户以后

(单用户不会启用网络的),需要手动启动网络服务,而后连到服务器上将mingetty程序下载到本地,然后重新安装,

跟刚才一样( --replacepkgs )


上面讲的就是可执行程序丢失了(或损坏了),如何修复



reboot 重启一下,改下硬盘启动优先

image.png

image.png


第一个窗口

[root@localhost ~]# export PATH=/data/bin

[root@localhost ~]#


[root@localhost ~]# ls

-bash: ls: command not found

[root@localhost ~]#

[root@localhost ~]# vim

-bash: vim: command not found

[root@localhost ~]#

重新登录一个新窗口就可以了

第二个新窗口

[root@localhost ~]# ls

image.png





第一个窗口

假设我们修改了 vim /etc/profile    PATH=/data/bin

                 然后 source  /etc/profile

[root@localhost ~]# vim

-bash: vim: command not found

[root@localhost ~]# export PATH=/b

[root@localhost ~]# export PATH=/bin:/sbin:/usr/bin:/usr/sbin        (这四个的话,大多数命令都可以找到)



in:/sbin:/usr/bin:/usr/sbin

[root@localhost ~]# ls

anaconda-ks.cfg          dropbear-2013.56.tar.bz2  mkdir

bincopy.sh               fstab                     sysroot.gz

boot.iso                 install.log               tiny.1.gz

busybox-1.20.2           install.log.syslog        tiny.2.gz

busybox-1.20.2.tar.bz2   ks.cfg                    tiny.3.gz

cofig-2.6.28.5-i686.cfg  ks.cfg-bak                tiny.4.gz

Desktop                  linux-2.6.38.5.tar.gz     tiny.5.gz

dropbear-2013.56         mbr.backup                tiny.8.gz

[root@localhost ~]#

[root@localhost ~]# ls /usr/bin | grep vim

rvim

vim

vimdiff

vimtutor

[root@localhost ~]# /usr/bin/vim  /etc/profile  (直接使用vim吧)


[root@localhost ~]# vim /etc/profile        (修复PATH环境变理就可以了)

export PATH=/bin:/sbin:/usr/bin:/usr/sbin 对管理员来讲 还有 /usr/local/bin  /usr/local/sbin 

还可能有其它的


许多时候,我们是配置文件的错,所以我们每隔一段时间需要备份一下 /etc 下面的所有文件

万一损坏了,我们可以恢复过来


版本控制软件,任何时候,修改配置文件,一旦改坏了,还可以恢复到改之前的版本上去


svn,git 这两个非常著名的版本控制工具,是开发人员常有的工具



普通分类: