Top

NSD SERVICES DAY01

  1. 案例1:补充应用技巧
  2. 案例2:软连接与硬连接
  3. 案例3:man手册、zip备份
  4. 案例4:自定义yum软件仓库
  5. 案例5:发布及测试yum仓库
  6. 案例6:vim效率操作
  7. 案例7:编译安装软件包

1 案例1:补充应用技巧

1.1 问题

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

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

1.2 方案

date日期时间工具:

1.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:采用数值形式将目录/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

2 案例2:软连接与硬连接

2.1 问题

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

  1. 新建文件 file1,内容为 AAAA
  2. 为 file1 建立软连接 file1-s,对比两文件内容
  3. 为 file1 建立硬连接 file1-h,对比两文件内容
  4. 删除文件 file1 ,再查看文件 file1-s、file1-h 内容

2.2 方案

软连接与硬连接:

2.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:使用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)对比原始文件、软连接、硬连接的属性

[root@svr7 ~]# ls  -l  /root/f0*.txt
-rw-r--r--. 2 root root 14 Jan  6 12:14 file1-h
lrwxrwxrwx. 1 root root 12 Jan  6 12:16 file1-s -> file1
-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  -l  /root/f0*.txt
-rw-r--r--. 2 root root 14 Jan  6 12:14 file1-h
lrwxrwxrwx. 1 root root 12 Jan  6 12:16 file1-s -> file1
-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/

3 案例3:man手册、zip备份

3.1 问题

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

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

3.2 方案

zip/unzip压缩与解压缩:

3.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:使用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

4 案例4:自定义yum软件仓库

4.1 问题

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

  1. 创建目录 /var/www/html/dvd
  2. 挂载 CentOS7-1804.iso 到上述目录

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

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

4.2 方案

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

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

4.3 步骤

实现此案例需要按照如下步骤进行。

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

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

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

2)挂载 CentOS7-1804.iso 到上述目录

[root@room9pc13 ~]# vim  /etc/fstab
.. ..
/iso/CentOS7-1804.iso  /var/www/html/dvd  iso9660  loop,ro  0  0
[root@room9pc13 ~]# mount  -a

3)确认部署结果

[root@room9pc13 ~]# ls  /var/www/html/dvd/
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 

5 案例5:发布及测试yum仓库

5.1 问题

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

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

5.2 方案

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

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

5.3 步骤

实现此案例需要按照如下步骤进行。

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

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

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

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

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

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

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

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

1)添加新的yum仓库设置

[root@pc207 ~]# vim  /etc/yum.repos.d/new.repo
[dvd]
name = CentOS Server
baseurl = http://192.168.4.254/dvd
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
dvd                  CentOS Server                      4620
.. ..

6 案例6:vim效率操作

6.1 问题

本例要求掌握使用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 中设置显示行号查看效果

6.2 方案

命令模式常用操作:

末行模式常用操作:

6.3 步骤

实现此案例需要按照如下步骤进行。

步骤一: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 ,确认后保存并退出编辑器。

7 案例7:编译安装软件包

7.1 问题

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

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

7.2 方案

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

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

7.3 步骤

实现此案例需要按照如下步骤进行。

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

[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