一、补充应用技巧

目标:

本例要求掌握在运维中比较常用的一些扩展命令技巧的使用,完成下列小技巧操作:

1> 采用数值形式将目录/root的权限调整为 rwx------
   2> 将记录的历史命令条数更改为 200 条
   3> 统计 /boot、/etc/pki 目录占用的空间大小
   4> 以格式“yyyy-mm-dd HH:MM” 显示系统时间

方案:

date日期时间工具:

1> 显示日期时间:date、date +"%Y-%m-%d %H:%M:%S"
   2> 调整日期时间:date -s "yyyy-mm-dd HH:MM:SS"
   3> 恢复为硬件时间:hwclock -s

步骤:

步骤一:采用数值形式将目录/root的权限调整为 rwx------

1)查看原来的权限

[root@svr7 ~]# ls  -ld  /root/
    dr-xr-x---. 22 root root 4096 3月  26 14:59 /root/

2)修改为新权限

[root@svr7 ~]# chmod  700  /root/

3)确认权限设置结果

[root@svr7 ~]# ls  -ld  /root/
    drwx------. 22 root root 4096 3月  26 14:59 /root/

步骤二:将记录的历史命令条数更改为 200 条

1)调整记录条数

修改配置文件/etc/profile,找到HISTSIZE行,将此变量的值修改为200:

[root@svr7 ~]# vim  /etc/profile
    .. ..
    HISTSIZE = 200

2)确认设置结果

所有用户重新登录以后即可生效:

[root@svr7 ~]# su  -  root
    [root@svr7 ~]# echo  $HISTSIZE
    200

步骤三:统计 /boot、/etc/pki 目录占用的空间大小

1)分别统计结果

[root@svr7 ~]# du  -sh  /boot/  /etc/pki/
    130M      /boot/
    1.5M    /etc/pki/

2)比较du与ls查看文件大小的差异(默认块大小4096字节):

[root@svr7 ~]# ls  -lh  /etc/inittab                      //数据大小511字节
    -rw-r--r--. 1 root root 511 Sep 16  2015 /etc/inittab
    [root@svr7 ~]# du  -sh /etc/inittab                      //实际占用4KB磁盘空间
    4.0K    /etc/inittab

步骤四:以格式“yyyy-mm-dd HH:MM” 显示系统时间

[root@svr7 ~]# date  +"%F %R"
    2016-12-26 16:23

二、软连接与硬连接

目标:

本例要求理解软连接与硬连接的基本差异,完成下列操作:

1> 新建文件 file1,内容为 AAAA
   2> 为 file1 建立软连接 file1-s,对比两文件内容
   3> 为 file1 建立硬连接 file1-h,对比两文件内容
   4> 对比上述 3 个文件的 i 节点编号
   5> 删除文件 file1 ,再查看文件 file1-s、file1-h 内容

方案:

软连接与硬连接:

  • 软连接:指向原始文件的路径,若原始文件被删除,连接文件将失效;原始文件可以是目录;原始文件与连接文件可以在不同的分区/文件系统
  • 硬连接:指向原始文件的i节点档案,若原始文件被删除,连接文件仍然有效;原始文件不能是目录;原始文件与连接文件必须在同一个分区/文件系统

步骤:

步骤一:使用ln命令为文档/目录建立连接

1)新建一个测试文件

[root@svr7 ~]# vim  file1
    AAAA

2)为文件file1建立软连接file1-s并测试

[root@svr7 ~]# ln  -s  file1  file1-s
    [root@svr7 ~]# cat  file1-s
    linux.tedu.cn

3)为文件file1建立硬连接file1-h并测试

[root@svr7 ~]# ln  file1  file1-h
    [root@svr7 ~]# cat  file1-h
    linux.tedu.cn

4)对比原始文件、软连接、硬连接的属性

可以发现软连接只是一个快捷方式,而硬连接与原始文件的i节点编号相同,其实对应同一块磁盘存储:

[root@svr7 ~]# ls  -li  /root/f0*.txt
    204645793 -rw-r--r--. 2 root root 14 Jan  6 12:14 file1-h
    201628464 lrwxrwxrwx. 1 root root 12 Jan  6 12:16 file1-s -> file1
    204645793 -rw-r--r--. 2 root root 14 Jan  6 12:14 file1

步骤二:原始文件删除测试

1)当原始文件被删除时,软连接将会失效,而硬连接仍然可访问文件数据

[root@svr7 ~]# rm  -rf  file1
    [root@svr7 ~]# cat  file1-s
    cat: file1-s: No such file or directory
    [root@svr7 ~]# cat  file1-h
    linux.tedu.cn

2)如果已知原始文件和硬连接的路径,当原始文件丢失时,可以快速重建

[root@svr7 ~]# ln  file1-h  file1
    [root@svr7 ~]# ls  -li  /root/f0*.txt
    204645793 -rw-r--r--. 2 root root 14 Jan  6 12:14 file1-h
    201628464 lrwxrwxrwx. 1 root root 12 Jan  6 12:16 file1-s -> file1
    204645793 -rw-r--r--. 2 root root 14 Jan  6 12:14 file1

3)不支持为目录创建硬连接,但可以为目录建立软连接

[root@svr7 ~]# ln  /etc/sysconfig/network-scripts/  /etc/network
    ln: '/etc/sysconfig/network-scripts/': hard link not allowed for directory
    [root@svr7 ~]# ln  -s  /etc/sysconfig/network-scripts/  /etc/interface
    [root@svr7 ~]# ls  -l  /etc/interface
    lrwxrwxrwx. 1 root root 31 Jan  6 12:28 /etc/interface -> /etc/sysconfig/network-scripts/

三、man手册、zip备份

目标:

本例要求掌握man帮助手册的使用,以及zip压缩/解压缩的操作,完成下列任务:

查阅passwd命令、/etc/passwd配置文件的手册页
    使用zip打包/usr/share/doc/qemu-kvm/目录

方案:

zip/unzip压缩与解压缩:

  • 制作zip压缩包:zip [-r] 备份文件.zip 被归档的文档...
  • 释放zip压缩包:unzip 备份文件.zip [-d 目标文件夹]

步骤:

步骤一:使用man手册页获取帮助

1)查看passwd命令的手册页

[root@svr7 ~]# man  passwd
    PASSWD(1)                      User utilities                      PASSWD(1)
    NAME
           passwd - update user's authentication tokens
    SYNOPSIS
           passwd  [-k]  [-l]  [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w
           warndays] [-i inactivedays] [-S] [--stdin] [username]
    DESCRIPTION
           The passwd utility is used to update user's authentication token(s).
           This task is achieved through calls to the Linux-PAM and Libuser API.
           Essentially,  it initializes itself as a "passwd" service with Linux-
           PAM and utilizes configured password modules to authenticate and then
           update a user's password.
    .. ..

2)查看/etc/passwd配置文件的手册页

[root@svr7 ~]# man  2  passwd
    PASSWD(5)                 Linux Programmer's Manual                PASSWD(5)
    NAME
           passwd - password file
    DESCRIPTION
           The  /etc/passwd  file  is  a  text  file  that  describes user login
           accounts for the system.  It should have read permission allowed  for
           all users (many utilities, like ls(1) use it to map user IDs to user‐
           names), but write access only for the superuser.
           In the good old days there was no great  problem  with  this  general
           read  permission.   Everybody could read the encrypted passwords, but
           the hardware was too slow to crack a well-chosen password, and  more‐
           over  the  basic assumption used to be that of a friendly user-commu‐
           nity.  These days many people run some version of the shadow password
           suite,  where /etc/passwd has an 'x' character in the password
    .. ..

步骤二:使用zip命令制作压缩包

1)将目录/usr/share/doc/qemu-kvm/备份为/root/qemu-kvm.zip

[root@svr7 ~]# zip  -r  /root/qemu-kvm.zip  /usr/share/doc/qemu-kvm/
      adding: usr/share/doc/qemu-kvm/ (stored 0%)
      adding: usr/share/doc/qemu-kvm/COPYING (deflated 62%)
      adding: usr/share/doc/qemu-kvm/COPYING.LIB (deflated 65%)
      adding: usr/share/doc/qemu-kvm/Changelog (deflated 61%)
      adding: usr/share/doc/qemu-kvm/LICENSE (deflated 45%)
      adding: usr/share/doc/qemu-kvm/README (deflated 4%)

2)恢复测试

删除目标文件夹并确认结果:

[root@svr7 ~]# rm  -rf  /usr/share/doc/qemu-kvm/
    [root@svr7 ~]# ls  /usr/share/doc/qemu-kvm/
    ls: cannot access /usr/share/doc/qemu-kvm/: No such file or directory

恢复目标文件夹并确认结果:

[root@svr7 ~]# unzip  /root/qemu-kvm.zip  -d  /
    Archive:  /root/qemu-kvm.zip
       creating: /usr/share/doc/qemu-kvm/
      inflating: /usr/share/doc/qemu-kvm/COPYING  
      inflating: /usr/share/doc/qemu-kvm/COPYING.LIB  
      inflating: /usr/share/doc/qemu-kvm/Changelog  
    .. ..
    [root@svr7 ~]# ls  /usr/share/doc/qemu-kvm/
    COPYING      README                    qemu-tech.html
    COPYING.LIB  README.rhel6-gpxe-source  qmp-commands.txt
    Changelog    README.systemtap          qmp-events.txt
    LICENSE      qemu-doc.html             qmp-spec.txt

四、vim效率操作

目标:

本例要求掌握使用vim文本编辑器时能够提高操作效率的一些常用技巧和方法,完成下列任务:

1> 将文件 /etc/passwd 复制为 /opt/nsd.txt,然后打开 /opt/nsd.txt 文件,练习命令模式下的切换/复制/删除/查找操作
   2> 将文件 /etc/man_db.conf 复制到 /opt 目录下,然后打开 /opt/man_db.conf 文件,将第50~100行内的“man”替换为“MAN”,在 vim 中设置显示行号查看效果

方案:

命令模式常用操作:

1> 1G 或 gg ,跳转到文件的首行
     2> G ,跳转到文件的末尾行
     3> yy、#yy ,复制光标处的一行、#行
     4> p、P ,粘贴到光标处之后、之前
     5> x 或 Delete键 ,删除光标处的单个字符
     6> dd、#dd ,删除光标处的一行、#行
     7> d^、d$ ,从光标处之前删除至行首/行尾
     8> /word 向后查找字符串“word”,再按n/N跳至后/前一个结果
     9> u ,撤销最近的一次操作
   10> U ,撤销对当前行的所有修改
   11> Ctrl + r 取消前一次撤销操作
   12> ZZ 保存修改并退出

末行模式常用操作:

1> :s/old/new ,替换当前行第一个“old”
    2> :s/old/new/g ,替换当前行所有的“old”
    3> :n,m s/old/new/g ,替换第n-m行所有的“old”
    4> :% s/old/new/g ,替换文件内所有的“old”
    5> :w /root/newfile ,另存为其它文件
    6> :r /etc/filesystems ,读入其他文件内容
    7> :set nu|nonu ,显示/不显示行号
    8> :set ai|noai ,启用/关闭自动缩进

步骤:

步骤一:vim命令模式下的切换/复制/删除/查找

1)建立练习文件

将文件 /etc/passwd 复制为 /opt/nsd.txt:

[root@svr7 ~]# cp  /etc/passwd  /opt/nsd.txt

2)使用vim打开练习文件,默认处于命令模式

[root@svr7 ~]# vim  /opt/nsd.txt
    .. ..

3)在命令模式下完成下列操作

切换操作:G 最后一行,5G 第5行,gg 第一行。

复制操作:按2yy复制2行,7G移动到第7行,p 粘贴。

删除操作:25G 移动到第25行,200dd 从此行开始删除200行(不够就剩下全删)。

查找操作:gg 第一行,/adm 查找关键词adm,n 跳转到下一个结果。

4)保存并退出编辑器

ZZ 保存退出。

步骤二:vim末行模式下的替换/设置操作

1)建立练习文件

将文件 /etc/man_db.conf 复制到 /opt/ 目录下:

[root@svr7 ~]# cp  /etc/man_db.conf  /opt/

2)使用vim打开练习文件,输入:切换到末行模式

[root@svr7 ~]# vim  /opt/man_db.conf
    .. ..
    :

3)在末行模式下完成下列操作

输入 :set nu ,确认后显示行号。

输入 :50,100 s/man/MAN/g ,确认将第50~100行内的“man”替换为“MAN”。

4)保存并退出编辑器

输入 :wq ,确认后保存并退出编辑器。

五、自定义yum软件仓库

目标:

本例要求在CentOS真机上利用RHEL7的光盘镜像文件准备一个软件仓库目录,完成下列任务:

  • 创建目录 /var/www/html/rh7dvd
  • 挂载 rhel-server-7.2-x86_64-dvd.iso 到上述目录

另外,利用收集的一些第三方RPM软件包文件,配置为可发布的yum仓库目录,相关任务如下:

  • 挂载RHEL7光盘镜像文件到 /var/www/html/ 目录
  • 下载 LibreOffice 办公软件的 rpm 集合版文件
  • 将其中的内容释放到 /opt/libreoffice/ 目录
  • 为 /opt/libreoffice/ 目录建立仓库档案

方案:

作为yum软件源的目录需要准备的内容:

  • 大量的 .rpm 软件安装包文件
  • 针对这些软件包的 repodata/ 仓库档案

repodata/ 仓库档案提供的数据:

  • filelists.xml.gz:提供所有软件包的文件安装清单
  • primary.xml.gz:提供所有软件包的基本/主要信息
  • other.xml.gz:提供所有软件包的其他信息
  • repomd.xml:提供上述档案数据文件.xml.gz的下载和校验信息

步骤:

步骤一:准备 /var/www/html/rh7dvd 仓库目录

1)创建目录 /var/www/html/rh7dvd

[root@room9pc13 ~]# mkdir  /var/www/html/rh7dvd

2)挂载 rhel-server-7.2-x86_64-dvd.iso 到上述目录

[root@room9pc13 ~]# vim  /etc/fstab
    .. ..
    /ISO/rhel-server-7.2-x86_64-dvd.iso  /var/www/html/rh7dvd  iso9660  loop,ro  0  0
    [root@room9pc13 ~]# mount  -a

3)确认部署结果

[root@room9pc13 ~]# ls  /var/www/html/rh7dvd/
    addons  images      Packages                 RPM-GPG-KEY-redhat-release
    EFI     isolinux    release-notes            TRANS.TBL
    EULA    LiveOS      repodata
    GPL     media.repo  RPM-GPG-KEY-redhat-beta

步骤二:准备 /opt/libreoffice/ 仓库目录

1)将获取的LibreOffice软件集合包释放到指定目录

[root@room9pc13 ~]# ls  LibreOffice_5.1.6.2_Linux_x86-64_rpm.zip
    LibreOffice_5.1.6.2_Linux_x86-64_rpm.zip
    [root@room9pc13 ~]# unzip  LibreOffice_5.1*.zip -d /opt/libreoffice
     Archive:  LibreOffice_5.1.6.2_Linux_x86-64_rpm.zip
      inflating: /opt/libreoffice/install              
       creating: /opt/libreoffice/langpack_zh-CN/
       creating: /opt/libreoffice/langpack_zh-CN/RPMS/
    .. ..                                         //释放到 /opt/libreoffice 目录

2)使用createrepo建立档案

[root@room9pc13 ~]# createrepo  /opt/libreoffice/
    Spawning worker 0 with 53 pkgs
    Workers Finished
    Saving Primary metadata
    Saving file lists metadata
    Saving other metadata
    Generating sqlite DBs
    Sqlite DBs complete

3)确认repodata/档案资料

[root@room9pc13 ~]# ls  /opt/libreoffice/repodata
    1a5d8311268f33ad2cbf91382110e1ef9875aeea366897253a5d27fd42f9e317-other.xml.gz
    2cd176f0b00492c0c13e0a659eda7dedeb1ab526dec5fd7c9bac7758558770d2-filelists.xml.gz
    6ecab3585a93a917202e177b9569046238332af449a6492fcace96ea79374668-filelists.sqlite.bz2
    b09a1f838262e0b67a5ab0d6be516bd921a914afd89864e09650f95662a20371-primary.sqlite.bz2
    b6fcf4a24de5dc08585bf52bd34be50d7df376d5fbcf50903bfd3c1dfdf160bf-other.sqlite.bz2
    f57724cf309cc102b2ee25596bf8fb39db3c23880404209ac1e379f7b9fd5c49-primary.xml.gz
    repomd.xml

六、发布及测试yum仓库

目标:

沿用案例5,本例要求掌握发布及测试yum仓库的方法,方便在网络内提供集中的yum源服务器,主要完成下列任务:

  • 在CentOS真机 上发布yum源,包括:rhel7 系统的光盘目录仓库、LibreOffice 的rpm软件包仓库
  • 在主机 pc207 上使用上述yum源

方案:

通过网络发布yum软件源时,只需要配置HTTP或FTP资源服务器,然后将提前准备好的yum仓库目录部署到可访问的资源位置即可。

在访问网络yum软件源时,注意客户端的baseurl地址必须与资源提供方式一致:

  • baseurl = htp://服务器地址/目录名 ==》 /var/www/html/目录名
  • baseurl = ftp://服务器地址/目录位置 ==》 /var/ftp/目录名

步骤:

步骤一:在CentOS真机上发布yum仓库

1)快速搭建httpd服务器(若已建好,此步可跳过)

[root@room9pc13 ~]# yum  -y  install  httpd                  //装包
    [root@room9pc13 ~]# systemctl  restart  httpd                 //起服务
    [root@room9pc13 ~]# systemctl  enable  httpd                 //设置开机自启

2)确认前一步已经部署到Web网站目录的RHEL7光盘数据:

[root@room9pc13 ~]# du  -sh  /var/www/html/rh7dvd/                  //检查部署结果
    3.9G    /var/www/html/rh7dvd/

3)将准备好的LibreOffice仓库目录部署到Web网页目录

[root@room9pc13 ~]# mv  /opt/libreoffice/  /var/www/html/
    [root@room9pc13 ~]# du  -sh  /var/www/html/llibreoffice/         //检查部署结果
    234M    /var/www/html/libreoffice

步骤二:在pc207上访问yum仓库

1)添加新的yum仓库设置

[root@pc207 ~]# vim  /etc/yum.repos.d/new.repo
    [rh7dvd]
    name = RHEL 7.2 Server
    baseurl = http://192.168.4.254/rh7dvd
    gpgcheck = 0
    [libreoffice]
    name = LibreOffice 5
    baseurl=http://192.168.4.254/libreoffice
    gpgcheck = 0

2)测试新的yum仓库

[root@pc207 ~]# yum  repolist
    .. ..
    repo id             repo name                            status
    libreoffice         LibreOffice 5                          53
    rh7dvd              RHEL 7.2 Server                      4620
    .. ..

七、编译安装软件包

目标:

本例要求掌握常规源代码应用的安装过程,通过编译的方式安装inotify-tools 软件工具,完成下列任务:

  • 释放 inotify-tools-3.13.tar.gz 源码包
  • 配置 ./configure
  • 编译 make、安装 make install
  • 测试inotifywait监控工具的用法及用途

方案:

对于标准源码发布的C/C++软件包,编译安装一般包括以下过程:

  • 解包:使用tar命令,将下载的源代码释放至指定目录
  • 配置:执行源码目录内的 ./configure 脚本,指定安装目录/功能模块等选项
  • 编译:在源码目录下执行 make 操作,根据配置清单Makefile生成可执行的二进制程序文件
  • 安装:在源码目录下执行make install 操作,将编译好的程序及相关文件复制到安装目录

步骤:

步骤一:确认已配置好编译环境

[root@svr7 ~]# yum  -y  install  gcc  gcc-c++  make
    .. ..
    [root@svr7 ~]# gcc  --version
    gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-4)
    Copyright (C) 2015 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

步骤二:编译安装inotify-tools软件包

1)解包inotify-tools-3.13.tar.gz文件

[root@svr7 ~]# ls  inotify-tools-3.13.tar.gz
    inotify-tools-3.13.tar.gz
    [root@svr7 ~]# tar  xf  inotify-tools-3.13.tar.gz  -C /usr/src/

2)配置 ./configure,安装目录默认(/usr/local/*/)

[root@svr7 ~]# cd  /usr/src/inotify-tools-3.13/          //进入源码目录
    [root@svr7 inotify-tools-3.13]# ./configure              //配置操作
    checking for a BSD-compatible install... /usr/bin/install -c
    checking whether build environment is sane... yes
    checking for gawk... gawk
    .. ..
    configure: creating ./config.status
    config.status: creating Makefile
    .. ..
    [root@svr7 inotify-tools-3.13]# ls  Makefile              //检查配置结果
    Makefile

3)编译 make

[root@svr7 inotify-tools-3.13]# make
    .. ..
    Making all in src
    make[2]: Entering directory `/usr/src/inotify-tools-3.13/src'
    make[3]: Entering directory `/usr/src/inotify-tools-3.13'
    make[3]: Leaving directory `/usr/src/inotify-tools-3.13'
    .. ..

4)安装 make install

[root@svr7 inotify-tools-3.13]# make  install
    .. ..
    /usr/bin/install -c .libs/inotifywait /usr/local/bin/inotifywait
      /bin/sh ../libtool --mode=install /usr/bin/install -c 'inotifywatch' '/usr/local/bin/inotifywatch'
    .. ..
    [root@svr7 inotify-tools-3.13]# find  /usr/local/  -name  "inotify*"
    /usr/local/bin/inotifywait                              //确认安装结果
    /usr/local/bin/inotifywatch
    /usr/local/include/inotifytools
    /usr/local/include/inotifytools/inotifytools.h

步骤三:测试inotify-tools软件程序

软件包inotify-tools提供了一个主要程序inotifywait,可以用来监控指定目录或文档的变化,并及时给出通知。

1)开启对/opt目录的事件监控

[root@svr7 ~]# inotifywait  -mrq  /opt &                  //开启监控
    [1] 15568

2)修改/opt/目录内容,观察屏幕输出信息

[root@svr7 ~]# touch  /opt/a.txt                          //新建文件a.txt
    /opt/ CREATE a.txt
    /opt/ OPEN a.txt
    /opt/ ATTRIB a.txt
    /opt/ CLOSE_WRITE,CLOSE a.txt
    [root@svr7 ~]# mv  /opt/a.txt  /opt/b.txt                  //将文件改名
    /opt/ MOVED_FROM a.txt
    /opt/ MOVED_TO b.txt

3)结束inotifywait监控

杀死当前用户的第一个后台任务:

[root@svr7 ~]# kill  -9  %1
    [1]+  Killed                  inotifywait -mrq /opt

05-06 22:45