实验环境:为了进一步熟悉Linux服务器的配置文件,学会查看和编辑系统配置,管理员需要尽快掌握查看和检索文件内容的方法,以及在命令行界面中vi编辑器的使用方法,并能够对文档进行备份与恢复操作

步骤如下:

练习文件查看及检索操作

查看/etc/filesystems文件,确认当前系统支持的文件系统类型

[root@pd001 ~]# cat /etc/filesystems
xfs
ext4
ext3
ext2
nodev proc
nodev devpts
iso9660
vfat
hfs
hfsplus
*

分页查看/etc/services文件,了解各种服务默认使用的协议、端口号。

[root@pd001 ~]# more /etc/services
# /etc/services:
# $Id: services,v 1.55 2013/04/14 ovasik Exp $
#
# Network services, Internet style
# IANA services version: last updated 2013-04-10
#
# Note that it is presently the policy of IANA to assign a single well-known
# port number for both TCP and UDP; hence, most entries here have two entries
# even if the protocol doesn't support UDP operations.
# Updated from RFC 1700, ``Assigned Numbers'' (October 1994). Not all ports
# are included, only the more common ones.
#
# The latest IANA port assignments can be gotten from
# http://www.iana.org/assignments/port-numbers
# The Well Known Ports are those from 0 through 1023.
# The Registered Ports are those from 1024 through 49151
# The Dynamic and/or Private Ports are those from 49152 through 65535
#
# Each line describes one service, and is of the form:
#
# service-name port/protocol [aliases ...] [# comment]

tcpmux 1/tcp # TCP port service multiplexer
tcpmux 1/udp # TCP port service multiplexer
rje 5/tcp # Remote Job Entry
rje 5/udp # Remote Job Entry
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/tcp users
systat 11/udp users
daytime 13/tcp
daytime 13/udp
qotd 17/tcp quote
--More--(0%)

从/proc/meminfo文件中过滤出物理内存大小、空闲内存大小

[root@pd001 ~]# grep "MemFree" /proc/meminfo
MemFree: 76164 kB

练习备份与恢复操作

备份整个/etc目录树,制作成归档压缩包etc.tar.gz

[root@pd001 ~]# cd /
[root@pd001 /]# tar zcvf ect.tar.gz etc
etc/systemd/system/multi-user.target.wants/cups.service
etc/systemd/system/multi-user.target.wants/vdo.service
etc/systemd/system/multi-user.target.wants/rngd.service
etc/systemd/system/multi-user.target.wants/rsyslog.service
etc/systemd/system/multi-user.target.wants/tuned.service
etc/systemd/system/multi-user.target.wants/ModemManager.service
etc/systemd/system/multi-user.target.wants/sshd.service
etc/systemd/system/multi-user.target.wants/sysstat.service
.......//省略部分内容
[root@pd001 /]# ls -lh etc.tar.gz
-rw-r--r--. 1 root root 45 6月 28 15:52 etc.tar.gz

查看etc.tar.gz文件中包含的目录及文件列表

[root@pd001 /]# tar ztvf etc.tar.gz
-rw-r--r-- root/root 1552 2018-10-31 07:31 etc/systemd/system.conf
drwxr-xr-x root/root 0 2018-10-31 07:31 etc/systemd/user/
-rw-r--r-- root/root 1127 2018-10-31 07:31 etc/systemd/user.conf
-rw-r--r-- root/root 85064 2022-06-27 15:03 etc/ld.so.cache
drwxr-xr-x root/root 0 2014-06-10 12:03 etc/popt.d/
-rw-r--r-- root/root 970 2018-11-05 09:53 etc/yum.conf
-rw-r--r-- root/root 94 2017-03-25 00:39 etc/GREP_COLORS
drwxr-xr-x root/root 0 2022-06-27 15:00 etc/pkcs11/
drwxr-xr-x root/root 0 2017-08-05 07:36 etc/pkcs11/modules/
drwxr-xr-x root/root 0 2022-06-27 15:00 etc/ssl/
.......//省略部分内容

将etc.tar.gz文件恢复到/tmp目录下,确认后再删除/tmp/etc文件夹。

[root@pd001 /]# tar zxf etc.tar.gz -C /tmp
[root@pd001 /]# ls -ld /tmp/etc
drwxr-xr-x. 144 root root 8192 6月 28 16:29 /tmp/etc/


[root@pd001 /]# rm -rf /tmp/etc/
[root@pd001 /]# ls -ld /tmp/etc
ls: 无法访问/tmp/etc/: 没有那个文件或目录

练习vi编辑器的基本使用

通过“man man | col -b > man.txt”操作创建man命令的文本手册页,用vi编辑器打开man.txt文件,以此文件作为练习素材。

[root@pd001 /]# man man | col -b > man.txt
[root@pd001 /]# vi man.txt

man(1) General Commands Manual man(1)



NAME
man - 格式化并显示在线帮助手册页
manpath - 定义用户查找man手册页的路径


man [-acdfFhkKtwW] [-m 系统名] [-p <前处理程序>] [-C <配置文件>] [-M <路径>] [-P
<浏览方式>] [-S <区段清单>] [区段名称] 帮助主题 ...


man 格式化并显示在线帮助手册页面。此版本支持 MANPATH 和 (
man 将只查找在指定区段内的文档。你也可以通过命令行或环境变量来指定查找区段的顺序和
预定义将要执行的程序。如果主题中有“/”符号,则将其作为文件名的一部分处理 ,也就是说
你可以用 man ./foo.5 也可以用 man /cd/foo/bar.1.gz 来


-C 配
定义man.conf供使用;默认使用的是 /etc/man.config 。(参见 man.conf(5))

-M 路
定义一组查找man手册页的目录。如果没有指定此参数,系统环境变量 MANPATH将
符串表示使用默认清单。

-P 浏
定义浏览的方式。此选项将覆盖 MANPAGER 环境变量(此变量将覆盖 PAGER 变量。
若不指定 此参数,则使用 MANPAGER 或 PAGER 环境变量中的设置。此选项的预
设的显示方式为/usr/bin/less-is。

-S 区
该清单是一组用冒号分隔的欲查找的手册清单。此选项将覆盖 MANSECT 环境变量。有
些指令或程序可能有一个以上的主题,它们位于不同的区段中。因此,要查看较后的区
段,你可以在此指定 man 查找区段的顺序。具体区段划分如下所示:
区段1:用户指令
区段2:系统调用
区段3:程序库调用
区段4:设备
区段5:文件格式
区段6:游戏
区段7:杂项
区段8:系统指令
区段9:内核内部指令
区段n:Tcl或Tk指令

-a 默认情况下,man在显示完每一个所查到的man手册页时会自动退出程序。而使用此选项 ,
则可使man显示所有与此主题相匹配的手册页内容,而不仅仅是第一项。

-c 即使已存在最近已排版过的帮助文件(即以前曾查询过该主题的帮助文档),使用该参
数后仍会再次执行一次排版操作。此参数适用于已排版过的帮助文件已损坏或屏幕的行
列数有 改变时。

-d 不显示帮助文档的具体内容,只显示调试排错信息。

-D 既显示帮助文档内容,同时又显示调试排错信息。

-f 相当于运行whatis 的操作。即:显示工具指令与工具程序的简单说明。

-F" 或
只进行格式化操作,而不真正的显示出来。

-h 显示man的语法和参数说明,执行完成后退出程序。

-k 查当于使用 apropos 命令。

-K 在所有的帮助文件中查找包含有指定关键字的帮助文档。此操作可能很慢,所以在使用
此参数时最好配合-s 的参数来查找指定区段。(这只是一个粗略的概念,在作
者本人的机器上每分钟可查500个man文档。)

-m 系统名 定义所要查找的man文档所属的系统名。

-p 字串 定义在排版帮助文件这前所要执行的预处理程序的次序。不是所有的安装都有完
整预处理 程序组。一般有6个预处理程序,它们是:eqn(e)、grap(g)、pic(p)、tbl(t)
、vgrind(v)和 reger(r)。此参数将覆盖环境变量MANROFFSEQ。

-t 使用 /usr/bin/groff - Tps - mandoc 来排版man手册页,并输出到标准输出。从
/usr/bin/groff - Tpa - madoc 输出的内容可能需要某些其它过滤才能真正输出到
标准输出打印。

-w" 或
不显示帮助文档的具体内容而只显示相应帮助主题文件的位置。如果没有给定参数,则将
在标准输出显示一组由man所查到的相匹配的man 文档所在目录。如果命令manpath
是一个到man的链接,那么执行“manpath”就相当于执行“man --path”。

-W 相当于-w参数,但所显示的内容以分行方式显示。此参数方便其它指定或程序对其输出
做进一步处理,如: man -aW man | xargs ls -l

CAT页
Man 会试着对所查的文档进行保存,为的是便于下次使用此帮助页时可节约格式化时间。传
统上,被格式化的DIR/manX文档会被存储在DIR/catX中,但你可以在 /etc/man.config
配置文件中指定其它的目录。如果所需的cat目录不存在时,系统就不对格式化后的man文档进
行保存 。

对于使用man命令的人,man命令可能对其进行setuid的操作。因此,如果一个cat目录属于
man并且其模式是0755(只有man对其有写的权限),而且,cat文件也属于man和其模式是064
4或0444(只有man对其有写权限或根本就没有写权限),则普通用就不能更改cat文档页,也
不能在此目录中存放其它文件。而如果man没有执行setuid的操作,那么,为了能使所有用户
都能存放cat页到cat目录,则必须将这个cat目录设置成0777模式。

参数 -c 可以强制生成一个新的man页,既使已经有一个cat页存在。


MANPATH
如果 MANPATH 有定义,那么它的值将在查找man文档页时做为搜索路径来使用。

MANROFFSEQ
如果 MANROFFSEQ 有定义,则此变量的值将用来决定在nroff或troff执行前将要执行的
预处 理程序的次序。默认情况下,手册页会在nroff处理前选取进行表格处理。

MANSECT
如果 MANSECT 有定义,它的值将决定man有搜索时的查找区段。

MANWIDTH
如果MANWIDTH有定义,它的值将决定显示man手册页时的宽度。否则,将是以全屏的方式来
显示。

MANPAGER
如果 MANPAGER 有定义,它的值将指定用来显示man文档的程序。如果没有在此指定,那
么将 使用由PAGER变量指定的程序。如果还是没有指定,那么会默认使用/usr/bin/less
-is 。

LANG 如果 LANG 有定义,它的值将指定man在查找文档时首先查找的子目录。因此,命令
“LAN G=dk man 1 foo”会使man在查找man页时首先查找../dk/man1/foo.1,如果
在其中没有找到相关文档,则查找../man/foo.1,此目录是由查找路径指定的。

NLAPATH,
环境变量 NLAPATH 和 LC_MESSAGES (或当后一个不存在时使用 LANG )充当了定位文
档目录的 角色。(但英文信息是编译进命令的,所以针对英文而言,就没有目录存在)。注
意,象col
(1)这样被man调用的程序也使用象 LC_CTYPE 这样的变量。

PATH 变量 PATH 是在解释查找man手册页路径时使用的。

SYSTEM 变量 SYSTEM 是用来得到默认的系统名(用-m参数可以得到同样的效果)。


apropos(1),whatis(1),less(1),groff(1).


BUGS
选项 -t 只能使用在装有类troff程序的环境中。 如果在你的显示中出现高亮度的255或<AD>这样
的字符 而不是连字符,请在你的配置文件中 写入“LESSCHARSET=latin1”这样的环境变量。


如果你在你的 .emacs 文件中加入(global-set-key[(f1)](lambda()(interactive)(manuale
ntry(current-word))))这一行,则当你按F1键时会自动跳出当前鼠标指向的相应程序的man手册页。


[中


译者: 所罗门

[中
2003/05/13 第一版



September 2, 1995 man(1)

切换到末行模式,并输入“:set nu”命令显示行号

:set nu

Linux实验案例:检索、备份及编辑文件_帮助文档

将第六行的内容复制到第二行,并删除第二行以后的几个空行

先按“esc”键,将光标移到第六行,按两下小写的“y”复制

Linux实验案例:检索、备份及编辑文件_vi编辑器_02

将光标移到第二行,按大写的“P”粘贴

Linux实验案例:检索、备份及编辑文件_帮助文档_03

将光标移到空行,按两下小写的“d”删除

Linux实验案例:检索、备份及编辑文件_环境变量_04

在文件中查找“-K”字符串

在命令模式中,按/键后可以输入指定的字符串,按enter确定,从当前光标处开始向后进行查找。

Linux实验案例:检索、备份及编辑文件_帮助文档_05

将文件中的所有“man”字符串替换为“BENET”

:% S /man/BENET/g
57 substitutions on 33 lines

保存该文件后退出vi编辑器

:wq

:x

重新打开man.txt文件,只保留前五行,删除其余所有内容。

[root@pd001 ~]# vi man.txt
:set nu //显示行号

删除完成

Linux实验案例:检索、备份及编辑文件_帮助文档_06

复制/root/.bashrc文件到第五行,然后另存为 man2.txt文件。

:r /root/.bashrc

Linux实验案例:检索、备份及编辑文件_帮助文档_07

另存为

:w /root/man2.txt

打开man2.txt文件

[root@pd001 ~]# vi man2.txt

Linux实验案例:检索、备份及编辑文件_vi编辑器_08

使用vi修改系统配置

为/etc/sysconfig/network-scripts/ifcfg-enc33、/etc/issue文件做好备份,以便在必要时进行恢复。

[root@pd001 ~]# cp /etc/sysconfig/network-scripts/ifcfg-有线连接_1 aaa.file
[root@pd001 ~]# cp /etc/issue bbb.file
[root@pd001 ~]# ls
aaa.file anaconda-ks.cfg bbb.file initial-setup-ks.cfg lshelp.txt man2.txt man.txt
公共 模板 视频 图片 文档 下载 音乐 桌面

用vi编辑器打开/etc/sysconfig/network-scripts/ifcfg-ens33文件,查找包含“ONBOOT=no”字符串的行,并修改为“ONBOOT=yes”

[root@pd001 ~]# vi /etc/sysconfig/network-scripts/ifcfg-有线连接_1 
HWADDR=00:0C:29:9E:18:6D
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=192.168.136.3
PREFIX=24
GATEWAY=192.168.136.2
DNS1=202.96.128.86
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=$'\746\634\611\747\672\677\750\677\636\746\616\645 1'
UUID=8c5b85cc-5493-3e77-a387-fe1a9053adc4
ONBOOT=yes //ONBOOT=no改为ONBOOR=yes
AUTOCONNECT_PRIORITY=-999
~
~
~
~
~
~
~
~
~
"/etc/sysconfig/network-scripts/ifcfg-有线连接_1" 20L, 438C

用vi编辑器打开/etc/issue文件,删除其中的所有内容,添加一行新的文字“Windows Server 2016”(自定义)

[root@pd001 ~]# vi /etc/issue 

windows server 2016
~
~
~
~
~
~

:wq

根据备份文件恢复/etc/sysconfig/network-scipts/ifcfg-ens33、/etc/issue文件的内容

[root@pd001 ~]# cp -f /root/aaa.file /etc/sysconfig/network-scripts/ifcfg-有线连接_1
cp:是否覆盖"/etc/sysconfig/network-scripts/ifcfg-有线连接_1"? y
[root@pd001 ~]# cp -f /root/bbb.file /etc/issue
cp:是否覆盖"/etc/issue"? y