linux基础part3

Posted xuxuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux基础part3相关的知识,希望对你有一定的参考价值。

linux基础

一、linux基本命令归档命令。

  1.归档的定义:归档就是把许多文件或目录打包成一个文件。

  2.tar命令格式:tar  [参数-cxtzjvfpPN]  打包文件名 文件或目录路径

            参数:
            -c :建立一个压缩文件的参数指令(create 的意思);
            -x :解开一个压缩文件的参数指令!
            -t :查看 tarfile 里面的文件!特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!因为

            不可能同时压缩与解压缩。
            -z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
            -j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
            -v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
            -f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!例如使用『 tar -zcvfP tfile sfile』

              就是错误的写法,要写成『 tar -zcvPf tfile sfile』才对喔!
            -p :使用原文件的原来属性(属性不会依据使用者而变)
            -P :可以使用绝对路径来压缩!
             -N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!
            --exclude FILE:在压缩的过程中,不要将 FILE 打包!

二、vi编辑器的使用

  1.vi的定义:vi是一个UNIX和Linux系统内嵌的标准正文(文字)编辑器,它是一种交互类型的正文编辑器,它可以用来创建和修改正文文件。

  2.vi编辑器的三种基本模式:

    a) 命令行模式:vi的默认模式。在这一模式中,所有的输入被解释成vi命令,可以执行修改、复制、移动、粘贴和删除正文等命令,也可以进行移动光标、搜索字符串和退出vi的操作等。
    b) 编辑模式:在编辑模式中,可以往一个文件中输入正文。在这一模式下,输入的每一个字符都被vi编辑器解释为输入的正文。使用ESC键返回命令行模式。
    c) 扩展模式:在一些UNIX系统上也叫最后一行模式。在这一模式下,可以使用一些高级编辑命令,如搜寻和替代字符串、存盘或退出vi编辑器等。要进入最后一行模式,需要在命令行模式中输入冒号(:),冒号这一操作将把光标移到屏幕的最后一行。

  3.vi编辑器在不同模式下的不同命令

  

  a、模式命令:

    x,X :x为向后删除一个字符,X为先前删除一个字符

    nx(n代表数字) :向后删除n个字符

    dd: 删除当前行 ,D :删除当前行所有字符,试成为空行, ndd(n代表数字) :删除光标所在行的向下n列 ,d1G: 删除光标所在

      行到第一行的所有数据,dG :删除光标所在行到最后一行的所有数据

    yy :复制光标所在行 ,y1G :复制光标所在行到第一行的所有数据, yG :复制光标所在行到最后一行的所有数据

    ynj(n代表数字): 复制光标所在行向下n+1行,dnj(n代表数字): 删除光标所在行向下n+1行

    p,P: p为复制的数据粘贴在光标的下一行,P为复制的数据粘贴在光标的上一行, J :将光标所在行与下一行的数据结合成一行,

     u :恢复前一个动作(undo)

    ctrl+r:重做上一次操作

    /关键字:向光标之后查找关键字,?关键字:向光标之前查找关键字

     n:重复前一个查找;N:反向重复前一个查找;

  b、从命令模式进入插入(编辑)模式命令:

    a:进入插入模式并在光标之后进行添加。                 A:进入插入模式并在本行末尾添加。
    i:进入插入模式并在光标之前进行插入。                 I:进入插入模式并在本行开头添加。         

    o:进入插入模式并在当前(光标所在)行之下开启新的一行。    O:进入插入模式并在当前光标之上开启新一行。

  c、进入编辑模式就可以直接编辑,按esc从编辑模式退出到命令模式

  d、进入扩展模式命令:

    :s/word1/word2/g 在光标当前行查找word1,并替换成word2

    :n1,n2s/word1/word2/g 在第n1行与第n2行之间查找word1,并替换成word2

    :%s/word1/word2/g 整个文章查找word1,并替换成word2

    :w 将编辑的数据保存到硬盘文件中

    :w [filename] 将编辑后的数据保存到硬盘的另一个文件中

    :r [filename] 在编辑数据时,读入另一个文件中的数据,即将filename文件中的内容加到光标所在行下一行

    :wq或:x 保存并退出 :q 退出,适用于未修改的文件

    :q! 强制退出,适用于修改文件后不保存退出

    :set nu 显示行号 :set nonu 取消行号

    :n1,n2 w [filename] 将n1到n2行的内容保存到名为filename的文件中

    :set ic:查找时忽略大小写;

    :set nioc:查找时不忽略大小写;

三、linux系统的初始化

     1.linux系统启动顺序:

             

  启动第一步--加载Bios
    当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。
  

  启动第二步--读取MBR(主引导程序)
    众所周知,硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot Record,即主引导记录,它的大小是512字节,别看地方不大,可里面却存放了预启动信息、分区表信息。系统找到BIOS所指定的硬盘的MBR后,就会将其复制到0×7c00地址所在的物理内存中。其实被复制到物理内存的内容就是Boot Loader(次引导程序),而具体到你的电脑,那就是lilo或者grub了。

  启动第三步--Boot Loader
    Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。Boot Loader有若干种,其中Grub、Lilo和spfdisk是常见Loader。我们以Grub为例来讲解吧,毕竟用lilo和spfdisk的人并不多。系统读取内存中的grub配置信息(一般为menu.lst或grub.lst),并依照此配置信息来启动不同的操作系统。

  启动第四步--加载内核
    根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。此时,屏幕一般会输出“Uncompressing Linux”的提示。当解压缩内核完成后,屏幕输出“OK, booting the kernel”。系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。至此,Linux内核已经建立起来了,基于Linux的程序应该可以正常运行了。

  补充一:用户选择要加载的内核之后,次引导加载程序(GRUB)就会根据/boot/grub.conf配置文件中所设置的信息,从/boot/所在的分区上读取Linux内核映像,然后把内核映像加载到内存中并把控制权交给Linux内核。

  补充二:linux内核获得控制权之后开始干自己的事有检测硬件、解压缩自己并安装必要驱动、初始化与文件系统相关的虚拟设备,LVM或RAID、装载根文件系统,挂在根目录下面、完成之后,linux在进程空间里面加载init程序,下面轮到init干活


  启动第五步--用户层init依据inittab文件来设定运行等级
    内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作。其实/etc/inittab文件最主要的作用就是设定Linux的运行等级,其设定形式是“:id:5:initdefault:”,这就表明Linux需要运行在等级5上.

  启动第六步--init进程执行rc.sysinit
    在设定了运行等级后,Linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,它做的工作非常多,包括设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等.

  启动第七步--启动内核模块
    具体是依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块。

  启动第八步--执行不同运行级别的脚本程序
    根据运行级别的不同,系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。


  启动第九步--执行/etc/rc.d/rc.local.rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方。你可以把你想设置和启动的东西放到这里。
  启动第十步--执行/bin/login程序,进入登录状态.此时,系统已经进入到了等待用户输入username和password的时候了,你已经可以用自己的帐号登入系统了。

四、单用户模式下修改root用户密码。

  1.centos6系列下单用户模式修改root密码:

  首先我们重启我们的系统(我这里是CentOS),然后在界面启动时让它停留一下,随便按一下键盘上的一个键,此时就会进入到操作系统配置引导界面

  

  通过下面的英文提示我们发现按下键盘上的 e 键就可以进入到编辑界面

  

  这时我们需要将光标移动到第二个选项,也就是Linux内核那里,同样按下键盘上的 e 键进入到编辑界面,此时我们在后面追加参数 1 或者参数 single就可以告诉Linux系统的内核,我需要以单用户的模式登陆该系统。

  

  然后我们回车,进入到上层的界面,此时按下键盘上的 b 键就是启动操作系统,此时我们的Linux操作系统就是以单用户的模式登陆了。我们发现系统非常快速的就进入到了命令行模式下的界面,因为单用户模式是不会启动任何服务的,同时也不需要输入root密码,就能直接进入到root用户下,此时我们就可以通过passwd 命令来重置我们的root用户的密码

  

  然后我们通过exit命令就可以退出单用户模式,此时操作系统内核就会根据我们之前看到的 /etc/inittab 配置文件中设置的默认启动级别来启动。

这样我们就可以通过在进入GRUB引导时在内核参数里面追加参数 1 或者 single 来进入单用户模式来修改我们的root用户密码。

但是,请注意,因为上面的操作只需要通过单用户模式就可以修改我们的root用户密码,所以说一旦别人有机会接触到我们的服务器主机,那么root用户的密码就很容易被别人修改了,这样当然是非常的不安全的,所以我们还是需要通过GRUB加密来对开启一层密码防护。

  通过在 /boot/grub/grub.conf 启动配置中加入以下类似的代码来对grub进行加密:

password --md5 $1$6H92B1$PzoPV63kTMk4uEhZQTAZ//

  其中后面那一串是MD5加密算法,这个我们可以通过 grub-md5-crypt 这个命令来生成加密后的算法

[root@xiaoluo ~]# grub-md5-crypt 
Password: 
Retype password: 
$1$UGA2B1$DriIdrVTEgVg95fHHX4H./
[root@xiaoluo ~]# 

  在上面的Password、Retype password那里输入我们需要设置的密码,然后就能生成MD5算法加密后的密码,我们将这个加密后的密码添加到

/boot/grub/grub.conf 这个配置文件里即可,例如:

复制代码
[root@xiaoluo ~]# vi /boot/grub/grub.conf 
password --md5 $1$UGA2B1$DriIdrVTEgVg95fHHX4H./

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You do not have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /, eg.
#          root (hd0,1)
#          kernel /boot/vmlinuz-version ro root=/dev/sda2
#          initrd /boot/initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,1)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-358.el6.x86_64)
        root (hd0,1)
        kernel /boot/vmlinuz-2.6.32-358.el6.x86_64 ro root=UUID=6e24ec7a-2d19-466e-bacc-92750b1f4bef rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
        initrd /boot/initramfs-2.6.32-358.el6.x86_64.img

  这个时候我们再次重启一下系统,试着进入到GRUB里面来看看,

  

  我们发现下面的英文提示已经变了,之前可以按键盘上的 e 键进入到GRUB里面,现在按 e 键已经没用了,此时提示我们按 p 键来输入GRUB的密码才能进入到GRUB里面

  此时我们输入之前设置的GRUB密码即可,然后界面就会进入到我们熟悉的修改GRUB那里了。

所以说通过GRUB的加密算法我们可以对进入GRUB进行加密,这样就能防止别人恶意进入单用户模式,从而修改root密码了!!

当然,如果我们连这个GRUB的秘密都忘记的话,并且又忘记了root密码,那就真的不能登陆到root用户了。。。。

2.centos7系列下单用户模式修改root密码:

  重启服务器,在选择内核界面使用上下箭头移动

  选择内核并按“e”

  找到下面这行

  

  修改然后这里要删除掉rhgb quiet,如下图

  

  使用“ctrl + x” 来重启服务器就可以了,重启后就会进入到单用户

  退出单用户命令exec:/sbin/init

方法二:

  1、启动的时候,在启动界面,相应启动项,内核名称上按“e”;
  2、进入后,找到linux16开头的地方,按“end”键到最后,输入console=tty0 rd.break,按ctrl+x进入;
  3、进去后输入命令mount,发现根为/sysroot/,并且不能写,只有ro=readonly权限;
  4、mount -o remount,rw /sysroot/,重新挂载,之后mount,发现有了r,w权限;
  5、chroot /sysroot/ 改变根;
  (1)echo RedHat|passwd –stdin root 修改root密码为redhat,或者输入passwd,交互修改;
  (2)还有就是先cp一份,然后修改/etc/shadow文件
  6、touch /.autorelabel 这句是为了selinux生效
  7、ctrl+d 退出
  8、然后reboot

五 centos6系列救援模式

  1。用安装光盘或者硬盘安装的方式进入安装界面,在shell 中输入 linux rescue

  

   2。然后根据提示选择语言和键盘格式

  

 

   3。选择是否配置网卡

一般系统到了要rescue了,网络也就不需要了,所以可以选择否跳过网卡配置,当然你如果需要也可以选择是,具体设置过程和安装时一样。

  

  4。选择是否然让系统查找硬盘上的RHEL 系统,选择继续。

  

  5。硬盘上的系统已经被找到并挂载在/mnt/sysimage 下

  

  6。按提示chroot /mnt/sysimage

  

   chroot 之后你就可以已经在你的要被拯救的系统下了。 grub挂了的,grub-install /dev/hdxx 配置文件改错的,vi /etc/fstab vi /etc/inittab .................. 软件包被毁的 rpm -F xxx.rpm

完成修复工作后,exit命令退出chroot,exit退出rescue shell 系统重启。

  备注:
  如果你硬盘上的系统是非rhel系统如debian的,那么在第4步时,rescue 程序会找步不到硬盘上的系统,所以我们这是选择"跳过",直接进入shell。假设现在硬盘上的有一个debian 系统 /dev/hda1 为/boot 分区 /dev/hda5 为 / 分区 /dev/hda6 为swap。那么我们现在这么做。
   代码:
# fdisk -l (查看分区情况)
# mkdir /mnt/linux
# mkdir /mnt/linux/boot  (根据fdisk -l 得到的信息创建目录)
# mount -t ext3 /dev/hda5 /mnt/linux
# mount -t ext3 /dev/hda1 /mnt/linux/boot (挂载硬盘上的文件系统)
# chroot /mnt/linux (chroot 改变工作系统)
#

  自此我们顺利进入硬盘上的debian系统,剩下来到就和先前一样了,有冤的报冤有仇的报仇。
  另: 如果你的系统是文件系统损坏那么就不用挂载,chroot 系统了。 直接 fsck /dev/hdxx 即可。

  其实我们仔细想想这个rescue会发现,所谓rescue 模式只是一个带shell 的linux 运行环境而已,然后通过mount 和 chroot进入要修复的系统的。
  所以在没有rescue 盘的情况下我可以利用 Linux livecd 或 软盘版的linux 进入shell 环境然后重做
代码:
# fdisk -l (查看分区情况)
# mkdir /mnt/linux
# mkdir /mnt/linux/boot  (根据fdisk -l 得到的信息创建目录)
# mount -t ext3 /dev/hda5 /mnt/linux
# mount -t ext3 /dev/hda1 /mnt/linux/boot (挂载硬盘上的文件系统)
# chroot /mnt/linux (chroot 改变工作系统) 

就可以简单的进入一个rescue 环境了.

2、centos7系列救援模式

一、修复MBR:

  MBR(Master Boot Record主引导记录):硬盘的0柱面、0磁头、1扇区称为主引导扇区。其中446Byte是bootloader,64Byte为Partition table,剩下的2Byte为magic number。

  备份MBR:

  #dd if=/dev/sda of=/root/mbr.bak count=1 bs=512

  破坏bootloader:

  #dd if=/dev/zero of=/dev/sda count=1 bs=200

  这里边block size只要小于等于446即可。

  修复方式:

  1、借助其他系统挂载磁盘修复。

  修复方式同光盘修复类似,也是使用grub2-install命令。

  2、借助安装光盘修复。

  1.装入光盘,在光盘引导界面选择troubleshooting:

  

  2.选择进入救援模式:

  

  3.按回车键继续:

  

  4.进入磁盘挂载选择模式:

  磁盘将会被挂载至/mnt/sysimage/下

  continue 以rw方式挂载分区。

  read only 以ro方式挂载分区。

  skip 跳过,将来自己手工挂载磁盘。

  

  5.选择continue,稍等片刻,提示已经挂载完成。

  

  6.此时进入救援模式的命令行:

  

  7.使用grub2-install命令重建bootloader:

  #grub2-install root-directory=/mnt/sysimage /dev/sda

  

  显示无错误,使用sync写入硬盘,reboot重启系统。

  8.重启后无错误,grub正常运行:

  

  至此,MBR修复完成。

二、修复grub

  grub配置文件丢失:

  开机后会直接进入grub界面,显示为grub>:

  

  修复步骤如下:

  grub>insmod xfs

  grub>set root=(hd0,1)

  grub>linux16 /vmlinuz-xxxxx root=/dev/mapper/centos-root

  grub>initrd16 /initramfs-.xxxxx.img

  

  修复完成后即可进入系统,重建配置文件。

  注意:CentOS7因为使用的是grub2,配置文件同grub有不少变化,一定要切记备份grub.cfg以便恢复。

补充一:systemctl set-default multi-user.target  //设置成命令模式

    systemctl set-default graphical.target  //设置成图形模式

补充二:配置文件/etc/grub.conf
     default
     这个参数决定了GRUB引导时光标默认停留的引导标签。
     timeout
     这个参数设置的是GRUB的等待时间。
     title
     其实title就是一个引导标签,可以对title后的文字部分进行修改,使它更加符合我们的使用习惯。
     Password
     设置密码,提高grub的安全性

 

 

 

 

 

 

 

 

 

  

以上是关于linux基础part3的主要内容,如果未能解决你的问题,请参考以下文章

鸟哥的linux私房菜 第三版 基础篇 part3

shell基础part3

玩蛇(Python)笔记之基础Part3

Part3-3-3 Nuxt.js 基础

Part3-3-2 服务端渲染基础

Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级