文件查询、yum安装等零散知识点总结

归纳重要知识点:文件查询、Linux配置文件、文件的压缩与归档、yum安装包文件

  这篇博客介绍以前遗落的重要知识点进行归纳总结,分为四大块:文件查询命令、全局与个人配置文件、文件的压缩与归档、yum命令安装程序包的相关条件与操作。下面结合个人理解与学习内容一一进行总结。

    一.文件查询命令locate与find

  众所周知,linux系统的一切都是由文件所构成的,众多的文件构成了这样庞大的操作系统,即使有文件系统进行管理,所包含的文件也是大量的。在实际生产环境中,为了快速的查找相关的文件,需要一款查询命令为用户方便使用。这里介绍两个最常用的:locate与find。这两个命令各有优缺点,下面进行分别介绍。

  1.locate命令

  首先我们使用locate命令查找一个文件:

[root@localhost ~]# locate passwd
/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/etc/security/opasswd
/root/etc/passwd
/root/etc/passwd-
/root/etc/etc/passwd
...
/usr/share/man/zh_CN/man1/gpasswd.1.gz
/usr/share/man/zh_CN/man8/chpasswd.8.gz
/usr/share/man/zh_TW/man8/chpasswd.8.gz
/usr/share/vim/vim74/ftplugin/passwd.vim
/usr/share/vim/vim74/syntax/passwd.vim

  可以看到,找到了一堆,只要是包含passwd的文件或者目录,就给与匹配,所以locate只是模糊匹配,并不能进行精确查找。

  如此看来,locate的实用性并不太高,但是执行命令时,我们发现执行速度飞快无比,几乎是立即给出了结果。这是为什么呢?原来locate并不是在整个系统中一个一个扫描文件,而是查询一个文件:/var/lib/mlocate/mlocate.db。这个文件实际上是locate命令的数据库,每隔一段时间,系统会自动更新这个数据库,更新的时间是比较长的。所以locate查询文件并不是实时进行的。一般是查询不到刚刚建立的文件的。

  当然我们可以手动进行更新locate数据库,使用updatedb命令即可。下面列出locate可以接的选项:

  -i:区分大小写(默认不区分)

  -n #:只列举前#个匹配文件

  2.find命令的使用

  同样查找passwd文件,使用find

[root@localhost ~]# find /etc/ -name passwd
/etc/passwd
/etc/pam.d/passwd

  可以看到,find命令加上筛选范围/etc,按名称筛选方式,查到了基名为passwd的文件。所以find命令属于精确匹配文件。但与locate的查找速度相比,显得慢多了。

  find命令格式:find [options] [查找路径] [查找方式] [处理操作]。查找路径不必说,下面介绍查找方式的选择与处理操作的步骤。

  [查找方式]:

    -name:按文件名查找

    -user:按照属主查找

    -group:按照属组查找

    -nouser:查找无属主文件

    -nogroup:查找无属组文件

    -uid:根据UID查找文件

    -gid:根据GID查找文件

    -type TYPE:根据文件类型查找文件

    -size [+|-]#(单位K,M,G):根据文件大小进行查找。#表示找固定大小#的文件,+#表示内容大于#的文件,-#表示文件大小大等于0小等于#的文件

    -atime(单位:天)-amin(单位:分钟) [+|-]#:根据最后访问文件时间查询,+#代表#(天/分钟)之前,-#表示#(天/分钟)之内。

    -mtime(单位:天)-mmin(单位:分钟) [+|-]#:根据最后更改文件时间查询,+#代表#(天/分钟)之前,-#表示#(天/分钟)之内。

    -ctime(单位:天)-cmin(单位:分钟) [+|-]#:根据最后元数据更改时间查询,+#代表#(天/分钟)之前,-#表示#(天/分钟)之内。

    -perm [/|-]mode:根据文件权限查找,后面接八进制权限。比如:find / -perm 644表示查询所有根目录下权限为644的文件。/mode表示选取u,g,o三类用户满足其中一类用户权限就行,比如find / -perm /022表示寻找根目录下满足g权限有w或者o权限有w的文件就行,u=0所以不做条件筛选。-mode则刚好相反,find / -perm -022表示必须选取g有w,并且o权限同时有w的文件。举例说明:

[root@localhost testdir]# ll
total 4
-rw-rw-r--+ 1 root root 0 Aug 24 16:25 f1
-----w--w-. 1 root root 0 Aug 24 21:50 wangbadan
drwxr-xr-x. 2 root root 6 Aug 24 17:05 xx
-rw--w--w-. 1 root root 0 Aug 25 10:51 yy

[root@localhost testdir]# find /testdir/ -perm 022
/testdir/wangbadan

[root@localhost testdir]# find /testdir/ -perm /022
/testdir/f1
/testdir/wangbadan
/testdir/yy

[root@localhost testdir]# find /testdir/ -perm -022
/testdir/wangbadan
/testdir/yy

  以上各种查找条件都可以结合与或非-a,-o,!命令使用,来实现详细的查找文件功能。   

  [处理操作]:

  find命令最后可以加选项对查找到的文件执行操作,注意这里是将所有文件查找完毕后再一一执行。常用的有如下:

  -ls:相当于ls -l命令,显示所有文件长格式

  -print:结果显示至屏幕上,系统默认此选项

  -delete:删除所有找到文件

  -fls file:将所有文件的长格式信息保存至指定file中

  下面两个比较实用-ok与-exec:

  -ok command {} 、;对找到的每个文件执行command命令,{}代表文件,、;属于固定格式。但是-ok执行前都要询问是否执行,比较麻烦,如果不想要此步骤,将-ok换成-exec即可。下面举例说明:

[root@localhost testdir]# find /testdir/ -name f1 -ok mv {} {}.sh \;
< mv ... /testdir/f1 > ? y
[root@localhost testdir]# ls
f1.sh  wangbadan  xx  yy

 上面命令查找/testdir目录下的名为f1文件,找到后在原有名字后加上.sh变成f1.sh。

    二.文件的压缩与归档

  首先讲文件压缩,为什么需要压缩文件这个概念?简单的来说就是使用cpu的时间换存储设备的空间,达到更好的传输存储文件的作用。一般的压缩文件名字后缀都有特定格式,比如.z .gz .bz2 .xz等,下面来一一介绍。

  1.文件的压缩与解压缩命令

  compress file压缩文件生成的压缩文件后缀.z。 uncompress file.Z解压缩文件。这种命令压缩比太小,比较古老,如今已经被淘汰。

  gzip file压缩文件生成的后缀.gz。 gunzip file.gz解压缩文件。作为目前最主流的压缩格式

  bzip2 file压缩文件生成的后缀.bz2。 bunzip2 file.bz2解压缩文件。压缩比比gzip稍好

  xz file压缩文件生成的后缀.xz。 unxz file.xz解压缩文件,压缩比很有效,最牛逼

  

  这里我们注意,压缩文件之后,原文件就会删除,解压之后,原文件恢复,压缩文件会删除。如果想要保留原文件,可以使用-k选项:xz -k file。

  -#(数字)选项可以指定压缩比,默认为6,最大为9。

  -c选项可以将压缩结果输出至标准输出中:gzip -c file > /PATH/TO/SOMEFILE.gz ,也就是将压缩结果输出至一个.gz文件中,使用cat看到的是压缩后的内容,zcat可以看到原内容。

[root@localhost testdir]# ll
total 16
-rw-rw-r--+ 1 root root 48 Aug 25 11:50 f1.gz
-----w--w-. 1 root root 18 Aug 25 11:50 wangbadan
drwxr-xr-x. 2 root root  6 Aug 24 17:05 xx
-rw--w--w-. 1 root root 30 Aug 25 11:49 yy
[root@localhost testdir]# gzip -c wangbadan >> f1.gz 
[root@localhost testdir]# cat f1.gz                                                             ÿj¾WwangbadanKKK,njͪHLͫNͫ͏აÿj¾WwangbadanKKK,njͪHLͫNͫ͏აВ
[root@localhost testdir]# zcat f1.gz 
ffapigjpagnsgnqon
ffapigjpagnsgnqon

  

  2.文件的归档处理

  归档就是将多个压缩文件打包成固定格式单个文件。一般使用tar命令进行归档处理。

  tar命令使用格式:tar [options] file1 file2…下面介绍选项:

  -c:创建归档

  -x:展开归档

  -f 路径:后接创建的归档文件名,一般后缀使用.tar。

[root@localhost testdir]# tar -c f1.gz f2.gz -f ff.tar
[root@localhost testdir]# ls
f1.gz  f2.gz  ff.tar  wangbadan  xx  yy

 -t 显示归档文件内容列表

[root@localhost testdir]# tar -tf ff.tar 
f1.gz
f2.gz

 创建归档并压缩,可以一步进行,使用-z选项:tar -zcf /PATH/TO/SOME_FILE.tar.gz  file1 file2…

[root@localhost testdir]# ls
f1  f2  f3
[root@localhost testdir]# tar -zcf ff.tar.gz f1 f2 f3
[root@localhost testdir]# ls
f1  f2  f3  ff.tar.gz

 -z选项只针对于.gz格式的压缩,-j针对于.bz2格式,-J针对于.xz格式。同时打开压缩的归档文件就使用tar -zxf /PATH/TO/SOME_FILE.tar.gz

[root@localhost testdir]# rm -f f1 f2 f3
[root@localhost testdir]# ls
ff.tar.gz
[root@localhost testdir]# tar -zxf ff.tar.gz 
[root@localhost testdir]# ls
f1  f2  f3  ff.tar.gz

  可以看到,归档压缩文件解压后原文件不会消失。

    三.系统配置文件

  Linux系统中有很多配置文件,在系统启动后,根据这些配置文件信息自动执行一些操作步骤。

  1.首先按功能划分,分为profile类与bashrc类。

  profile类配置文件:用于定义环境变量,执行一些命令与脚本。

  bashrc类配置文件:用于定义本地变量,定义别名与函数。

  

  2. 按照全局配置文件与个人配置文件划分。所谓全局,是针对所有用户生效,个人是针对当前系统用户生效

  全局配置文件:/etc/profile    /etc/profile.d/*.sh    /etc/bashrc

  个人配置文件:~/.bash_profile    ~/.bashrc 

  交互式与非交互式登录配置文件的读取顺序

  交互式:/etc/profile → /etc/profile.d/*.sh → ~/.bash_profile → ~/.bashrc → /etc/bashrc

  非交互式:~/.bashrc → /etc/bashrc → /etc/profile.d/*.sh

    四.yum仓库的创建与程序包的安装(包括源程序包安装)

  通过学习我们知道,rpm安装程序包时需要考虑各个程序包之间的互相依存关系,这对我们安装程序包是一个比较麻烦的存在。yum工具完美的解决了这个问题。比如我们安装一个程序包:

[root@localhost testdir]# yum install php 
Loaded plugins: fastestmirror, langpacks
base                                                                       | 3.6 kB  00:00:00     
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package php.x86_64 0:5.4.16-36.el7_1 will be installed
--> Processing Dependency: php-common(x86-64) = 5.4.16-36.el7_1 for package: php-5.4.16-36.el7_1.x
...
..
..
Installed:
  php.x86_64 0:5.4.16-36.el7_1                                                                    

Dependency Installed:
  httpd.x86_64 0:2.4.6-40.el7.centos            httpd-tools.x86_64 0:2.4.6-40.el7.centos          
  mailcap.noarch 0:2.1.41-2.el7                 php-cli.x86_64 0:5.4.16-36.el7_1                  
  php-common.x86_64 0:5.4.16-36.el7_1          

Complete!

 安装php成功。卸载也是一样:

[root@localhost testdir]# yum remove php
Loaded plugins: fastestmirror, langpacks
Resolving Dependencies
--> Running transaction check
---> Package php.x86_64 0:5.4.16-36.el7_1 will be erased
--> Finished Dependency Resolution

Dependencies Resolved

==================================================================================================
 Package           Arch                 Version                         Repository           Size
==================================================================================================
Removing:
 php               x86_64               5.4.16-36.el7_1                 @base               4.4 M

Transaction Summary
==================================================================================================
Remove  1 Package

Installed size: 4.4 M
Is this ok [y/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Erasing    : php-5.4.16-36.el7_1.x86_64                                                     1/1 
  Verifying  : php-5.4.16-36.el7_1.x86_64                                                     1/1 

Removed:
  php.x86_64 0:5.4.16-36.el7_1                                                                    

Complete!

  

  yum的使用非常简单,但这一切是基于yum仓库来实现的。什么是yum仓库?说白了就是一个配置文件,配置文件指明了连接外部或者本地的路径,这些路径指向的地方有大量rpm格式的程序包,这些程序包就是这个配置文件的仓库。仓库可以有多个,一般放在/etc/yum.repos.d/*.repo中。

  仓库配置文件的书写格式,下面举例:

[root@localhost yum.repos.d]# cat aa.repo 
name=jiaoshi
baseurl=http://10.1.0.1/cobbler/ks_mirror/7/
gpgcheck=0

  [base]表示仓库的ID,是仓库的唯一标识。name可以重复

  baseurl:仓库指向的外部或本地路径

  gpgcheck:表示是否对程序包进行检查,0表示不检查,1表示检查。如果检查,配置文件还要加上gpgkey=含有程序包key的路径。

  enabled:0表示不启用这个仓库,1表示启用这个仓库,如果不写默认为1

  

  如何创建一个yum仓库呢?使用createrepo [option] directory,指明路径下的配置文件,然后使用yum rpeolist查看是否在yum的仓库列表中即可。

  yum安装源文件包分三步:1.解压源程序包后执行./configure脚本,生成Makefile.in文件。2.使用make将源代码转换成二进制码。3.使用make install安装即可。

[root@localhost testdir]# ls
httpd-2.2.29.tar.bz2
[root@localhost testdir]# tar jxf httpd-2.2.29.tar.bz2 
[root@localhost testdir]# ls
httpd-2.2.29  httpd-2.2.29.tar.bz2
[root@localhost testdir]# cd httpd-2.2.29/
[root@localhost httpd-2.2.29]# ls
ABOUT_APACHE  CHANGES        httpd.dsp       libhttpd.dep  NOTICE            server
acinclude.m4  config.layout  httpd.mak       libhttpd.dsp  NWGNUmakefile     srclib
Apache.dsw    configure      httpd.spec      libhttpd.mak  os                support
build         configure.in   include         LICENSE       README            test
BuildAll.dsp  docs           INSTALL         Makefile.in   README.platforms  VERSIONING
BuildBin.dsp  emacs-style    InstallBin.dsp  Makefile.win  README-win32.txt
buildconf     httpd.dep      LAYOUT          modules       ROADMAP

[root@localhost httpd-2.2.29]# ./configure 
...
...
...
...
一大堆
configure脚本执行成功
[root@localhost httpd-2.2.29]# make
...
...
...
[root@localhost httpd-2.2.29]# make install
...
..
源程序包安装成功,可以启用http外部服务了!

   

原创文章,作者:mcgeewang,如若转载,请注明出处:http://www.178linux.com/39880

(0)
mcgeewangmcgeewang
上一篇 2016-08-26
下一篇 2016-08-26

相关推荐

  • Kickstart

    1、安装所需软件包  yum -y install createrepo mkisofs isomd5sum 上传centos6.9原始镜像内容 mkdir /mnt/centos   创建挂载目录 mount -o loop centos6.9 /mnt/centos   上传centos6.9镜像并且挂载至centos目录 mkdir /tmp/iso …

    2018-03-26
  • 何为正则表达式?

    何为正则表达式?   UNIX/Linux上有许多文本处理工具,其中最主要最重要要属grep、sed、和awk三种了,被称为文本处理三剑客。但是要完全认识他们的各种功能,则必须现在正则表达式及其元字符的使用上打好基础。 什么是正则表达式呢?正则表达式(regular expression,RE)是一种字符模式,用于在查找过程中匹配指定的字符。正则表…

    Linux干货 2016-08-16
  • 用户组和权限管理

    一、3A认证     Authentication:认证     Autherization:授权     Accoutiong|Audition:审计 二、用户user      linu…

    Linux干货 2016-08-04
  • do some test

    1、简述TCP三次握手四次挥手过程及各过程中客户端和服务器端的状态。     三次握手:         a(syn-send) -> send syn -> b(listen)         a(syn-send) <- receive …

    Linux干货 2016-06-12
  • N26-第七周作业-邢岩

    马哥门徒-N26-邢岩      今天看了一本书《运维前线:一线运维专家的运维方法、技巧与实践》,有一张运维全平台规划体系如下:      看完这张图,瞬间觉得自动化运维真的是很庞大精深,我只是在运维这片海洋的岸边,刚刚迈入一只脚步而已,究竟什么是山,什么是水,还不得而知。就让我化身一条小鱼,在这片…

    2017-03-11
  • 第六周-Vim、计划任务及Shell脚本练习

    一、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; cp /etc/rc.d/rc.sysinit /tmp vim /tmp/rc.sysinit 末行模式输入 :%s@^[[:space:]]\+@#&@g 二、复制/boot/grub/grub.co…

    Linux干货 2017-08-13