作业-第07周--课堂-Day29-diff、apm、yum。chattr

Day29 课堂作业

1. diff/vimdiff:比较两个文件区别

diff/vimdiff命令的功能说明

diff命令用于比较两个文件内容的不同点,vimdiff是图形化显示,这两个命令类似于vivim一样。

diff/vimdiff命令的语法格式

diff/vimdiff [OPTION]... FILES...
diff/vimdiff [参数选项] [两个文件]

diff/vimdiff命令的选项说明

diff/vimdiff 选项不常用,就不细说了:

diff/vimdiff命令的实践操作

范例1: 备份 /etc/passwd,然后修改源文件,然后通过 diff/vimdiff 命令进行比较

--------------------------------------------------------------
==>备份/etc/passwd<==
--------------------------------------------------------------
[root@oldboyedu  ~]# cp /etc/passwd{,.ori}

--------------------------------------------------------------
==>源文件/etc/passwd添加内容<==
---------------------------------------------------------------
[root@oldboyedu  ~]# echo 'test' >> /etc/passwd

--------------------------------------------------------------
==>查看/etc/passwd添加的内容<==
--------------------------------------------------------------
[root@oldboyedu  ~]# tail -1 /etc/passwd
test

--------------------------------------------------------------
==>比较不同(也可以将两个文件分开写,要有空格)<==
--------------------------------------------------------------
[root@oldboyedu  ~]# diff /etc/passwd{,.ori}
25d24
< test

--------------------------------------------------------------
==>25行有新加的test<==
--------------------------------------------------------------
[root@oldboyedu  ~]# grep -n  -B3 'test' /etc/passwd
22-tcpdump:x:72:72::/:/sbin/nologin
23-nginx:x:1001:1001::/home/nginx:/sbin/nologin
24-ntp:x:38:38::/etc/ntp:/sbin/nologin
25:test

--------------------------------------------------------------
==>24行后,无内容,(过滤的内容实际而定)<==
--------------------------------------------------------------
[root@oldboyedu  ~]# grep -n  -A10 'tcpdump' /etc/passwd.ori 
22:tcpdump:x:72:72::/:/sbin/nologin
23-nginx:x:1001:1001::/home/nginx:/sbin/nologin
24-ntp:x:38:38::/etc/ntp:/sbin/nologin

使用vimdiff效果如下图所示:(vimdiff /etc/passwd /etc/passwd.ori)

备份好处:
1、误操作可以快速恢复。
2、可以比较增加的内容、进行检查。

2. rpm:安装rpm包工具

rpm命令的功能说明

rpm命令全称是Red Hat Package Manager(Red Hat包管理器),几乎所有的Linux发行版本都使用这种形式的命令管理、安装、更新和卸载软件。概括地说,rpm命令有五种基本功能(不包括创建rpm包):安装、卸载、升级、查询和验证。

rpm命令的语法格式

rpm {--setperms|--setugids} PACKAGE_NAME ...
rpm [参数选项] [包名]

rpm命令的选项说明

rpm 选项很多,表1为 rpm 命令的参数及说明:

表1: rpm命令的参数及说明

参数选项 解释说明(带※的为重点)
-a 查询所有套件。※
-b<完成阶段><套件档>+或-t <完成阶段><套件档>+ 设置包装套件的完成阶段,并指定套件档的文件名称。
-c 只列出组态配置文件,本参数需配合"-l"参数使用。
-d 只列出文本文件,本参数需配合"-l"参数使用。
-e<套件档>或--erase<套件档> 删除指定的套件。※
-f<文件>+ 查询拥有指定文件的套件。※
-h或--hash 套件安装时列出标记。※
-i 显示套件的相关信息。※
-i<套件档>或--install<套件档> 安装指定的套件档。
-l 显示套件的文件列表。※
-p<套件档>+ 查询指定的RPM套件档。※
-q 使用询问模式,当遇到任何问题时,rpm指令会先询问用户。※
-R 显示套件的关联性信息。※
-s 显示文件状态,本参数需配合"-l"参数使用。
-U<套件档>或--upgrade<套件档> 升级指定的套件档。
-v 显示指令执行过程。※
-vv 详细显示指令执行过程,便于排错。
-addsign<套件档>+ 在指定的套件里加上新的签名认证。
--allfiles 安装所有文件。
--allmatches 删除符合指定的套件所包含的文件。
--badreloc 发生错误时,重新配置文件。
--buildroot<根目录> 设置产生套件时,欲当作根目录的目录。
--changelog 显示套件的更改记录。
--checksig<套件档>+ 检验该套件的签名认证。
--clean 完成套件的包装后,删除包装过程中所建立的目录。
--dbpath<数据库目录> 设置欲存放RPM数据库的目录。
--dump 显示每个文件的验证信息。本参数需配合"-l"参数使用。
--excludedocs 安装套件时,不要安装文件。
--excludepath<排除目录> 忽略在指定目录里的所有文件。
--force 强行置换套件或文件。
--ftpproxy<主机名称或IP地址> 指定FTP代理服务器。
--ftpport<通信端口> 设置FTP服务器或代理服务器使用的通信端口。
--help 在线帮助。
--httpproxy<主机名称或IP地址> 指定HTTP代理服务器。
--httpport<通信端口> 设置HTTP服务器或代理服务器使用的通信端口。
--ignorearch 不验证套件档的结构正确性。
--ignoreos 不验证套件档的结构正确性。
--ignoresize 安装前不检查磁盘空间是否足够。
--includedocs 安装套件时,一并安装文件。
--initdb 确认有正确的数据库可以使用。
--justdb 更新数据库,当不变动任何文件。
--nobulid 不执行任何完成阶段。
--nodeps 不验证套件档的相互关联性。
--nofiles 不验证文件的属性。
--nogpg 略过所有GPG的签名认证。
--nomd5 不使用MD5编码演算确认文件的大小与正确性。
--nopgp 略过所有PGP的签名认证。
--noorder 不重新编排套件的安装顺序,以便满足其彼此间的关联性。
--noscripts 不执行任何安装Script文件。
--notriggers 不执行该套件包装内的任何Script文件。
--oldpackage 升级成旧版本的套件。
--percent 安装套件时显示完成度百分比。
--pipe<执行指令> 建立管道,把输出结果转为该执行指令的输入数据。
--prefix<目的目录> 若重新配置文件,就把文件放到指定的目录下。
--provides 查询该套件所提供的兼容度。
--queryformat<档头格式> 设置档头的表示方式。
--querytags 列出可用于档头格式的标签。
--rcfile<配置文件> 使用指定的配置文件。
--rebulid<套件档> 安装原始代码套件,重新产生二进制文件的套件。
--rebuliddb 以现有的数据库为主,重建一份数据库。
--recompile<套件档> 此参数的效果和指定"--rebulid"参数类似,当不产生套件档。
--relocate<原目录>=<新目录> 把本来会放到原目录下的文件改放到新目录。
--replacefiles 强行置换文件。
--replacepkgs 强行置换套件。
--requires 查询该套件所需要的兼容度。
--resing<套件档>+ 删除现有认证,重新产生签名认证。
--rmsource 完成套件的包装后,删除原始代码。
--rmsource<文件> 删除原始代码和指定的文件。
--root<根目录> 设置欲当作根目录的目录。
--scripts 列出安装套件的Script的变量。
--setperms 设置文件的权限。
--setugids 设置文件的拥有者和所属群组。
--short-circuit 直接略过指定完成阶段的步骤。
--sign 产生PGP或GPG的签名认证。
--target=<安装平台>+ 设置产生的套件的安装平台。
--test 仅作测试,并不真的安装套件。
--timecheck<检查秒数> 设置检查时间的计时秒数。
--triggeredby<套件档> 查询该套件的包装者。
--triggers 展示套件档内的包装Script。
--verify 此参数的效果和指定"-q"参数相同。
--version 显示版本信息。
--whatprovides<功能特性> 查询该套件对指定的功能特性所提供的兼容度。
--whatrequires<功能特性> 查询该套件对指定的功能特性所需要的兼容度。

rpm命令的实践操作

范例1: 安装软件

[root@oldboyedu /mnt/Packages] rpm -hvi dejagnu-1.4.2-10.noarch.rpm 
警告:dejagnu-1.4.2-10.noarch.rpm: V3 DSA 签名:NOKEY, key ID db42a60e
准备...           
########################################### [100%]显示软件安装信息

范例2: 其它演示

[root@oldboyedu /mnt/Packages]# rpm -ivh dos2unix-6.0.3-7.el7.x86_64.rpm 
Preparing...                          ################################# [100%]
    package dos2unix-6.0.3-7.el7.x86_64 is already installed
[root@oldboyedu /mnt/Packages]# rpm -qa|grep tree
tree-1.6.0-10.el7.x86_64
[root@oldboyedu /mnt/Packages]# rpm -qa tree
tree-1.6.0-10.el7.x86_64
[root@oldboyedu ~]# rpm -ql tree
/usr/bin/tree
/usr/share/doc/tree-1.6.0
/usr/share/doc/tree-1.6.0/LICENSE
/usr/share/doc/tree-1.6.0/README
/usr/share/man/man1/tree.1.gz
[root@oldboyedu ~]# rpm -qf /sbin/ifconfig 
net-tools-2.0-0.24.20131004git.el7.x86_64

3. yum:安装工具

yum命令的功能说明

yumYellow dog Updater,Modified)是一个在FedoraRedHat以及SUSE中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载,安装。百胜提供了查找,安装,删除某一个,一组甚至全部软件包的命令,而且命令简洁而又好记。

yum命令的语法格式

yum [options] [command] [package ...]
yum [参数选项] [包名]

  • 选项: 可选,选项包括-h(帮助; -y(当安装过程提示选择全部为“是”); -q(不显示安装的过程)等等。
  • 命令: 要进行的操作。
  • 封装: 操作的对象。

yum命令的选项说明

yum 选项上面已经简单介绍了,下面介绍一下百胜常用命令:

  • 1.列出所有可更新的软件清单命令:yum check-update
  • 2.更新所有软件命令:yum update
  • 3.仅安装指定的软件命令:yum install
  • 4.仅更新指定的软件命令:yum update
  • 5.列出所有可安装的软件清单命令:yum list
  • 6.删除软件包命令:yum remove
  • 7.查找软件包命令:yum search
  • 8.清除缓存命令:
    yum clean package:清除缓存目录下的软件包
    yum clean headers:清除缓存目录下的标题
    yum clean oldheaders:清除缓存目录下旧的标题
    yum cleanyum clean all(= yum clean package; yum clean oldheaders):清除缓存目录下的软件包及旧的header

yum命令的实践操作

范例1: 列出包组名,并安装

[root@oldboyedu ~]# yum grouplist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
base                                                        | 3.6 kB  00:00:00     
Available Environment Groups:
   Minimal Install
   Compute Node
   Infrastructure Server
   File and Print Server
 
[root@oldboyedu ~]# yum groupinstall "File and Print Server"

范例2: 显示tree命令包信息,和安装(前提:知道包名)

[root@oldboyedu ~]# yum list tree
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Installed Packages
tree.x86_64                                1.6.0-10.el7                                @base
[root@oldboyedu ~]# yum install tree -y

范例3: 根据命令或者配置等的路径查属于哪个包

[root@oldboyedu ~]# yum provides /etc/my.cnf
[root@oldboyedu ~]# yum provides /sbin/ifconfig

范例4: 安装pam-devel

[root@oldboyedu ~]# yum install pam-devel
设置安装过程
解析包安装参数
解决依赖性<==先检查软件的属性相依问题
- >运行事务检查
--->包pam-devel.i386 0:0.99.6.2-4.el5设置为更新
- > Processing Dependency:pam = 0.99.6.2-4.el5 for package:pam-devel
- >运行事务检查
--->包pam.i386 0:0.99.6.2-4.el5设置为更新
filelists.xml.gz 100%| ========================= | 1.6 MB 00:05
filelists.xml.gz 100%| ========================= | 138 kB 00:00-
>完成的依赖性解决方案......(省略)

搭建yum源

1、国内yum源

网易(163)yum源是国内最好的yum源之一,无论是速度还是软件版本,都非常的不错。
yum源设置为163 yum,可以提升软件包安装和更新的速度,同时避免一些常见软件版本无法找到。

安装步骤

a、首先备份/etc/yum.repos.d/CentOS-Base.repo

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

b、下载对应版本repo文件,放入/etc/yum.repos.d/(操作前请做好相应备份)

  • CentOS5http://mirrors.163.com/.help/CentOS5-Base-163.repo
  • CentOS6http://mirrors.163.com/.help/CentOS6-Base-163.repo
  • CentOS7http://mirrors.163.com/.help/CentOS7-Base-163.repo
[root@oldboyedu  ~]# cd /etc/yum.repos.d/
[root@oldboyedu  /etc/yum.repos.d]# wget http://mirrors.163.com/.help/CentOS7-Base-163.repo

c、运行以下命令生成缓存

[root@oldboyedu  ~]# yum clean all

[root@oldboyedu  ~]# yum makecache

除了网易之外,国内还有其他不错的yum源,比如中科大和搜狐。中科大的yum源,安装方法查看:https://lug.ustc.edu.cn/wiki/mirrors/help/centossohuyum源安装方法查看:http://mirrors.sohu.com/help/centos.html

2、配置本地百胜仓库

演示如下:

--------------------------------------------------------------
==>挂载CentOS ISO镜像,然后挂载到/mnt目录下<==
--------------------------------------------------------------
[root@oldboyedu  ~]# mount /dev/cdrom /mnt
mount: /dev/sr0 is write-protected, mounting read-only

--------------------------------------------------------------
==>进入下面目录,查看一下<==
--------------------------------------------------------------
[root@oldboyedu  ~]# cd /etc/yum.repos.d/
[root@oldboyedu  /etc/yum.repos.d]# ls
CentOS7-Base-163.repo    CentOS-Debuginfo.repo  CentOS-Sources.repo
CentOS-Base.repo.backup  CentOS-fasttrack.repo  CentOS-Vault.repo
CentOS-CR.repo           CentOS-Media.repo      epel.repo

--------------------------------------------------------------
==>创建一个目录repo(名称随意)<==
--------------------------------------------------------------
[root@oldboyedu  /etc/yum.repos.d]# mkdir repo

--------------------------------------------------------------
==>将所有文件移动到repo下<==
--------------------------------------------------------------
[root@oldboyedu  /etc/yum.repos.d]# mv *.rep* repo/
[root@oldboyedu  /etc/yum.repos.d]# ls
repo

--------------------------------------------------------------
==>然后将CentOS-Media.repo 再移动回来<==
--------------------------------------------------------------
[root@oldboyedu  /etc/yum.repos.d]# mv repo/*M* .
[root@oldboyedu  /etc/yum.repos.d]# ls
CentOS-Media.repo  repo

--------------------------------------------------------------
==>编辑此文件<==
--------------------------------------------------------------
[root@oldboyedu  /etc/yum.repos.d]# vim CentOS-Media.repo 

--------------------------------------------------------------
==>改变的内容如下<==
--------------------------------------------------------------
name=CentOS-$releasever - Media
baseurl=file:///1
gpgcheck=0
enable=1

--------------------------------------------------------------
==>执行以下命令,完事<==
--------------------------------------------------------------
[root@oldboyedu  ~]# yum clean all
[root@oldboyedu  ~]# yum makecache

小结: Linux系统如何安装软件?

1、rpm安装
简单 快。依赖多,解决依赖困难繁琐。

2、yum安装
简单快,自动解决依赖。不能选择软件版本或软件存放路径。

3、编译安装(源码编译)
慢 复杂 需要GCC编译器,可以自定义安装(版本、软件路径)

4、将源码制作成rpm,然后放到yum仓库,实现yum自动安装。
一次性慢 复杂,安装快,可以自定义安装(版本、软件路径)

4. chattr:改变文件属性

chattr命令的功能说明

chattr命令用于改变文件属性。这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式:

  • a:让文件或目录仅供附加用途。
  • b:不更新文件或目录的最后存取时间。
  • c:将文件或目录压缩后存放。
  • d:将文件或目录排除在倾倒操作之外。
  • i:不得任意更动文件或目录。
  • s:保密性删除文件或目录。
  • S:即时更新文件或目录。
  • u:预防意外删除。

chattr命令的语法格式

chattr [ -RVf ] [ -v version ] [ mode ] files...

chattr [-RV] [-v<版本编号>] [+/-/=<属性>] [文件或目录...]

chattr命令的选项说明

chattr 参数有几个,表1为 chattr 命令的参数及说明:

表1: chattr命令的参数及说明

参数选项 解释说明
-R 递归处理,将指定目录下的所有文件及子目录一并处理。
-v<版本编号> 设置文件或目录版本。
-V 显示指令执行过程。
+<属性> 开启文件或目录的该项属性。
-<属性> 关闭文件或目录的该项属性。
=<属性> 指定文件或目录的该项属性。

chattr命令的实践操作

范例1:chattr命令防止系统中某个关键文件被修改:

[root@oldboyedu ~]# chattr +i /etc/resolv.conf
[root@oldboyedu ~]# lsattr /etc/resolv.conf      <-->lsattr显示文件属性(后面会讲)
----i-------- /etc/resolv.conf
[root@oldboyedu ~]# chattr +i /etc/passwd  #<==锁定文件不能删除,不能修改
[root@oldboyedu ~]# lsattr /etc/passwd
----i----------- /etc/passwd
[root@oldboyedu ~]# lsattr /etc/hosts
---------------- /etc/hosts
[root@oldboyedu ~]# cp /etc/passwd{,.ori}
[root@oldboyedu ~]# rm -f /etc/passwd
rm: cannot remove ‘/etc/passwd’: Operation not permitted
[root@oldboyedu ~]# echo ddd > /etc/passwd
-bash: /etc/passwd: Permission denied
[root@oldboyedu ~]# useradd littleboy
useradd: cannot open /etc/passwd
[root@oldboyedu ~]chattr -i /etc/passwd  #<==解锁文件。

范例2: 让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件:

[root@oldboyedu ~]# chattr +a oldboy.txt 
[root@oldboyedu ~]# rm -f oldboy.txt 
rm: cannot remove ‘oldboy.txt’: Operation not permitted
[root@oldboyedu ~]# echo dddd >>oldboy.txt 
[root@oldboyedu ~]# echo dddd >>oldboy.txt 

5. lsattr:显示文件属性

lsattr命令的功能说明

lsattr命令用于显示文件属性。用chattr执行改变文件或目录的属性,可执行lsattr指令查询其属性。

lsattr命令的语法格式

lsattr [ -RVadv ] [ files... ]
lsattr [-adlRvV] [文件或目录...]

lsttr命令的选项说明

lsattr 参数有几个,表1为 lsattr 命令的参数及说明:

表1: lsattr命令的参数及说明

参数选项 解释说明
-a 显示所有文件和目录,包括以"."为名称开头字符的额外内建,现行目录"."与上层目录".."。
-d 显示,目录名称,而非其内容。
-l 此参数目前没有任何作用。
-R 递归处理,将指定目录下的所有文件及子目录一并处理。
-v 显示文件或目录版本。
-V 显示版本信息。

lsattr命令的实践操作

范例1:chattr命令防止系统中某个关键文件被修改,然后用lsattr查看

[root@oldboyedu ~]# chattr +i /etc/passwd  #<==锁定文件不能删除,不能修改
[root@oldboyedu ~]# lsattr /etc/passwd
----i----------- /etc/passwd
[root@oldboyedu ~]# lsattr /etc/hosts
---------------- /etc/hosts

你可能感兴趣的:(作业-第07周--课堂-Day29-diff、apm、yum。chattr)