Linux笔记

时间:2024-03-05 08:27:35

Linux运维基础笔记整理

查找软件配置文件位置

rpm -qc 软件名

yum缓存

默认是: /var/cache/yum

也可以在 /etc/yum.conf 指定

cachedir=/var/cache/yum #存放目录
keepcache=1 #1为保存 0为不保存

metadata_expire=1800 #过期时间

2020年07月03日上午(day01)

一、Linux前景介绍

1.什么是运维?什么是linux?

Linux是IT技术行业的常青树、不倒翁

互联网公司   金融  信息  游戏  医药  期货  电商 

定一个小目标    毕业之后的薪资范围   

写一份决心书 

技术网站  博客园    ****  51cto   知乎  简书  discuz论坛 

https://www.increase93.com/  

2.课程:
第一阶段: 运维基础    很慢    25-30天    基础不牢,地动山摇!    半天 全天

第二阶段: 综合架构 慢  30-40天    架构述职   模拟面试 

第三阶段: Shell编程及代码上线  稍慢   10个全天  18-20半天  Shell就是最简单的开发语言更新业务版本 将开发          写好的新功能,进行交付给用户 

第四阶段: MySQL数据库+Redis+MongoDB+ELK   快    25天     数据库  + 日志管理

第五阶段: 网络基础+监控+云计算 Zabbix+Kvm+Docker+K8S    稍快  全天  15-18全天想拿高薪 

第六阶段: Python基础+就业指导   6天   运维开发  如何面试  

总周期  5个半月-6个半月  

二、什么是操作系统

1.基本含义:

简称OS   是计算机系统中必不可少的基础系统软件,是应用程序运行和用户操作必备的基础环境

操作系统就是一个人与计算机之间的中介    

2.组成方式:

操作系统的组成:   计算机的硬件 + 系统核心 内核 + 命令解释器 + 外围的应用程序

3.常见操作系统:

windows 系统    桌面系统

linux系统

Unix系统

Mac系统     是Unix的变体

三、什么是Linux

1.含义:

  类似于windows系统,Linux也是一个操作系统软件,但是他们的不同之处,windows是收费,不开源    主要应用于日常办公,游戏,娱乐    而Linux是一套开放源代码,并可以*传播类似于Unix的操作系统软件   多用户、多任务、多线程、多CPU的操作系统,主要用于企业环境

2.linux系统主要服务于 服务器端 嵌入式开发 个人PC桌面 三大领域

3.特点:
  
  开源的,可以*修改
      
  Unix系统兼容,具备了Unix的优秀特性
      
  可以*传播,没有商业版权之说
      
  适用于Intel等x86 CPU系列架构计算机

4.学习要求:
   
   >8G     16G内存    500G硬盘    i7   i5处理器
   
5.学习完linux,可以掌握哪些技术,可以适用于哪些公司
  
  基础运维能力    自动化运维   数据库运维   公有云运维    集群架构运维    代码发布    私有云运维    监控运维
   
  日常处理系统故障,解决问题能力

四、linux的历史

1.1969年 Unix诞生于贝尔实验室

2.1984年 ,Minix 谭宁邦  大学教授   应用于教学

3.1984 斯托曼  *软件之父  FSF   *软件基金会 GNU项目  GPL  通用公共许可协议   革奴计划

4.1991年   Linux内核   托瓦兹  Linux之父

5.1993年 linux内核加入了GPL协议   GNU Linux  出现了

6.Unix的优秀特性
  
  技术成熟,可靠性高
  
  极强的可伸缩性
  
  强大的网络功能
  
  强大的数据库支持能力
  
  强大的开发功能

五、Linux的核心概念

1.FSF
  
  *软件的核心就是没有商业化版权制约,源代码开发,可*传播
  
  运行  复制  发布  研究   修改

2.GPL 
    
    通用公共许可协议   开源许可协议            
    
    *的,可任意传播的
    
    可任意修改的,但是必须将修改之后的源代码发布出来  
3.GNU
    
    是FSF下面的一个项目    全称  GNU is  not Unix       
    
    优秀的软件: Emacs编辑器    gcc编译软件   bash命令解释器    gawk开发语言    hurd内核 还在研发
    
4.linux系统 == GNU项目的组件(gcc bash)+Linux内核+成千上万的开发者提供的软件      GNU Linux操作系统 

六、Linux的特点

1.特点:

  支持多用户 多任务 多线程  多CPU

  系统稳定性 安全性  可靠性高

  有完善的网络服务

  *开源的系统

  有大量的第三方应用程序免费使用

  多厂商支持

  有完善的数据库平台

  有完善的图形界面

  有完善的开发平台

2.Linux应用领域:

  IT服务器端   重中之重

  嵌入式开发

  个人PC桌面

七、Linux的发行版本

1.Linux内核     2.2   2.4  2.6  3.x       

  https://www.kernel.org/
2.发行版本:
    
    Redhat    红帽   开源但是收费          
    
    CentOS    学习使用      去掉了Redhat的收费和logo部分编译而成的系统    开源 免费  企业 首选      
              
    Fedora    新功能    想使用新功能  是Redhat的测试版本  预发布版         
    
    Ubuntu    乌班图    桌面系统   开发人员使用的多        
    
    SUSE     数据库高级服务及电子邮件    德国使用的多    收费     OpenSUSE       
    
    Debian、FreeBSD    对安全性要求比较高           中文      麒麟  红旗          

3.windows系统版本:        

个人  win98  win2000  winXP  win7  win8   win10            

企业:windowsserver 2003    2008   2012   2016    2019数据中心版         

CentOS版本    系统版本:    选择版本尽量选择双号
    5.x         2.4内核        6.x         2.6内核        7.x      学习 7.6     1810   3.10内核          8.x         

4.红帽认证:
 
  RHCSA   系统管理员 
  
  RHCE    工程师 
  
  RHCSS   安全员
  
  RHCA    架构师 

八、虚拟机的软件

1.意义:通过这款软件可以让你的电脑模拟出多台相对独立的虚拟PC设备,可以在这些PC设备上安装运行不同操作系统。

  这些操作系统跟真实的操作系统没有太大的差别 

  利用到一种互联网技术,虚拟化技术

2.虚拟机的软件都有哪些:
    
    VMware Workstations      #工作站版虚拟化软件,简单,易用,适合学习linux的人员   windows版        
    
    VMware Fusion            #适用于Mac的版电脑        
   
    Kvm/XEN                  #linux的虚拟化    到后期,会学习到       
    
    Virtual Box              #开源的虚拟化软件     开放源代码的         
    
3.为什么我们要用VMware去学习linux?  

    为了方便  简单  易用  没有太大的门槛   

九、32位和64位操作系统的区别

1. 设计的定位不同    

	64位操作系统就是为了高科技人员使用设计的,而32位操作系统是为普通用户设计的
	
2.安装的要求配置不同

	64位操作系统只能安装在64位的电脑上(CPU的处理器必须支持64位),32为操作系统可以安装在32位电脑上,也可以安装在64位电脑上
	
3.运算速度不同

	64位是32位运算速度的一倍
	
4. 寻址能力不同  

	支持的最大内存不同  
	 
	32位系统最大支持4G内存  3.5内存    2的32次方bit
	
	64位操作系统       寻址空间为2的64次方bit   21亿内存	

2020年07月03日下午(day01)

一、创建一个虚拟机

1.创建虚拟机的过程, ===   购买一台电脑 


2.网络类型的种类:    三种获取IP地址的方式  

(1)NAT 网络地址转换  

	NAT模式中的虚拟机是通过宿主机(物理电脑)进行上网和交换数据的  
	
	使用到网卡是VMnet8      VMware NAT Service服务就充当了一个路由器,虚拟机上网的时候首先会找到这个路由器,进行了一个地址转换,伪装了一个跟宿主机一样的IP地址   进行上网,  网络上的数据将返回给VMnet8这个网卡,VMnet8这块网卡会把数据返回给虚拟机  

	好处: 外面的网络可以随便更换,虚拟机的网络不变,IP地址也不会跟宿主机的IP地址冲突,IP的地址范围也广,设置一个网段  
	
	坏处: 上网需要经过一个中介  代理  

(2)桥接模式  Bridge  

	通过宿主机网卡架设了一座桥 网桥    直接进入到了实际的网络环境中    
	
	虚拟机的IP地址跟宿主机的IP地址在一个网段范围之内,容易跟宿主机IP发生冲突 

	IP地址会随着外面网络的改变而改变,不能使用一个固定的IP地址,IP少 

	优点: 上网不需要经过宿主机,只需要通过VMnet0 网卡 
	
	桥接模式中的虚拟机跟宿主机的层级是一样的
	
	

(3)仅主机模式  Host-only

	仅能跟宿主机进行连接,没有办法上网的   VMnet1


3.分区:三个分区  


/boot			#引导分区      大小给500-1024M


swap			#交换分区  虚拟内存      给物理内存的1-2倍     峰值   最大只能16G


/				#跟分区  系统分区  数据分区      剩余多少空间就给多少 


4.虚拟网络编辑器,只需要配置一次就可以了,不是每一个虚拟机都要配置一次虚拟网络编辑器

二、创建虚拟机过程

1.打开vmvare workstation 点击新建虚拟机

img

img

img

img

img

img

img

img

img

img

img

img

img

img

img

img

imgimg

2.虚拟机基础设置完成,开启此虚拟机,进行操作系统的安装

img

img

3.进行操作系统语言的设置,一般选择英文。

img

4.进行操作系统时间的设置

img

img

5.进行操作系统软件的相关安装

img

img

6.进行操作系统的分区配置

img

img

img

img

img

img

img

img

6.不开启内核崩溃转存技术

imgimg

7.进行网络参数配置

imgimgimgimgimg

8.相关参数配置完成,开始安装。

img

9.进行root密码设置

img

img

10.进行虚拟网络编辑器的配置

imgimg

11.查看vmnet8网卡ip地址 img

12.安装完成,重启

imgimg

2020年07月06日上午(day02)

一、虚拟机的快照

1.虚拟机的几种状态:

	开机状态    ===  运行状态 
	
	关机状态   
	
	挂起状态    ===  虚拟机不关机,但是你使用不了     定身术  
	
    快照就是虚拟机的某种状态   ===    月光宝盒   

2.快照分类:

	开机状态下的快照       占用资源多   拍摄快照速度慢  
	
	挂起状态的快照			占用资源稍多  拍摄快速度稍慢 
	
	关机状态的快照    		占用资源少, 拍摄速度快  
	
3.建议:
    
    要利用好快照,每天上课之前拍摄一个快照,快照能提高你的学习。

    快照不易过多,保留一部分快照,把一些不重要的快照删除    因为快照也是会占用资源的,大量占用你的磁盘空间 

QQ图片20200614194128

QQ图片20200614194135

QQ图片20200614194152

QQ图片20200614194157

QQ图片20200614194201

二、虚拟机的克隆

1.含义:克隆    通过宿主机创建一台跟宿主机一样的虚拟机  
	
  克隆可以基于宿主机当前状态或者某个快照进行克隆

  不能针对于开机和挂起状态下的主机或者快照进行克隆 

  宿主机只能在关机状态才能进行克隆操作

  只能针对于宿主机的关机状态下的快照进行克隆 

2.克隆的方法:

	链接克隆: 基于原始虚拟机的副本,占用磁盘空间少,克隆速度快,依赖于原始虚拟机,如果原始虚拟机出现问题,那么你的链接克隆的虚拟机也将不可用
	
	完整克隆: 是原始虚拟机的完整副本,相对完全独立的,不依赖于原始虚拟机 ,占用资源多,克隆速度慢  

  注:链接克隆的时候,选择虚拟机当前状态进行克隆,会给你创建一个新的当前状态下的快照  	

QQ图片20200614195517

QQ图片20200614195523

QQ图片20200614195528

QQ图片20200614195535

QQ图片20200614195540

QQ图片20200614195546

三、远程连接介绍

1.连接小知识:

  IP地址分为:    公网IP(全世界都可以访问,全网唯一)   私网IP(只能本地访问,本地网络唯一的)  

	192.168   本地电脑 本地网络  
	
	172.16-172.31     内网  IT技术人员使用  
	
	10.0-10.255		 IT技术人员使用  
	
  端口  数字端口    表示一个软件所对应的功能    使用端口来表示     1-65535   2的16次方 

  SSHD  ==  SSH    远程连接服务    22      80   HTTP服务    web界面提供访问的  


  协议    计算机之间互相通信要共同遵守的规则    协议      SSH协议    



  IP   		IP地址       找谁,在哪里  

  Port   		端口		  干什么,提供什么服务  

  Protocol	协议		  什么语言 什么通信方式  遵守什么规则 



2.需要用户和密码 

四、远程连接工具介绍

1.Xshell   

2.SecureCRT   

3.Putty

4.Mac系统  iterm2

五、远程工具xshell连接虚拟机

1.对xshell工具进行相关配置:

QQ图片20200614200556

QQ图片20200614200609

QQ图片20200614200615

QQ图片20200614200619

2.下载xftp,解压将文件夹复制到该目录,就可以在xshell界面启动xftp。

QQ图片20200614200629

3.进入虚拟机查看虚拟机ip,再进入xshell查看是否能ping通。

QQ图片20200614200641

QQ图片20200614200645

QQ图片20200614200651

QQ图片20200614200656

4.如果出现Telnet不是内部命令,运用下面方法解决问题。

QQ图片20200614200944

QQ图片20200614200948

5.进行虚拟机连接前xshell的准备

QQ图片20200614200954

QQ图片20200614201001

QQ图片20200614201005

QQ图片20200614201011

QQ图片20200614201016

QQ图片20200614201020

QQ图片20200614201025

QQ图片20200614201029

6.新建会话完成,开始连接。

QQ图片20200614201034

7.完成连接。

QQ图片20200614201123

六、远程连接不上主机

相关排错

1. 检查是否存在IP地址,IP地址是否输入错误 

2. 检查网卡是否启动  

3. 检查虚拟网络编辑器,是否配置正确  

4. 检查VMnet8网卡IP是否正确,是否启用

5. 检查VMware服务是否运行

6. 重启虚拟机或者重新配置虚拟网络编辑器 


	相关内容:services.msc

七、bash shell 介绍

1.什么是bash shell?

  是一个命令解释器   它在操作系统的最外面  

  负责用户与内核进行交互的一种接口   将用户输入的命令翻译给操作系统,并将处理后的结果输出到屏幕

2.bash shell作用: 

  实现对linux系统进行管理,包含: 

  文件管理     权限管理     用户管理     磁盘管理     网络管理     软件管理    等等	
	
3.Bash shell的执行方式

	命令方式    		效率低    适合少量的工作  
	
	脚本方式 			效率高    适合复杂的工作  

4.远程连接之后的命令行:

Last login: Wed Jun 10 19:50:59 2020 from 10.0.0.1
[root@sh-BC ~]#

八、命令行提示符介绍

1.[root@sh-BC ~]#   #超级管理员命令行提示符     #这一行字符表示什么意思  


[]			#没有什么特殊的含义   就是起到一个括号的作用  把里面的内容看做是一个整体  

root		#表示当前登录的用户    我是谁     root本身又是超级管理员  拥有最大的权限  

@			#分隔符

sh-BC		#主机名  系统主机名    可以修改,但是是唯一的  所有用户的主机名都是他  

~			#表示当前的所在位置   我在哪里  目录    ~ 本身表示当前用户的家目录    /root   /home/xx

#			#命令行结尾提示符    # 表示是超级管理员的命令行提示符   $  是普通用户命令行提示符 

2.[user@sh-BC ~]$   	#普通用户命令行提示符 

  注:Linux命令行提示符都是有PS1的变量所控制的  

3.#给命令行加上颜色

[root@sh-BC ~]# echo \'PS1="\[\e[37;40m\][\[\e[32;1m\]\u\[\e[37;40m\]@\h \[\e[36;40m\]\w\[\e[0m\]]\[\e[32;1m\]\\$ \[\e[0m\]"\' >>/etc/profile
[root@sh-BC ~]# source  /etc/profile

九、Linux命令组成结构

1.命令在命令行上面的操作语法:

	命令      [选项]      [参数/路径]

  command    options	 arguments
  
  注:中括号中的内容是可有可无的,不是必须要有的
  
  命令    #每个命令都有自己的功能   你要干什么   你要针对谁做些什么    最主要的,是整条命令的主体
  
  
  选项	#表示命令的其他的扩展功能    单独指定的命令的其他功能	 实现命令的具体功能 
  
  
  参数	#文件 目录   你要对谁操作    文件或者目录都是用路径来表示的
  
  
示例:

[root@sh-BC ~]# ls			#命令 		没有指定参数时,默认针对是当前所在目录  
anaconda-ks.cfg

[root@sh-BC ~]# ls -l		#命令+选项  
total 4
-rw-------. 1 root root 1497 Jun  9 20:00 anaconda-ks.cfg

[root@sh-BC ~]# ls -l /root	#命令+选项+参数
total 4
-rw-------. 1 root root 1497 Jun  9 20:00 anaconda-ks.cfg


[root@sh-BC ~]# ls /root		#命令+参数  
anaconda-ks.cfg


#选项:

以短横岗 “-”  短格式选项  单个字符   例如:  -l

以长横岗 “--”  长格式选项  多个一组字符  例如: --all   这组字符串是一个整体 有些特殊含义 

多个短横岗  指定多个功能    -a  -l  -i    ====  -ali   使用一个短横岗  


注意:

	1. 中括号表示可选,命令的选项和参数是可选的,不是必须要有的
	
	2. 选项表示的是命令的不同功能  
	
	3. 参数是命令要操作的对象,这个对象可以是文件或者目录
	
	4. 命令、选项、参数两两之间至少要有一个空格,一个完整的命令或者选项和参数不能有空格的
	
	5. 命令必须要放在开头,选项和参数在有些命令的时候,位置是可以发生变化的  
	
	
2.执行命令的时候报错

[root@sh-BC ~]# l s
-bash: l: command not found			#命令找不到  

#命令写错了,根本没有这个命令    

#系统中没有安装这个命令,需要安装才能使用 

[root@sh-BC ~]# ls /roo
ls: cannot access /roo: No such file or directory	#没有这个文件或者目录 


#文件或者目录名写错了

#路径写错了  

#相信电脑,电脑是不会出错的,如果电脑的出现结果跟你想象的不一样,那么一定是你错了,不要那么固执认为自己就是对的

2020年07月07日上午(day03)

一、bash shell特性

1. Tab键补全

#命令补全 
	
[root@sh-BC ~]# user
useradd     userdel     usermod     usernetctl  users	

[root@sh-BC ~]# s
Display all 220 possibilities? (y or n)		#有很多命令,一页显示不全

#选项补全

yum install  -y  bash-completion		#需要安装补全软件  


[root@BC ~]# ls --
--all                                      --indicator-style=
--almost-all                               --inode
--author                                   --kibibytes
--block-size=                              --lcontext


[root@BC ~]# systemctl  st
start   status  stop   



#参数补全  路径补全 

[root@sh-BC ~]# ls /r
root/run/

2.命令行常用快捷键
命令行常用快捷键 特殊含义
Ctrl键 + c #取消当前的操作
Ctrl键 + d #退出当前用户的登录
Ctrl键 + a #把光标从当前位置移动到命令行的行首
Ctrl键 + e #把光标从当前位置移动到命令行的行尾
Ctrl键 + u #把光标从当前位置到行首的内容进行剪切或者删除
Ctrl键 + k #把光标从当前位置到行尾的内容进行剪切或者删除
Ctrl键 + y #粘贴你所剪切的内容
delete键 #从前往后删除一个字符
Ctrl键 + w #删除当前位置至上一个空格的字符 删除一组字符串
Ctrl键 + 左方向键 #向左移动一组单词 以空格或者特殊字符作为分隔符
Ctrl键 + 右方向键 #向右移动一组单词
Ctrl键 + l #清屏 clear 清除当前的窗口内容
Ctrl键 + r #查找历史命令 搜索最近的一次命令
Ctrl键 + s #锁屏 锁屏之后,也是可以继续输入命令和操作命令,只是你看不到
Ctrl键 + q #解锁
Esc键 + . #获取上一条命令最后的参数 或者最后面的内容 以空格分隔符
!! #执行上一条执行过的命令
!ls #执行最近一次以ls开头的命令
3. 历史记录

	history		#显示所有执行过的命令  
	
	!id			#历史记录中某个命令的历史ID  执行这个id所对应的命令  
	
选项:

	-d	ID		#删除指定的ID信息  
	
	-w			#将你当前shell窗口执行的命令保存到默认的文件  ~/.bash_history
	
	-c			#清除所有命令的历史记录 
	

4. 命令别名

#系统自带的别名

[root@sh-BC ~]# alias 
alias cp=\'cp -i\'
alias egrep=\'egrep --color=auto\'
alias fgrep=\'fgrep --color=auto\'
alias grep=\'grep --color=auto\'
alias l.=\'ls -d .* --color=auto\'
alias ll=\'ls -l --color=auto\'
alias ls=\'ls --color=auto\'
alias mv=\'mv -i\'
alias rm=\'rm -i\'
alias which=\'alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde\'


ll  ==   ls -l  

#如何设置别名

别名的名称不能跟系统中命令名称有冲突 


[root@sh-BC ~]# alias   network=\'ping -c1 baidu.com\'


#检查别名

[root@sh-BC ~]# alias 
alias cp=\'cp -i\'
alias egrep=\'egrep --color=auto\'
alias fgrep=\'fgrep --color=auto\'
alias grep=\'grep --color=auto\'
alias l.=\'ls -d .* --color=auto\'
alias ll=\'ls -l --color=auto\'
alias ls=\'ls --color=auto\'
alias mv=\'mv -i\'
alias network=\'ping -c1 baidu.com\'
alias rm=\'rm -i\'
alias which=\'alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde\'

#验证别名 

[root@sh-BC ~]# network 
PING baidu.com (39.156.69.79) 56(84) bytes of data.
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=1 ttl=128 time=31.2 ms

--- baidu.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 31.235/31.235/31.235/0.000 ms
[root@sh-BC ~]# 

#取消别名

[root@sh-BC ~]# unalias  network
[root@BC ~]# alias 
alias cp=\'cp -i\'
alias egrep=\'egrep --color=auto\'
alias fgrep=\'fgrep --color=auto\'
alias grep=\'grep --color=auto\'
alias l.=\'ls -d .* --color=auto\'
alias ll=\'ls -l --color=auto\'
alias ls=\'ls --color=auto\'
alias mv=\'mv -i\'
alias rm=\'rm -i\'
alias which=\'alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde\'

#让别名永久生效 

把设置别名的命令写入到下面的文件中
[root@BC ~]# ls  /etc/bashrc 
/etc/bashrc
[root@BC ~]# ls  ~/.bashrc 
/root/.bashrc




[root@BC ~]# alias  network=\'cat  /etc/sysconfig/network-scripts/ifcfg-eth0\'


[root@BC ~]# network
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
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=eth0
UUID=025bb6de-7ddd-41e5-87c5-16724d3c293e
DEVICE=eth0
ONBOOT=yes
IPADDR=10.0.0.100
PREFIX=24
GATEWAY=10.0.0.2
DNS1=223.5.5.5
IPV6_PRIVACY=no


#临时取消别名 

\		#取消特殊字符的特殊含义   取消转义    撬棍 

[root@BC ~]# \network
-bash: network: command not found

#实现永久生效 

[root@BC ~]# echo  "alias  network=\'cat  /etc/sysconfig/network-scripts/ifcfg-eth0\'"  >>/etc/bashrc

#将其配置文件重新加载生效 

[root@BC ~]# source  /etc/bashrc


#退出重新登录测试  依然生效  


#取消永久生效 

[root@BC ~]# sed  -i   \'/network/d\'  /etc/bashrc

#退出重新登录 

二、获取命令的帮助

获取命令
man 获取指定命令的帮助
help 只能查看系统内置命令
命令 +‘--help\' 获取命令选项的帮助
info

三、互联网模式查找命令

1.https://man.linuxde.net/
	
	
2.https://liunx.web3.xin/
	
	
3.http://linux.51yip.com/
	

四、关机重启及注销命令




#更新时间

[root@BC ~]# yum install  -y  ntpdate

[root@BC ~]# ntpdate  ntp.aliyun.com


#关机


[root@BC ~]# shutdown -h  10		#10分钟之后关机  

[root@BC ~]# shutdown  -h  now		#立刻关机

[root@BC ~]# shutdown  -h  0		#立刻关机 

[root@BC ~]# shutdown  -h  11:00	#定时关机 

[root@BC ~]# poweroff				#立刻关机  

[root@BC ~]# halt -p				#立刻关机

[root@BC ~]# init 0		#立刻关机    通过系统的运行级别  


#重启 

[root@BC ~]# shutdown  -r   10		#10分钟之后进行重启 

[root@BC ~]# shutdown  -r   0		#立刻重启

[root@BC ~]# shutdown  -r   now	#立刻重启

[root@BC ~]# shutdown  -r   11:00	#定时重启 


[root@BC ~]# reboot			#重启  


#注销   退出当前登录的用户


[root@BC ~]# logout		#退出当前登录的用户   只能退出登录式Shell,不能退出非登录式Shell

Ctrl键 +  d		#快捷键   退出当前登录的用户

[root@BC ~]# exit			#退出当前登录的用户   既能退出登录式也能退出非登录式   主要用于脚本退出


[root@BC ~]# bash
[root@BC ~]# logout
bash: logout: not login shell: use `exit\'
[root@BC ~]# exit
exit

五、显示IP地址的命令



Centos7默认显示IP地址的命令

#获取所有网卡的IP地址

[root@BC ~]# ip  a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:eb:ea:8d brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::3310:9d15:9ee4:43e8/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
       
====


[root@BC ~]# ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:eb:ea:8d brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::3310:9d15:9ee4:43e8/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever


#单独查看某个网卡的IP地址

[root@BC ~]# ip  a  s  eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:eb:ea:8d brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::3310:9d15:9ee4:43e8/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@BC ~]# ip address  show  eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:eb:ea:8d brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::3310:9d15:9ee4:43e8/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever



ifconfig是Centos6默认显示IP地址的命令

[root@BC ~]# yum install  -y  net-tools


#所有的网卡的IP地址信息 

[root@BC ~]# ifconfig 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.100  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::3310:9d15:9ee4:43e8  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:eb:ea:8d  txqueuelen 1000  (Ethernet)
        RX packets 669  bytes 367883 (359.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 376  bytes 48482 (47.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

#获取某一个网卡的信息


[root@BC ~]# ifconfig   eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.100  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::3310:9d15:9ee4:43e8  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:eb:ea:8d  txqueuelen 1000  (Ethernet)
        RX packets 699  bytes 370373 (361.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 394  bytes 51180 (49.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0




hostname

#显示所有的IP地址,会显示IPv6的地址

[root@BC ~]# hostname -i
fe80::3310:9d15:9ee4:43e8%eth0 10.0.0.100

#只显示IPv4地址

[root@BC ~]# hostname -I
10.0.0.100 


#如何获取到公网地址

[root@BC ~]# curl  ifconfig.me
139.226.13.64

[root@BC ~]# curl cip.cc
IP	: 139.226.13.64
地址	: 中国  上海
运营商	: 联通

数据二	: 上海市 | 联通

数据三	: 中国上海上海 | 联通

URL	: http://www.cip.cc/139.226.13.64

六、命令总结

一、history   #显示命令的历史记录
	[root@BC ~]# history  
    1  hsitory
    2  history 
    3  cat /root/.bash_history
    4  history  -w
    5  cat /root/.bash_history	
	
	选项:
    
	history  -d    #删除历史ID对应的命令
	[root@BC ~]# history  -d 1
    [root@BC ~]# history 
    1  history 
    2  cat /root/.bash_history
    3  history  -w
    4  cat /root/.bash_history
	
	history  -w    #将当前历史记录保存到默认的文件中   ~/.bash_history
	[root@BC ~]# history  -w
    [root@BC ~]# cat /root/.bash_history 
	history 
	cat /root/.bash_history
	history  -w
	cat /root/.bash_history
	history  -w

	history  -c    #清除所有的历史记录
	[root@BC ~]# history -c
	[root@BC ~]# history 
    1  history 
	[root@BC ~]# 

二、alias		#设置别名
	用法:  alias 别名=\'执行的命令’
	[root@BC ~]# alias  network=\'ping wwww.baidu.com\'

三、unalias 	#取消别名
	用法:	unalias  别名
	[root@BC ~]# unalias network

四、shutdown	#关机及重启的命令
	选项:
	shutdown	-h   	 #关机
	shutdown -h 0	 #立刻关机
	shutdown -h now   #立刻关机
	shutdown -h 12:00 #定时关机
	
	shutdown -r 		 #重启
	shutdown -r  0	 #立刻重启
	shutdown -r  12:00 #定时重启
	
	shutdown -c 		# 取消定时的关机或者重启
	举例:
	[root@BC ~]# shutdown  -h 12:00
	Shutdown scheduled for Wed 2020-07-08 12:00:00 CST, use \'shutdown -c\' to cancel.
	[root@BC ~]# shutdown  -c
	Broadcast message from root@BC (Tue 2020-07-07 15:16:37 CST):
	The system shutdown has been cancelled at Tue 2020-07-07 15:17:37 CST!

	[root@BC ~]# shutdown  -r 10:00
	Shutdown scheduled for Wed 2020-07-08 10:00:00 CST, use \'shutdown -c\' to cancel.
	[root@BC ~]# shutdown  -c
	Broadcast message from root@BC (Tue 2020-07-07 15:17:35 CST):
	The system shutdown has been cancelled at Tue 2020-07-07 15:18:35 CST!

五、poweroff		#关机命令

六、halt			#关机命令,本身只会关闭系统,不会关闭电源,需要手动关闭电源
	选项:
	halt  -p   		#关闭电源及其系统
	
七、init			#切换运行级别
	init 	0  		#立刻关机    	将运行级别切换为关机级别  
	init	6		#立刻重启		将运行级别切换为关机级别
	
八、reboot			#立刻重启

九、logout			#退出当前登录的用户,不能退出非登录式shell
	[root@BC ~]# logout 
	Connection closing...Socket close.
	Connection closed by foreign host.
	Disconnected from remote host(Linux上海脱产10期-01-10.0.0.200) at 15:26:28.
	Type `help\' to learn how to use Xshell prompt.

十、exit			#退出当前登录的用户,主要用于脚本退出

十一、ip			#显示网络IP信息
	ip address 		#显示所有IP地址     简写ip a
	[root@BC ~]# ip address 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:5d:b7:af brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.200/24 brd 10.0.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::97bc:9dec:7167:8229/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
	
	ip address show eth0	#显示某块网卡的信息  j简写ip a s eth0	
	[root@BC ~]# ip address show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:5d:b7:af brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.200/24 brd 10.0.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::97bc:9dec:7167:8229/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

十二、ifconfig				#显示所有IP地址的信息
	[root@BC ~]# ifconfig 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.200  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::97bc:9dec:7167:8229  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:5d:b7:af  txqueuelen 1000  (Ethernet)
        RX packets 4364  bytes 393641 (384.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3280  bytes 379305 (370.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

	ifconfig  eth0      		#显示某块网卡的信息
	[root@BC ~]# ifconfig  eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.200  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::97bc:9dec:7167:8229  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:5d:b7:af  txqueuelen 1000  (Ethernet)
        RX packets 4396  bytes 396297 (387.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3299  bytes 382093 (373.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

十三、hostname					#显示系统主机名
	选项:
	hostname   -i   			#显示所有IP地址的信息,包括ipv6地址
	[root@BC ~]# hostname -i
	fe80::97bc:9dec:7167:8229%eth0 10.0.0.200

	hostname 	-I				#只显示Ipv4地址的信息
	[root@BC ~]# hostname -I
	10.0.0.200 

十四、man						#显示命令的帮助信息
	[root@BC ~]# man ls
	LS(1)                                     User Commands                                    LS(1)
NAME
       ls - list directory contents
SYNOPSIS
       ls [OPTION]... [FILE]...
DESCRIPTION
       List information about the FILEs (the current directory by default).  Sort entries alpha‐
       betically if none of -cftuvSUX nor --sort is specified.
       Mandatory arguments to long options are mandatory for short options too.

十五、help						#显示系统内置命令的帮助信息
	[root@BC ~]# ll --help
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

Mandatory arguments to long options are mandatory for short options too.
  -a, --all                  do not ignore entries starting with .
  -A, --almost-all           do not list implied . and ..
      --author               with -l, print the author of each file
  -b, --escape               print C-style escapes for nongraphic characters
      --block-size=SIZE      scale sizes by SIZE before printing them; e.g.,
                               \'--block-size=M\' prints sizes in units of
                               1,048,576 bytes; see SIZE format below
  -B, --ignore-backups       do not list implied entries ending with ~
  -c                         with -lt: sort by, and show, ctime (time of last
                               modification of file status information);
                               with -l: show ctime and sort by name;
                               otherwise: sort by ctime, newest first

十六、info						#显示命令的说明信息
	[root@BC ~]# info
File: dir       Node: Top       This is the top of the INFO tree
  This (the Directory node) gives a menu of major topics. 
  Typing "q" exits, "?" lists all Info commands, "d" returns here,
  "h" gives a primer for first-timers,
  "mEmacs<Return>" visits the Emacs topic, etc.
  In Emacs, you can click mouse button 2 on a menu item or cross reference
  to select it.
* Menu: 
Archiving
-----Info: (dir)Top, 2045 lines --Top--------------------------------------------------------------
Welcome to Info version 5.1. Type h for help, m for menu item.

		

2020年07月08日上午(day04)

一、文件管理概述

1.对文件做些什么  

创建  复制   移动 查看 编辑  压缩 查找  删除 

2.内容摘要

系统目录结构  

文件路径定位 

文件管理命令  

文件类型 

链接文件

文件编辑器  

二、系统的目录结构

1.windows系统目录:

C:\

D:\

E:\

2.linux 系统目录

(1)linux系统一切是以根为顶点   /     起点 

    /etc/hosts   /etc/hostname  

   Linux的目录结构就像是一个倒挂的树形结构 
   
(2)linux中重要的相关文件或者目录

[root@BC ~]# ls -l /
/		#所有Linux系统的顶点目录  


/boot	#存放是系统启动相关文件  内核 引导程序    引导目录   


/dev	#设备目录文件 

	/dev/cdrom
	==					#系统光盘镜像   
	/dev/sr0

	/dev/null			#黑洞设备 类似于垃圾回收站  只进不出   只接受数据 

	/dev/random			#生成随机数的设备    RANDOM 随机数的变量  
    
    /dev/zero			#能够源源不断产生字符设备  
    
    /dev/pts			#虚拟登录的终端目录   
    
    /dev/stderr -> /proc/self/fd/2		#错误输出   2>
    
	/dev/stdin -> /proc/self/fd/0		#标准输入 	<
	
	/dev/stdout -> /proc/self/fd/1		#标准输出 	>
	
	/dev/pts/				#存放的是虚拟终端信息  

	#磁盘设备及分区  
	/dev/sda
	/dev/sda1      /
	/dev/sda2
	/dev/sda3    /boot
	
    
/etc		#非常重要,所有服务的配置目录  系统主要配置目录  

	/etc/sysconfig/network-scripts/ifcfg-eth0  #网卡配置文件
	
	/etc/hostname		#系统主机名配置文件
	
	/etc/resolv.conf	#系统DNS配置文件
	
	/etc/hosts			#IP地址和主机名的映射关系文件   本地域名解析配置文件 
	
	/etc/fstab			#设备挂载目录配置文件    开机自启动挂载列表 
	
/home		#普通用户的家目录都在这个目录下面   


/media		#挂载目录  挂载一些可移动设备  CD  相机       了解


/mnt		#提供临时挂载的目录  


/opt		#早期第三方厂商软件的安装目录  


/proc		#反映系统当前进程的实时状态  

/root		#超级管理员root的家目录  


/run		#存放程序运行后所产生的pid文件   

/srv		#物理设备产生的一些文件  				了解  


/sys		#硬件设备的驱动程序信息			了解  


/tmp		#系统临时目录    类似于公共场所  系统会定时删除这个目录下长时间没有访问的文件 


/usr		#系统主要程序目录  相当于C盘的windows

	/usr/local		#系统默认软件安装目录   C:\Program
	
	/usr/bin		#系统中普通用户所能使用的命令
    
    /usr/sbin		#管理员所使用的命令  

	/usr/lib		#库文件  32位
	
	/usr/lib64		#库文件 64位   
	
	

/var		#存放系统可变的信息目录

	/var/log		#存放是系统日志目录  
	
		/var/log/messages	#系统日志  
		
		/var/log/socure		#系统用户登录日志  

	/var/run	#进程产生的pid文件  
	
	/var/tmp	#进程产生的临时文件


3.软链接文件  

/bin   ===  	/usr/bin

/sbin	===		/usr/sbin

/lib	===		/usr/lib

/lib64  ===		/usr/lib64

三、路径的定位

1.文件名称及所在的位置,我们称之为路径     /etc/hosts    路径就是系统对文件进行定位的一种方式 

不同的路径下,文件名是可以相同的

相同路径下,不能有相同名称的文件  

linux中,一切皆文件  

2.#每个目录下面都有一个.和..  他们是干什么


.		#一个点代表的是当前的目录  


..		#两个点代表的是当前目录的上一级目录 

[root@BC usr]# ./local/	#当前目录下的local目录    ==    /usr/local


[root@BC usr]# ../				#当前目录的上一级目录   /  根    


./			#表示当前的目录  

.			#表示当前的目录

../			#从当前目录的上一级目录开始 

..			#上一级目录 

3.#什么是绝对路径,什么又是相对路径  


只要是从/开始的路径或者以~为开始路径,就是绝对路径   

不是以根为开始的路径或者~开始的路径就是相对路径  


[root@BC ~]# ll /etc/hosts		#绝对路径 

[root@BC /etc]# ll hosts		#相对路径  

四、文件管理之基础命令-pwd

1.pwd				#显示当前工作目录的绝对路径 ====告诉我,你在哪里

[root@BC ~]# cd /usr/
[root@BC usr]# pwd
/usr
[root@BC usr]# cd local/
[root@BC local]# pwd
/usr/local

五、文件管理之基础命令-cd

1.cd				#切换工作目录		切换路径

[root@BC local]# cd		#直接切换到当前用户的家目录
[root@BC ~]# pwd
/root
[root@BC ~]# cd ~			#切换当前用户的家目录	====	cd /root

[root@BC ~]# cd .			#保持当前目录不变
[root@BC ~]# cd ./			#保持当前目录不变

[root@BC ~]# cd ..			#切换当前目录的上一级目录
[root@BC /]# cd			
[root@BC ~]# cd ../		#切换当前目录的上一级目录
[root@BC /]# 

[root@BC /]# cd usr/
[root@BC usr]# cd ./local/
[root@BC local]# pwd
/usr/local

[root@BC local]# cd ../etc/	#切换当前目录的上一级目录/usr下的etc目录
[root@BC etc]# pwd
/usr/etc

[root@BC usr]# cd ../etc/		#不同目录下,执行的相对路径操作,得到的结果是不同的
[root@BC etc]# pwd
/etc

[root@BC etc]# cd /			#切换到根目录 	根本身也是一个目录

[root@BC /]# cd -				#切换到你上一次所在的目录 快速的到达上一次所在的路径
/etc


六、文件管理之基础命令-ls

1.ls			#显示文件或者目录列表信息		打开目录	显示目录里面的内容

常用选项:
 	
 	-l 			#以长格式形式显示文件或者目录的详细属性信息
 	
 	-i			#显示文件或者目录的inode信息		索引节点信息
 	
 	-h			#以字节大小显示文件大小 	B	KB	MB	GB
 	
 	-a			#显示所有文件,隐藏文件	所有以点开头的文件就是隐藏文件
    
    -S			#以文件大小进行排序	从大到小显示
    
    -t			#根据时间进行排序	最新的时间在最上面
    
    -r			#倒序排序
    
    -F			#给不同的文件加上不同的标识符
    
    -d			#显示目录本身信息
    
    			/			#目录
    			
    			*			#可执行文件
    			
    			=			#套接字文件	socker文件
    			
    			|			#管道文件
    			
[root@BC ~]# ls		#如果不加目录信息,默认针对的是当前目录操作
anaconda-ks.cfg  day01.txt  dead.letter  oldboy  qingshu_dir  test.txt

[root@BC ~]# ls /root/
anaconda-ks.cfg  day01.txt  dead.letter  oldboy  qingshu_dir  test.txt

[root@BC ~]# ls -l				#系统自带别名相当于[root@BC ~]# ll
total 12
-rw-------.  1 root root 1350 Jul  8 12:26 anaconda-ks.cfg
-rw-r--r--   1 root root   30 Jul  8 12:09 day01.txt
-rw-------.  1 root root 2276 Jul  3 14:31 dead.letter
drwxr-xr-x  12 root root  106 Jul  8 12:18 oldboy
drwxr-xr-x   2 root root   46 Jul  6 12:20 qingshu_dir
-rwxr-xr-x   1 root root    0 Jul  7 20:40 test.txt

[root@BC ~]# ll -i				#显示文件的inode信息
total 12
134317666 -rw-------.  1 root root 1350 Jul  8 12:26 anaconda-ks.cfg
134380621 -rw-r--r--   1 root root   30 Jul  8 12:09 day01.txt
134915040 -rw-------.  1 root root 2276 Jul  3 14:31 dead.letter
201533705 drwxr-xr-x  12 root root  106 Jul  8 12:18 oldboy
202273667 drwxr-xr-x   2 root root   46 Jul  6 12:20 qingshu_dir
134380624 -rwxr-xr-x   1 root root    0 Jul  7 20:40 test.txt

[root@BC ~]# ll -h				#以字节大小显示文件信息
total 12K
-rw-------.  1 root root 1.4K Jul  8 12:26 anaconda-ks.cfg
-rw-r--r--   1 root root   30 Jul  8 12:09 day01.txt
-rw-------.  1 root root 2.3K Jul  3 14:31 dead.letter
drwxr-xr-x  12 root root  106 Jul  8 12:18 oldboy
drwxr-xr-x   2 root root   46 Jul  6 12:20 qingshu_dir
-rwxr-xr-x   1 root root    0 Jul  7 20:40 test.txt

10月24日			程序员日

[root@BC ~]# ll -a			#显示所有的文件,隐藏文件
total 48
dr-xr-x---.  5 root root  272 Jul  8 12:29 .
dr-xr-xr-x. 18 root root  236 Jul  3 16:31 ..
-rw-------.  1 root root 1350 Jul  8 12:26 anaconda-ks.cfg
-rw-------.  1 root root 3258 Jul  8 00:48 .bash_history
-rw-r--r--.  1 root root   18 Dec 29  2013 .bash_logout
-rw-r--r--.  1 root root  176 Dec 29  2013 .bash_profile
-rw-r--r--.  1 root root  176 Dec 29  2013 .bashrc
drwxr-xr-x.  2 root root   68 Jul  6 12:20 .certs
-rw-r--r--.  1 root root  100 Dec 29  2013 .cshrc
-rw-r--r--   1 root root   30 Jul  8 12:09 day01.txt
-rw-------.  1 root root 2276 Jul  3 14:31 dead.letter
-rw-------   1 root root  170 Jul  7 11:04 .mysql_history
drwxr-xr-x  12 root root  106 Jul  8 12:18 oldboy
drwxr-xr-x   2 root root   46 Jul  6 12:20 qingshu_dir
-rw-r--r--.  1 root root  129 Dec 29  2013 .tcshrc
-rwxr-xr-x   1 root root    0 Jul  7 20:40 test.txt
-rw-------   1 root root 6003 Jul  7 18:40 .viminfo


[root@BC ~]# ll -aS		#显示所有的文件,隐藏文件,并从大到小显示
total 48
-rw-------   1 root root 6003 Jul  7 18:40 .viminfo
-rw-------.  1 root root 3258 Jul  8 00:48 .bash_history
-rw-------.  1 root root 2276 Jul  3 14:31 dead.letter
-rw-------.  1 root root 1350 Jul  8 12:26 anaconda-ks.cfg
dr-xr-x---.  5 root root  272 Jul  8 12:29 .
dr-xr-xr-x. 18 root root  236 Jul  3 16:31 ..
-rw-r--r--.  1 root root  176 Dec 29  2013 .bash_profile
-rw-r--r--.  1 root root  176 Dec 29  2013 .bashrc
-rw-------   1 root root  170 Jul  7 11:04 .mysql_history
-rw-r--r--.  1 root root  129 Dec 29  2013 .tcshrc
drwxr-xr-x  12 root root  106 Jul  8 12:18 oldboy
-rw-r--r--.  1 root root  100 Dec 29  2013 .cshrc
drwxr-xr-x.  2 root root   68 Jul  6 12:20 .certs
drwxr-xr-x   2 root root   46 Jul  6 12:20 qingshu_dir
-rw-r--r--   1 root root   30 Jul  8 12:09 day01.txt
-rw-r--r--.  1 root root   18 Dec 29  2013 .bash_logout
-rwxr-xr-x   1 root root    0 Jul  7 20:40 test.txt


[root@BC ~]# ll -at		#显示所有文件,隐藏文件并根据时间进行排序
total 48
dr-xr-x---.  5 root root  272 Jul  8 12:29 .
-rw-------.  1 root root 1350 Jul  8 12:26 anaconda-ks.cfg
drwxr-xr-x  12 root root  106 Jul  8 12:18 oldboy
-rw-r--r--   1 root root   30 Jul  8 12:09 day01.txt
-rw-------.  1 root root 3258 Jul  8 00:48 .bash_history
-rwxr-xr-x   1 root root    0 Jul  7 20:40 test.txt
-rw-------   1 root root 6003 Jul  7 18:40 .viminfo
-rw-------   1 root root  170 Jul  7 11:04 .mysql_history
drwxr-xr-x.  2 root root   68 Jul  6 12:20 .certs
drwxr-xr-x   2 root root   46 Jul  6 12:20 qingshu_dir
dr-xr-xr-x. 18 root root  236 Jul  3 16:31 ..
-rw-------.  1 root root 2276 Jul  3 14:31 dead.letter
-rw-r--r--.  1 root root   18 Dec 29  2013 .bash_logout
-rw-r--r--.  1 root root  176 Dec 29  2013 .bash_profile
-rw-r--r--.  1 root root  176 Dec 29  2013 .bashrc
-rw-r--r--.  1 root root  100 Dec 29  2013 .cshrc
-rw-r--r--.  1 root root  129 Dec 29  2013 .tcshrc

[root@BC ~]# ll -atr				#显示所有文件,隐藏文件并根据时间顺序进行倒序排序
total 48
-rw-r--r--.  1 root root  129 Dec 29  2013 .tcshrc
-rw-r--r--.  1 root root  100 Dec 29  2013 .cshrc
-rw-r--r--.  1 root root  176 Dec 29  2013 .bashrc
-rw-r--r--.  1 root root  176 Dec 29  2013 .bash_profile
-rw-r--r--.  1 root root   18 Dec 29  2013 .bash_logout
-rw-------.  1 root root 2276 Jul  3 14:31 dead.letter
dr-xr-xr-x. 18 root root  236 Jul  3 16:31 ..
drwxr-xr-x   2 root root   46 Jul  6 12:20 qingshu_dir
drwxr-xr-x.  2 root root   68 Jul  6 12:20 .certs
-rw-------   1 root root  170 Jul  7 11:04 .mysql_history
-rw-------   1 root root 6003 Jul  7 18:40 .viminfo
-rwxr-xr-x   1 root root    0 Jul  7 20:40 test.txt
-rw-------.  1 root root 3258 Jul  8 00:48 .bash_history
-rw-r--r--   1 root root   30 Jul  8 12:09 day01.txt
drwxr-xr-x  12 root root  106 Jul  8 12:18 oldboy
-rw-------.  1 root root 1350 Jul  8 12:26 anaconda-ks.cfg
dr-xr-x---.  5 root root  272 Jul  8 12:29 .


[root@BC ~]# ll -aSr			#显示所有文件,隐藏文件并根据文件大小进行倒序排序
total 48
-rwxr-xr-x   1 root root    0 Jul  7 20:40 test.txt
-rw-r--r--.  1 root root   18 Dec 29  2013 .bash_logout
-rw-r--r--   1 root root   30 Jul  8 12:09 day01.txt
drwxr-xr-x   2 root root   46 Jul  6 12:20 qingshu_dir
drwxr-xr-x.  2 root root   68 Jul  6 12:20 .certs
-rw-r--r--.  1 root root  100 Dec 29  2013 .cshrc
drwxr-xr-x  12 root root  106 Jul  8 12:18 oldboy
-rw-r--r--.  1 root root  129 Dec 29  2013 .tcshrc
-rw-------   1 root root  170 Jul  7 11:04 .mysql_history
-rw-r--r--.  1 root root  176 Dec 29  2013 .bashrc
-rw-r--r--.  1 root root  176 Dec 29  2013 .bash_profile
dr-xr-xr-x. 18 root root  236 Jul  3 16:31 ..
dr-xr-x---.  5 root root  272 Jul  8 12:29 .
-rw-------.  1 root root 1350 Jul  8 12:26 anaconda-ks.cfg
-rw-------.  1 root root 2276 Jul  3 14:31 dead.letter
-rw-------.  1 root root 3258 Jul  8 00:48 .bash_history
-rw-------   1 root root 6003 Jul  7 18:40 .viminfo

[root@BC ~]# ll -aF		#显示所有文件,隐藏文件并加上不同的标识符
total 48
dr-xr-x---.  5 root root  272 Jul  8 12:29 ./
dr-xr-xr-x. 18 root root  236 Jul  3 16:31 ../
-rw-------.  1 root root 1350 Jul  8 12:26 anaconda-ks.cfg
-rw-------.  1 root root 3258 Jul  8 00:48 .bash_history
-rw-r--r--.  1 root root   18 Dec 29  2013 .bash_logout
-rw-r--r--.  1 root root  176 Dec 29  2013 .bash_profile
-rw-r--r--.  1 root root  176 Dec 29  2013 .bashrc
drwxr-xr-x.  2 root root   68 Jul  6 12:20 .certs/
-rw-r--r--.  1 root root  100 Dec 29  2013 .cshrc
-rw-r--r--   1 root root   30 Jul  8 12:09 day01.txt
-rw-------.  1 root root 2276 Jul  3 14:31 dead.letter
-rw-------   1 root root  170 Jul  7 11:04 .mysql_history
drwxr-xr-x  12 root root  106 Jul  8 12:18 oldboy/
drwxr-xr-x   2 root root   46 Jul  6 12:20 qingshu_dir/
-rw-r--r--.  1 root root  129 Dec 29  2013 .tcshrc
-rwxr-xr-x   1 root root    0 Jul  7 20:40 test.txt*
-rw-------   1 root root 6003 Jul  7 18:40 .viminfo

[root@BC ~]# ll -d /root/			#显示/root/目录本身信息
dr-xr-x---. 5 root root 272 Jul  8 12:29 /root/

[root@BC ~]# ls /					#显示/目录下的文件
bin   data  etc   lib    media  opt   root  sbin  sys  usr
boot  dev   home  lib64  mnt    proc  run   srv   tmp  var

[root@BC ~]# ls -l /				#以行的形式显示文件名称
total 20
lrwxrwxrwx.   1 root root    7 Jun  9 21:35 bin -> usr/bin
dr-xr-xr-x.   5 root root 4096 Jun  9 21:42 boot
drwxr-xr-x.   3 root root   17 Jul  3 16:32 data
drwxr-xr-x   19 root root 3180 Jul  8 09:02 dev
drwxr-xr-x.  85 root root 8192 Jul  8 09:02 etc
drwxr-xr-x.   3 root root   16 Jul  7 20:41 home
lrwxrwxrwx.   1 root root    7 Jun  9 21:35 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 Jun  9 21:35 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6 Apr 11  2018 media
drwxr-xr-x.   2 root root    6 Apr 11  2018 mnt
drwxr-xr-x.   2 root root    6 Apr 11  2018 opt
dr-xr-xr-x  110 root root    0 Jul  8 09:02 proc
dr-xr-x---.   5 root root  272 Jul  8 12:29 root
drwxr-xr-x   27 root root  780 Jul  8 11:36 run
lrwxrwxrwx.   1 root root    8 Jun  9 21:35 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6 Apr 11  2018 srv
dr-xr-xr-x   13 root root    0 Jul  8 10:32 sys
drwxrwxrwt.  19 root root 4096 Jul  8 15:32 tmp
drwxr-xr-x.  13 root root  155 Jun  9 21:35 usr
drwxr-xr-x.  19 root root  267 Jun  9 21:44 var


七、文件管理之基础命令-tree

1.tree				#以树状形式显示目录列表

安装:

[root@BC ~]# yum -y install tree

选项:

		-a			#显示所有文件或者目录	隐藏文件
		
		-d			#只显示目录及目录的数量
		
		-f			#以绝对路径显示目录列表
		
		-h			#显示文件的大小
		
		-F			#给不同类型的文件加上不同的标识符
		
					/		#目录
					
					*		#可执行文件
					
					=		#套接字文件 socker文件
                    
					|		#管道文件
		
		-L			#根据目录的基本显示				

[root@BC ~]# tree						#显示当前目录的目录列表
.
├── anaconda-ks.cfg
├── day01.txt
├── dead.letter
├── qingshu_dir
│   ├── qingshu1.txt
│   └── qingshu2.txt
└── test.txt

1 directory, 6 files


[root@BC ~]# tree -a 					#显示当前目录的全部文件。隐藏文件列表
.
├── anaconda-ks.cfg
├── .bash_history
├── .bash_logout
├── .bash_profile
├── .bashrc
├── .certs
│   ├── cert8.db
│   ├── key3.db
│   ├── qq.crt
│   └── secmod.db
├── .cshrc
├── day01.txt
├── dead.letter
├── .mysql_history
├── qingshu_dir
│   ├── qingshu1.txt
│   └── qingshu2.txt
├── .tcshrc
├── test.txt
└── .viminfo

2 directories, 18 files


[root@BC ~]# tree -d /var/log				#只显示目录及目录的数量
/var/log
├── anaconda
├── audit
├── mariadb
├── nginx
├── ntpstats
├── rhsm
├── sa
└── tuned

8 directories


[root@BC ~]# tree -h /var/log/			#显示文件的大小
/var/log/
├── [ 176]  anaconda
│   ├── [ 41K]  anaconda.log
│   ├── [3.9K]  ifcfg.log
│   ├── [1.9M]  journal.log
│   ├── [   0]  ks-script-gg9B9N.log
│   ├── [200K]  packaging.log


[root@BC ~]# tree  -L 2 /root/			#显示家目录下2级的文件或者目录 
/root/
├── anaconda-ks.cfg
├── day01.txt
├── dead.letter
├── qingshu_dir
│   ├── qingshu1.txt
│   └── qingshu2.txt
└── test.txt

1 directory, 6 files

[root@sh-BC ~]# tree -f  /root		#以绝对路径的形式显示文件列表  
/root
├── /root/10.txt
├── /root/1.txt
├── /root/2.txt
├── /root/3.txt
├── /root/4.txt
├── /root/5.txt
├── /root/6.txt
├── /root/7.txt
├── /root/8.txt
└── /root/9.txt

八、文件管理之基础命令-mkdir

 1.mkdir		#创建目录

	选项:
	
		-p		#创建多级目录  递归创建   当目录已经存在时,再次创建不会提示报错  
		
		-v		#显示创建的过程  
		
		-m		#创建的时候,给目录设置一个权限  
	
	
		{}		#生成序列  有规律和无规律    有规律使用..分割   无规律的使用逗号分割 
		
		*		#通配符    所有的意思 
		
		
在相同的路径下,不能存在相同的文件名称 

在不同的路径下,可以存在相同的文件名称  


[root@BC ~]# mkdir  /data		#使用绝对路径进行创建
[root@BC ~]# mkdir  data		#使用相对路径进行创建

[root@BC ~]# ll
total 4
-rw-------. 1 root root 1429 Jul  6 02:17 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 Jul  8 19:51 data
[root@BC ~]# ll /
total 20
lrwxrwxrwx.   1 root root    7 Jul  6 02:13 bin -> usr/bin
dr-xr-xr-x.   5 root root 4096 Jul  6 02:17 boot
drwxr-xr-x.   2 root root    6 Jul  8 19:51 data


[root@BC ~]# mkdir  /root/data
mkdir: cannot create directory ‘/root/data’: File exists



File exists			#文件已经存在 

	解决:  
	
		1. 你要创建的目录已经存在,无需再次进行创建 
		
		2. 你要创建的目录路径书写错误  
		
		
[root@BC ~]# mkdir  -p  /root/data		

[root@BC ~]# mkdir   test/oldboy
mkdir: cannot create directory ‘test/oldboy’: No such file or directory
[root@BC ~]# mkdir  -p  test/oldboy
[root@BC ~]# ll
total 4
-rw-------. 1 root root 1429 Jul  6 02:17 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 Jul  8 19:51 data
drwxr-xr-x. 3 root root   20 Jul  8 19:57 test
[root@BC ~]# ll test/
total 0
drwxr-xr-x. 2 root root 6 Jul  8 19:57 oldboy



[root@BC ~]# mkdir  oldboy
[root@BC ~]# mkdir  \'oldboy \'
[root@BC ~]# 
[root@BC ~]# ll
total 4
-rw-------. 1 root root 1429 Jul  6 02:17 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 Jul  8 19:51 data
drwxr-xr-x. 2 root root    6 Jul  8 20:00 oldboy
drwxr-xr-x. 2 root root    6 Jul  8 20:00 oldboy 
drwxr-xr-x. 3 root root   20 Jul  8 19:57 test
[root@BC ~]# ll  -F  
total 4
-rw-------. 1 root root 1429 Jul  6 02:17 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 Jul  8 19:51 data/
drwxr-xr-x. 2 root root    6 Jul  8 20:00 oldboy/
drwxr-xr-x. 2 root root    6 Jul  8 20:00 oldboy /
drwxr-xr-x. 3 root root   20 Jul  8 19:57 test/
[root@BC ~]#  root    6 Jul  8 20:00 oldboy/


[root@BC ~]# mkdir -v   data01
mkdir: created directory ‘data01’


[root@BC ~]# mkdir  -m  700   data02
[root@BC ~]# ll
total 4
-rw-------. 1 root root 1429 Jul  6 02:17 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 Jul  8 19:51 data
drwxr-xr-x. 2 root root    6 Jul  8 20:02 data01
drwx------. 2 root root    6 Jul  8 20:04 data02
drwxr-xr-x. 2 root root    6 Jul  8 20:00 oldboy
drwxr-xr-x. 2 root root    6 Jul  8 20:00 oldboy 
drwxr-xr-x. 3 root root   20 Jul  8 19:57 test



[root@BC ~]# echo {01..10}
01 02 03 04 05 06 07 08 09 10


[root@BC ~]# mkdir  test/data{01..10}		#批量创建10个目录 
[root@BC ~]# ll test/
total 0
drwxr-xr-x. 2 root root 6 Jul  8 20:09 data01
drwxr-xr-x. 2 root root 6 Jul  8 20:09 data02
drwxr-xr-x. 2 root root 6 Jul  8 20:09 data03
drwxr-xr-x. 2 root root 6 Jul  8 20:09 data04
drwxr-xr-x. 2 root root 6 Jul  8 20:09 data05
drwxr-xr-x. 2 root root 6 Jul  8 20:09 data06
drwxr-xr-x. 2 root root 6 Jul  8 20:09 data07
drwxr-xr-x. 2 root root 6 Jul  8 20:09 data08
drwxr-xr-x. 2 root root 6 Jul  8 20:09 data09
drwxr-xr-x. 2 root root 6 Jul  8 20:09 data10

[root@BC ~]# echo {a..z}
a b c d e f g h i j k l m n o p q r s t u v w x y z
[root@BC ~]# echo {a..g}
a b c d e f g
[root@BC ~]# echo {A..Z}
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

[root@BC ~]# mkdir  test/oldboy-{a..g}


[root@BC ~]# ll  -d  test/oldboy-*
drwxr-xr-x. 2 root root 6 Jul  8 20:11 test/oldboy-a
drwxr-xr-x. 2 root root 6 Jul  8 20:11 test/oldboy-b
drwxr-xr-x. 2 root root 6 Jul  8 20:11 test/oldboy-c
drwxr-xr-x. 2 root root 6 Jul  8 20:11 test/oldboy-d
drwxr-xr-x. 2 root root 6 Jul  8 20:11 test/oldboy-e
drwxr-xr-x. 2 root root 6 Jul  8 20:11 test/oldboy-f
drwxr-xr-x. 2 root root 6 Jul  8 20:11 test/oldboy-g


[root@BC ~]# mkdir  data-{a,c,d,h}
[root@BC ~]# ll
total 4
-rw-------.  1 root root 1429 Jul  6 02:17 anaconda-ks.cfg
drwxr-xr-x.  2 root root    6 Jul  8 19:51 data
drwxr-xr-x.  2 root root    6 Jul  8 20:02 data01
drwx------.  2 root root    6 Jul  8 20:04 data02
drwxr-xr-x.  2 root root    6 Jul  8 20:12 data-a
drwxr-xr-x.  2 root root    6 Jul  8 20:12 data-c
drwxr-xr-x.  2 root root    6 Jul  8 20:12 data-d
drwxr-xr-x.  2 root root    6 Jul  8 20:12 data-h

[root@BC ~]# mkdir  -p  oldboy/{01..10}/data{01..10}/test{01..10}

#在Linux系统中,是区分大小写的

[root@BC ~]# mkdir  a
[root@BC ~]# mkdir  A
[root@BC ~]# ll
total 4
drwxr-xr-x.  2 root root    6 Jul  8 12:25 a
drwxr-xr-x.  2 root root    6 Jul  8 12:25 A


九、文件管理之基础命令-touch

1.touch		#创建文件   创建空文件  当文件已经存在时,创建的时候不会报错,但是会改变文件的时间戳

		{}		#生成序列  有规律和无规律    有规律使用..分割   无规律的使用逗号分割 

[root@BC ~]# touch  test.txt


[root@BC ~]# touch  data.{txt,sh,log,xml,tar,py,js}
[root@BC ~]# ll
-rw-r--r--.  1 root root    0 Jul  8 12:27 data.js
-rw-r--r--.  1 root root    0 Jul  8 12:27 data.log
-rw-r--r--.  1 root root    0 Jul  8 12:27 data.py
-rw-r--r--.  1 root root    0 Jul  8 12:27 data.sh
-rw-r--r--.  1 root root    0 Jul  8 12:27 data.tar
-rw-r--r--.  1 root root    0 Jul  8 12:27 data.txt
-rw-r--r--.  1 root root    0 Jul  8 12:27 data.xml


[root@BC ~]# touch  data{01..10}.txt
[root@BC ~]# ll
-rw-r--r--.  1 root root    0 Jul  8 12:28 data01.txt
-rw-r--r--.  1 root root    0 Jul  8 12:28 data02.txt
-rw-r--r--.  1 root root    0 Jul  8 12:28 data03.txt
-rw-r--r--.  1 root root    0 Jul  8 12:28 data04.txt
-rw-r--r--.  1 root root    0 Jul  8 12:28 data05.txt
-rw-r--r--.  1 root root    0 Jul  8 12:28 data06.txt
-rw-r--r--.  1 root root    0 Jul  8 12:28 data07.txt
-rw-r--r--.  1 root root    0 Jul  8 12:28 data08.txt
-rw-r--r--.  1 root root    0 Jul  8 12:28 data09.txt
-rw-r--r--.  1 root root    0 Jul  8 12:28 data10.txt


2020年07月09日上午(dsy05)

一、文件管理之基础命令-cp

1.cp复制或者拷贝文件  

语法:

	命令     源文件     目标目录
	
选项:
	
	-r		#递归复制   复制目录时所使用的
	
	-p		#保持源文件属性
	
	-d		#复制的时候保持软连接 
	
	-a		===  -pdr
	
	-t		#把源文件的位置根目标目录的位置进行调换   在批量拷贝文件时使用 
	
	-i		#当拷贝的文件在目标目录已经存在时,提示是否覆盖     系统自带的别名 


[root@BC ~]# cp  /etc/hosts  /root
[root@BC ~]# cp  /etc/passwd   ./
[root@BC ~]# cp  /etc/resolv.conf   .
[root@BC ~]# ll
total 12
-rw-r--r--. 1 root root 158 Jul  9 09:11 hosts
-rw-r--r--. 1 root root 873 Jul  9 09:11 passwd
-rw-r--r--. 1 root root  51 Jul  9 09:11 resolv.conf



[root@BC ~]# cp  /opt/   ./
cp: omitting directory ‘/opt/’
[root@BC ~]# cp  -r   /opt/  ./
[root@BC ~]# ll
total 12
-rw-r--r--. 1 root root 158 Jul  9 09:11 hosts
drwxr-xr-x. 2 root root   6 Jul  9 09:14 opt
-rw-r--r--. 1 root root 873 Jul  9 09:11 passwd
-rw-r--r--. 1 root root  51 Jul  9 09:11 resolv.conf


[root@BC ~]# ll  /etc/grub2.cfg 
lrwxrwxrwx. 1 root root 22 Jul  6 02:14 /etc/grub2.cfg -> ../boot/grub2/grub.cfg
[root@BC ~]# cp  /etc/grub2.cfg  ./
[root@BC ~]# ll
total 20
-rw-r--r--. 1 root root 4229 Jul  9 09:16 grub2.cfg
-rw-r--r--. 1 root root  158 Jul  9 09:11 hosts
drwxr-xr-x. 2 root root    6 Jul  9 09:14 opt
-rw-r--r--. 1 root root  873 Jul  9 09:11 passwd
-rw-r--r--. 1 root root   51 Jul  9 09:11 resolv.conf
[root@BC ~]# rm -f grub2.cfg 
[root@BC ~]# cp  -d  /etc/grub2.cfg   ./
[root@BC ~]# ll
total 12
lrwxrwxrwx. 1 root root  22 Jul  9 09:16 grub2.cfg -> ../boot/grub2/grub.cfg
-rw-r--r--. 1 root root 158 Jul  9 09:11 hosts
drwxr-xr-x. 2 root root   6 Jul  9 09:14 opt
-rw-r--r--. 1 root root 873 Jul  9 09:11 passwd
-rw-r--r--. 1 root root  51 Jul  9 09:11 resolv.conf


[root@BC ~]# cp  -t  ./   /etc/fstab 
[root@BC ~]# ll
total 16
lrwxrwxrwx. 1 root root   7 Jul  6 02:13 bin -> usr/bin
-rw-r--r--. 1 root root 501 Jul  9 09:21 fstab
lrwxrwxrwx. 1 root root  22 Jul  9 09:16 grub2.cfg -> ../boot/grub2/grub.cfg
-rw-r--r--. 1 root root 158 Jul  9 09:11 hosts
drwxr-xr-x. 2 root root   6 Jul  9 09:14 opt
-rw-r--r--. 1 root root 873 Jul  9 09:11 passwd
-rw-r--r--. 1 root root  51 Jul  9 09:11 resolv.conf



[root@BC ~]# cp  /etc/hosts   ./
cp: overwrite ‘./hosts’? n

[root@BC ~]# alias 
alias cp=\'cp -i\'


#强制覆盖不提示    临时取消别名 

[root@BC ~]# \cp  /etc/hosts  ./


cp基础命令选项 含义
-r #递归复制 复制目录
-d #保持软链接
-p #保持属性不变
-a === -pdr
-i #如果文件存在,提示是否覆盖 系统自带别名
-t #把原位置和目标位置的位置进行调换

二。文件管理之基础命令-mv

1. mv		#移动或者重命名文件  

语法:

	命令     源文件    目标目录  
	
选项:

	-i		#当文件已经存在时,移动的时候,提示是否覆盖目标文件    系统自带别名 
	
	-f		#强制覆盖,不提示  
	
	-t		#把源文件的位置跟目标目录的位置进行调换 
		
	\			#临时取消别名的含义   
		
	
[root@sh-BC ~]# mv  --help
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...


[root@sh-BC ~]# mv hosts  /opt		#移动文件 ,原位置的文件已经存在  
[root@sh-BC ~]# ll
total 12
-rw-r--r--. 1 root root 4201 Jun 15 12:24 grub2.cfg
drwxr-xr-x. 2 root root    6 Apr 11  2018 opt
-rw-r--r--. 1 root root 1013 Jun 15 12:27 passwd
drwxr-xr-x. 2 root root   23 Jun 15 12:22 test
[root@sh-BC ~]# ll /opt/
total 4
-rw-r--r--. 1 root root 158 Jun 15 12:15 hosts


[root@sh-BC ~]# mv test/  /opt/		#移动目录  不需要加任何选项  
[root@sh-BC ~]# ll
total 12
-rw-r--r--. 1 root root 4201 Jun 15 12:24 grub2.cfg
drwxr-xr-x. 2 root root    6 Apr 11  2018 opt
-rw-r--r--. 1 root root 1013 Jun 15 12:27 passwd
[root@sh-BC ~]# ll /opt/
total 4
-rw-r--r--. 1 root root 158 Jun 15 12:15 hosts
drwxr-xr-x. 2 root root  23 Jun 15 12:22 test


[root@sh-BC ~]# cp /etc/hosts  ./
[root@sh-BC ~]# ll
total 16
-rw-r--r--. 1 root root 4201 Jun 15 12:24 grub2.cfg
-rw-r--r--. 1 root root  158 Jun 16 09:05 hosts
drwxr-xr-x. 2 root root    6 Apr 11  2018 opt
-rw-r--r--. 1 root root 1013 Jun 15 12:27 passwd
[root@sh-BC ~]# mv hosts  /opt/			#文件已经存在时,提示是否覆盖
mv: overwrite ‘/opt/hosts’? n
[root@sh-BC ~]# mv -i hosts  /opt/
mv: overwrite ‘/opt/hosts’? n
[root@sh-BC ~]# alias 
alias cp=\'cp -i\'
alias egrep=\'egrep --color=auto\'
alias fgrep=\'fgrep --color=auto\'
alias grep=\'grep --color=auto\'
alias l.=\'ls -d .* --color=auto\'
alias ll=\'ls -l --color=auto\'
alias ls=\'ls --color=auto\'
alias mv=\'mv -i\'				#系统自带的别名  

[root@sh-BC ~]# mv -f  hosts  /opt/		#强制覆盖  
[root@sh-BC ~]# ll
total 12
-rw-r--r--. 1 root root 4201 Jun 15 12:24 grub2.cfg
drwxr-xr-x. 2 root root    6 Apr 11  2018 opt
-rw-r--r--. 1 root root 1013 Jun 15 12:27 passwd
[root@sh-BC ~]# ll /opt/
total 4
-rw-r--r--. 1 root root 158 Jun 16 09:05 hosts
drwxr-xr-x. 2 root root  23 Jun 15 12:22 test


[root@sh-BC ~]# cp /etc/passwd  ./
cp: overwrite ‘./passwd’? n
[root@sh-BC ~]# \cp  /etc/passwd ./		#临时取消别名的作用 
[root@sh-BC ~]# ll
total 12
-rw-r--r--. 1 root root 4201 Jun 15 12:24 grub2.cfg
drwxr-xr-x. 2 root root    6 Apr 11  2018 opt
-rw-r--r--. 1 root root 1013 Jun 16 09:09 passwd


[root@sh-BC ~]# mv -t  ./  /opt/hosts		#把原位置跟目标位置进行调换 
[root@sh-BC ~]# ll
total 16
-rw-r--r--. 1 root root 4201 Jun 15 12:24 grub2.cfg
-rw-r--r--. 1 root root  158 Jun 16 09:05 hosts
drwxr-xr-x. 2 root root    6 Apr 11  2018 opt
-rw-r--r--. 1 root root 1013 Jun 16 09:09 passwd
[root@sh-BC ~]# ll /opt/
total 0
drwxr-xr-x. 2 root root 23 Jun 15 12:22 test


	
#重命名

[root@sh-BC ~]# mv grub2.cfg  123.txt
[root@sh-BC ~]# ll
total 16
-rw-r--r--. 1 root root 4201 Jun 15 12:24 123.txt
-rw-r--r--. 1 root root  158 Jun 16 09:05 hosts
drwxr-xr-x. 2 root root    6 Apr 11  2018 opt
-rw-r--r--. 1 root root 1013 Jun 16 09:09 passwd
[root@sh-BC ~]# mv opt/  test
[root@sh-BC ~]# ll
total 16
-rw-r--r--. 1 root root 4201 Jun 15 12:24 123.txt
-rw-r--r--. 1 root root  158 Jun 16 09:05 hosts
-rw-r--r--. 1 root root 1013 Jun 16 09:09 passwd
drwxr-xr-x. 2 root root    6 Apr 11  2018 test

三、文件管理之基础命令-rename

1.rename		#利用替换字符串的方式进行重命名 


[root@BC ~]# rename   test   oldboy   test.txt 
[root@BC ~]# ll
total 4
-rw-r--r--. 1 root root 158 Jul  9 10:00 host
drwxr-xr-x. 2 root root   6 Jul  9 09:59 mot
-rw-r--r--. 1 root root   0 Jul  9 10:08 oldboy.txt

四、文件管理之基础命令-rm

1. rm			#删除文件或者目录 

选项:

	-i    #在删除文件的时候,提示你是否确认删除    系统别名 
	
	-f	 #强制删除不提示  
	
	-r	 #删除目录使用  递归删除  
	
	
[root@sh-BC ~]# rm   123.txt 			#提示你是否确认删除 
rm: remove regular file ‘123.txt’? n
[root@sh-BC ~]# alias 
alias cp=\'cp -i\'
alias egrep=\'egrep --color=auto\'
alias fgrep=\'fgrep --color=auto\'
alias grep=\'grep --color=auto\'
alias l.=\'ls -d .* --color=auto\'
alias ll=\'ls -l --color=auto\'
alias ls=\'ls --color=auto\'
alias mv=\'mv -i\'
alias rm=\'rm -i\'			#提示是否删除文件  


[root@sh-BC ~]# rm -f 123.txt 		#强制删除不提示 
[root@sh-BC ~]# ll
total 8
-rw-r--r--. 1 root root  158 Jun 16 09:05 hosts
-rw-r--r--. 1 root root 1013 Jun 16 09:09 passwd
drwxr-xr-x. 2 root root    6 Apr 11  2018 test

[root@sh-BC ~]# rm -f  test/
rm: cannot remove ‘test/’: Is a directory		#这是个目录  

[root@sh-BC ~]# rm -rf  test/		#递归目录  
[root@sh-BC ~]# ll
total 8
-rw-r--r--. 1 root root  158 Jun 16 09:05 hosts
-rw-r--r--. 1 root root 1013 Jun 16 09:09 passwd

[root@sh-BC ~]# rm -rf ./		#删除当前所在位置的目录  


[root@sh-BC ~]# rm -rf ./*		#删除一个目录下的所有内容    排除隐藏文件   确认好自己在那里 

==

[root@sh-BC ~]# rm -rf *


[root@sh-BC ~]# rm -rf /*		#禁止执行此命令

五、查看文件内容命令-echo

1. echo  	#打印你所要输出的内容    打印变量的值   创建新文件   修改文件    输出加上颜色      脚本中使用的多 


选项:

	-n		#不自动换行 
	
	-e		#支持一些特殊字符的使用 
    
    	\n	#换行符 
    	
    	\t	#tab键 
	
	
#所见即所得
[root@sh-BC ~]# echo  hello
hello
[root@sh-BC ~]# echo hello world
hello world
[root@sh-BC ~]# echo \'hello world\'
hello world


[root@sh-BC ~]# echo hello
hello
[root@sh-BC ~]# echo  -n hello		#输出的时候不自动换行  
hello[root@sh-BC ~]# 

[root@sh-BC ~]# echo -e  \'hello\nworld\'		#-e  支持一些特殊字符  \n  换行符
hello
world

[root@sh-BC ~]# echo -e  \'hello\tworld\'		#\t  tab键  
hello	world


[root@sh-BC ~]# name=BC
[root@sh-BC ~]# echo $name			#打印变量  
BC



[root@sh-BC ~]# echo "hello world"  > test.txt		#创建一个非空文件
[root@sh-BC ~]# ll
total 8
-rw-------. 1 root root 1497 Jun  9 20:00 anaconda-ks.cfg
-rw-r--r--. 1 root root   12 Jun 16 10:11 test.txt
[root@sh-BC ~]# cat test.txt 
hello world
[root@sh-BC ~]# 

#字体颜色

  echo -e "\033[30m 黑色字 \033[0m"
  echo -e "\033[31m 红色字 \033[0m"
  echo -e "\033[32m 绿色字 \033[0m"
  echo -e "\033[33m 黄色字 \033[0m"
  echo -e "\033[34m 蓝色字 \033[0m" 
  echo -e "\033[35m 紫色字 \033[0m" 
  echo -e "\033[36m 天蓝字 \033[0m" 
  echo -e "\033[37m 白色字 \033[0m" 


#字背景颜色

  echo -e "\033[40;37m 黑底白字 \033[0m"
  echo -e "\033[41;37m 红底白字 \033[0m" 
  echo -e "\033[42;37m 绿底白字 \033[0m" 
  echo -e "\033[43;37m 黄底白字 \033[0m" 
  echo -e "\033[44;37m 蓝底白字 \033[0m" 
  echo -e "\033[45;37m 紫底白字 \033[0m" 
  echo -e "\033[46;37m 天蓝底白字 \033[0m" 
  echo -e "\033[47;30m 白底黑字 \033[0m"

#最后的控制选项

  \33[0m 关闭所有属性 
  \33[1m 设置高亮度 
  \33[4m 下划线 
  \33[5m 闪烁 
  \33[7m 反显 
  \33[8m 消隐 
  \33[30m — \33[37m 设置前景色 
  \33[40m — \33[47m 设置背景色 
  \33[nA 光标上移n行 
  \33[nB 光标下移n行 
  \33[nC 光标右移n行 
  \33[nD 光标左移n行 
  \33[y;xH设置光标位置 
  \33[2J 清屏 
  \33[K 清除从光标到行尾的内容 
  \33[s 保存光标位置 
  \33[u 恢复光标位置 
  \33[?25l 隐藏光标 
  \33[?25h 显示光标



[root@sh-BC ~]# echo -e "\033[31mHello world\033[0m"
Hello world


[root@sh-BC ~]# echo -e "\033[43;32m 红底白字 \033[0m"
 红底白字 

六、查看文件内容命令-cat

1. cat   #显示文件内容  把文件内容全部显示出来     创建新文件  修改文件    合并文件  


选项:

	-n		#显示文件时,显示文件的行号   

	-A		#给显示的文件内容的每行结尾加上一个标识符  


[root@sh-BC ~]# cat test.txt 	#显示文件的所有内容  
hello world


[root@sh-BC ~]# cat -n  test.txt 		#显示文件内容时,并显示行号 
     1	hello world


[root@sh-BC ~]# cat -A  test.txt 		#给文件每一行的结尾加上标识符  主要是查看每行的最后面是否存在空格或者tab键

hello world$


[root@sh-BC ~]# cat test.txt  > test.log		#创建一个非空文件   根据一个文件内容进行创建一个新文件 
[root@sh-BC ~]# ll
total 12
-rw-------. 1 root root 1497 Jun  9 20:00 anaconda-ks.cfg
-rw-r--r--. 1 root root   12 Jun 16 10:34 test.log
-rw-r--r--. 1 root root   12 Jun 16 10:11 test.txt
[root@sh-BC ~]# cat test.log 
hello world

#同时查看多个文件  

[root@sh-BC ~]# cat hosts   test.txt 
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
hello world


[root@sh-BC ~]# cat hosts   test.txt  > 123.txt		#将两个文件合并成一个文件  
[root@sh-BC ~]# cat 123.txt
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
hello world


>  #先清空文件内容 

>>	#追加 

[root@sh-BC ~]# cat >BC.txt<<EOF  #从命令行读取输入,直到一个与EOF相同的行结束。标识符限定输入重定向
> hello world
> EOF
[root@sh-BC ~]# ll
total 24
-rw-r--r--. 1 root root  170 Jun 16 10:36 123.txt
-rw-------. 1 root root 1497 Jun  9 20:00 anaconda-ks.cfg
-rw-r--r--. 1 root root  158 Jun 16 10:35 hosts
-rw-r--r--. 1 root root   12 Jun 16 10:38 BC.txt
-rw-r--r--. 1 root root   12 Jun 16 10:34 test.log
-rw-r--r--. 1 root root   12 Jun 16 10:11 test.txt
[root@sh-BC ~]# cat BC.txt 
hello world

七、查看文件内容命令-more

1. more  #分页显示文件内容   文件显示完成之后,退出  

[root@sh-BC ~]# more  services 

		选项:

		-num		#num是数字    指定一页显示多少行 
		
		+num		#num是数字    指定从第几行开始显示文件内容 


	空格或者f键  		 #向下翻页
	
	b键					#向上翻页
	
	回车					#向下一行  
	
	h					#帮助信息 
	
	q					#退出  
	 
	/xxx				#搜索你要搜索的内容    搜索出来的内容不会高亮显示 
	
			n			#向下查找   不能向上查找 
			
	=					#显示当前光标所在的行号 
	
	
[root@sh-BC ~]# more  -5  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
--More--(0%)
	

[root@sh-BC ~]# more  +5  services		#从第几行开始显示 

八、查看文件内容命令-less

1. less   #分页显示文件内容    退出之后会把显示的内容收回    文件显示完成之后,不会自动退出,要手动

选项:

	-N			#显示文件内容的时候,加上行号  

	-i			#在搜索的时候,忽略大小写  

	空格或者f键		#向下翻页 
	
	b键				#向上翻页 
	
	回车				#向下一行 
	
	q				#退出
	
	h				#显示帮助 
	
	/xxxx			#搜索指定的内容    会把搜索出来的内容高亮显示  
	
		n			#向下查找 
		
		N			#向上查找 
		
		
	=				#显示当前页是第几行到第几行   总行数    总字节  显示已经显示多少字节    显示已经查看文件内容的比例

		
[root@sh-BC ~]# less -i services 		#忽略大小写  搜索的时候 


[root@sh-BC ~]# less -N services 		#显示文件内容的时候,显示行号  

2020年07月10日上午(day06)

一、查看文件内容命令-head

1.head			#显示文件的头部信息,默认显示文件的前十行内容 


选项:

		-n		#取消默认输出
        
        -c		#显示文件的最前面的字符  

[root@BC ~]# head passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin



[root@BC ~]# head  -n 2  passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

===

[root@BC ~]# head  -2  passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin


[root@BC ~]# head  -20  passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin


[root@BC ~]# head  -c5  passwd 
root:[root@BC ~]# 


二、查看文件内容命令-tail

1.tail				#显示文件的尾部信息,默认显示文件最后10行 

	选项:
	
			-n		#取消默认输出
            
            -c		#显示最后几个字符 
            
            -f		#实时显示文件的尾部变化信息  
            
            -F		#实时更新文件的内容,当文件不存在,不会退出,会一直尝试读取这个文件,直到文件存在 

[root@BC ~]# tail  passwd
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin


[root@BC ~]# tail  -n 1  passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin

===

[root@BC ~]# tail  -1  passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin


[root@BC ~]# tail  -c5  passwd 			#显示最后5个字符,只能看见4个,另外一个是换行符 
ogin
[root@BC ~]# 


[root@BC ~]# tail -f  passwd 
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin


#另外一个窗口进行测试  
[root@BC ~]# echo \'hello\'  >> passwd



[root@BC ~]# tail  -f  test.log
tail: cannot open ‘test.log’ for reading: No such file or directory
tail: no files remaining
[root@BC ~]# tail  -F  test.log
tail: cannot open ‘test.log’ for reading: No such file or directory



tail: ‘test.log’ has appeared;  following end of new file
test


三、查看文件内容命令-tailf

1.tailf				#实时更新文件的内容  


tailf    ====    tail   -f

当文件内容没有发生变化时,tailf不会去读取磁盘中的信息,减少磁盘的读写 ,tail  -f  当文件内容没有发生变化时,会一直向磁盘进行读取


选项:  

	-n			#取消默认输出 
	
	

四、文件或者命令查找-locate


1.  locate     #查找文件或者目录的路径     用到了本地的数据库  文件名称的数据库 根据本地的数据库进行查找文件,不会查找到最新的文件  

[root@BC ~]# yum  install  -y  mlocate

选项:

		-i		#不区分大小写  
		
		-r		#简单使用正则表达式   $  结尾  

/var/lib/mlocate/mlocate.db

[root@BC ~]# updatedb			#更新数据库  

#把系统中所有文件名称包含passwd的文件全部查找出来 

[root@BC ~]# locate  passwd
/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/etc/security/opasswd
/root/passwd
/usr/bin/gpasswd
/usr/bin/grub2-mkpasswd-pbkdf2
/usr/bin/passwd
/usr/lib/firewalld/services/kpasswd.xml


[root@BC ~]# locate    hostnamectl
/usr/bin/hostnamectl
/usr/share/bash-completion/completions/hostnamectl
/usr/share/man/man1/hostnamectl.1.gz
/usr/share/zsh/site-functions/_hostnamectl

[root@BC ~]# touch  hostnamectl

[root@BC ~]# updatedb	

[root@BC ~]# locate    hostnamectl
/root/hostnamectl
/usr/bin/hostnamectl
/usr/share/bash-completion/completions/hostnamectl
/usr/share/man/man1/hostnamectl.1.gz
/usr/share/zsh/site-functions/_hostnamectl

[root@BC ~]# updatedb 
[root@BC ~]# locate    hostnamectl
/root/hostnamectl
/usr/bin/hostnamectl
/usr/share/bash-completion/completions/hostnamectl
/usr/share/man/man1/hostnamectl.1.gz
/usr/share/zsh/site-functions/_hostnamectl
[root@BC ~]# locate  -i  hostnamectl
/opt/HOSTNAMEctl
/root/hostnamectl
/usr/bin/hostnamectl
/usr/share/bash-completion/completions/hostnamectl
/usr/share/man/man1/hostnamectl.1.gz
/usr/share/zsh/site-functions/_hostnamectl


[root@BC ~]# locate  -r  hostname$
/etc/hostname
/etc/selinux/targeted/active/modules/100/hostname
/usr/bin/hostname
/usr/bin/nmtui-hostname
/usr/lib64/gettext/hostname

五、文件或者命令查找-which

1.which					#查找命令的绝对路径  

[root@BC ~]# which  ping
/usr/bin/ping

#查找命令的绝对路径时,是通过PATH环境变量中的路径进行查找  
[root@BC ~]# echo  $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

#不使用which的别名进行查找命令的绝对路径 

[root@BC ~]# \which   cp
/usr/bin/cp


[root@BC ~]# rpm -qf  `which  ping`
iputils-20160308-10.el7.x86_64

[root@BC ~]# rpm  -qf  /usr/bin/ping
iputils-20160308-10.el7.x86_64

六、文件或者命令查找-whereis


1.whereis			#查找系统二进制程序、man帮助文件、源代码文件     查找不到自己创建的文件  

选项:

	-b		#只查找二进制程序文件
	
	-m		#查找man帮助文件 
	
	-s		#查找源代码文件  

[root@BC ~]# whereis   ping
ping: /usr/bin/ping /usr/share/man/man8/ping.8.gz


[root@BC ~]# whereis -b  ping
ping: /usr/bin/ping
[root@BC ~]# whereis -m  ping
ping: /usr/share/man/man8/ping.8.gz

七、文件或者命令查找-type

1. type命令 		#显示指定命令的类型   判断你的命令是内部命令还是外部命令 

选项:

	-a		#显示内置命令的绝对路径  
	
	-p		#只显示命令的绝对路径

help命令可以显示系统中所有的内置命令 



[root@sh-BC ~]# type  cd		#cd是一个内置命令  
cd is a shell builtin
[root@sh-BC ~]# type -a  cd		#查看内部命令的路径
cd is a shell builtin
cd is /usr/bin/cd
[root@sh-BC ~]# type ip		#外部命令是不需要加-a的
ip is /usr/sbin/ip

#查看系统中的内置命令  

[root@sh-BC ~]# help

#只显示命令的绝对路径 

[root@sh-BC ~]# type -p  ip
/usr/sbin/ip
[root@sh-BC ~]# type -p  cd
[root@sh-BC ~]# type -pa  cd		#内置命令需要加-a
/usr/bin/cd


八、文件或者命令查找-find

1. find		#文件查找命令     指定路径查找   根据名称  大小  权限  时间等查找  

选项:

	-type		#根据文件类型进行查找
	
		f		#普通文件
		
		d		#目录
		
		l		#软连接文件 
		
		s		#socket文件  套接字文件  
		
		p		#管道文件 


	-name		#根据名称进行查找  
	
	
	-iname		#查找的时候忽略大小写  
	
	*		#特殊符号  通配符  不是正则     所有的意思 
	
	
				命令    目录   类型   普通文件   根据名称   叫什么名字
[root@sh-BC ~]# find  /etc   -type  f   -name  "hostname"		#精确查找 
/etc/hostname
[root@sh-BC ~]# find  /etc   -type  f   -name  "hostname*"
/etc/hostname
[root@sh-BC ~]# find  /etc   -type  f   -name  "*hostname*"
/etc/dbus-1/system.d/org.freedesktop.hostname1.conf
/etc/hostname

#全局查找    *  所有的意思 

[root@sh-BC ~]# find  /   -type  f   -name  "*hostname*"
/proc/sys/kernel/hostname
/etc/dbus-1/system.d/org.freedesktop.hostname1.conf
/etc/hostname
/root/hostname{html.php}
/root/hostname.html
/root/hostname.php
/root/hostname
/usr/bin/hostname
/usr/bin/hostnamectl

#查找以hostname为结尾的文件

[root@sh-BC ~]# find  /   -type  f   -name  "*hostname"
/proc/sys/kernel/hostname
/etc/hostname
/root/hostname
/usr/bin/hostname
/usr/lib64/gettext/hostname

#以hostname为开头的文件

[root@sh-BC ~]# find  /   -type  f   -name  "hostname*"
/proc/sys/kernel/hostname
/etc/hostname
/root/hostname{html.php}
/root/hostname.html
/root/hostname.php
/root/hostname
/usr/bin/hostname
/usr/bin/hostnamectl
/usr/lib64/gettext/hostname
/usr/share/man/man1/hostname.1.gz
/usr/share/man/man1/hostnamectl.1.gz

#精确查找,名称只能为hostname

[root@sh-BC ~]# find  /   -type  f   -name  "hostname"
/proc/sys/kernel/hostname
/etc/hostname
/root/hostname
/usr/bin/hostname
/usr/lib64/gettext/hostname


#查找名称为hostname的目录

[root@sh-BC ~]# find  /   -type  d   -name  "hostname"
/etc/selinux/targeted/active/modules/100/hostname
[root@sh-BC ~]# ll -d /etc/selinux/targeted/active/modules/100/hostname
drwx------. 2 root root 44 Jun  9 19:57 /etc/selinux/targeted/active/modules/100/hostname
[root@sh-BC ~]# 

#查找名称的时候忽略大小写 

[root@sh-BC ~]# find  /   -type  d   -iname  "hostname"
/etc/selinux/targeted/active/modules/100/hostname
/usr/lib64/perl5/auto/Sys/Hostname


#根据目录的层级查找

[root@sh-BC ~]# find  /  -maxdepth  2   -type  d   -name  "hostname"
/root/hostname
[root@sh-BC ~]# 



九、文件上传或者下载命令-rz

1.rz					#将本地的文件上传到Linux操作系统     

#不能上传目录,需要将目录打成一个压缩包进行上传     只能上传 4G以下的文件  

[root@BC ~]# yum  install  lrzsz   -y

选项:

	-E		#当上传的文件已经存在时,系统会进行重命名   会在原来的文件名称后面加上.数字  从0开始 
	
	
#执行命令,会跳出一个Windows界面的窗口,选择你要上传的文件  

[root@BC ~]# rz

[root@BC ~]# ll
total 16
-rw-r--r--. 1 root root 13140 Jul  7 12:23 day03.md


[root@BC ~]# rz  -E

[root@BC ~]# ll
total 32
-rw-r--r--. 1 root root 13140 Jul  7 12:23 day03.md
-rw-r--r--. 1 root root 13140 Jul  7 12:23 day03.md.0


2. sz		#下载命令  

[root@sh-BC ~]# sz  /etc/passwd		#选择你要下载的文件



#联网下载 


十、文件上传或者下载命令-wget

[root@BC ~]# yum  install  -y  wget 

#联网下载软件包  


选项:  

	-O		#指定下载的路径和名称  
	
	-q		#静默输出  
	
	--limit-rate=10k		#限制下载的速率     k  ===KB    m  == MB
	
	

[root@BC ~]# wget  http://www.baidu.com
--2020-07-10 11:57:50--  http://www.baidu.com/
Resolving www.baidu.com (www.baidu.com)... 112.80.248.75, 112.80.248.76
Connecting to www.baidu.com (www.baidu.com)|112.80.248.75|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2381 (2.3K) [text/html]
Saving to: ‘index.html’

100%[===============================================================================>] 2,381       --.-K/s   in 0.008s  

2020-07-10 11:57:51 (290 KB/s) - ‘index.html’ saved [2381/2381]

[root@BC ~]# wget   http://nginx.org/download/nginx-1.18.0.tar.gz
--2020-07-10 12:00:16--  http://nginx.org/download/nginx-1.18.0.tar.gz
Resolving nginx.org (nginx.org)... 95.211.80.227, 62.210.92.35, 2001:1af8:4060:a004:21::e3
Connecting to nginx.org (nginx.org)|95.211.80.227|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1039530 (1015K) [application/octet-stream]
Saving to: ‘nginx-1.18.0.tar.gz’

100%[===============================================================================>] 1,039,530    282KB/s   in 3.6s   

2020-07-10 12:00:20 (282 KB/s) - ‘nginx-1.18.0.tar.gz’ saved [1039530/1039530]

[root@BC ~]# ll
total 1020
-rw-r--r--. 1 root root    2381 Jul 10 11:57 index.html
-rw-r--r--. 1 root root 1039530 Apr 21 22:33 nginx-1.18.0.tar.gz


[root@BC ~]# wget  -O  /opt/nginx.tar.gz  http://nginx.org/download/nginx-1.18.0.tar.gz
--2020-07-10 12:01:41--  http://nginx.org/download/nginx-1.18.0.tar.gz
Resolving nginx.org (nginx.org)... 62.210.92.35, 95.211.80.227, 2001:1af8:4060:a004:21::e3
Connecting to nginx.org (nginx.org)|62.210.92.35|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1039530 (1015K) [application/octet-stream]
Saving to: ‘/opt/nginx.tar.gz’

100%[===============================================================================>] 1,039,530    272KB/s   in 3.7s   

2020-07-10 12:01:46 (272 KB/s) - ‘/opt/nginx.tar.gz’ saved [1039530/1039530]

[root@BC ~]# ll /opt/
total 1016
-rw-r--r--. 1 root root       0 Jul 10 10:32 hostname
-rw-r--r--. 1 root root       0 Jul 10 10:32 hostnamectl
drwxr-xr-x. 2 root root       6 Jul 10 10:39 HOSTNAMECTL
-rw-r--r--. 1 root root 1039530 Apr 21 22:33 nginx.tar.gz


[root@BC ~]# wget  -q  http://nginx.org/download/nginx-1.19.1.tar.gz
[root@BC ~]# ll
total 2100
-rw-r--r--. 1 root root   41240 Mar 23 00:20 032220_1620_Zabbix1.png
-rw-r--r--. 1 root root    9810 Jul  8 00:06 download.html
-rw-r--r--. 1 root root    2381 Jul 10 11:57 index.html
-rw-r--r--. 1 root root 1039530 Apr 21 22:33 nginx-1.18.0.tar.gz
-rw-r--r--. 1 root root 1047223 Jul  7 23:59 nginx-1.19.1.tar.gz



[root@BC ~]# wget   --limit-rate=10k   http://nginx.org/download/nginx-1.18.0.tar.gz ^C
[root@BC ~]# rm -rf ./*
[root@BC ~]# wget   --limit-rate=10k   http://nginx.org/download/nginx-1.18.0.tar.gz
--2020-07-10 12:11:13--  http://nginx.org/download/nginx-1.18.0.tar.gz
Resolving nginx.org (nginx.org)... 62.210.92.35, 95.211.80.227, 2001:1af8:4060:a004:21::e3
Connecting to nginx.org (nginx.org)|62.210.92.35|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1039530 (1015K) [application/octet-stream]
Saving to: ‘nginx-1.18.0.tar.gz’

32% [========================>                                                       ] 335,872     10.0KB/s  eta 70s   



十一、文件上传或者下载命令-curl

1.curl				#通过url规则进行文件传输工具  

#测试网站使用的命令  


选项:

		-o			#将访问的数据内容写入到指定的文件中 
        
        -s			#静默输出  
		
		

[root@BC ~]# curl  -o  ./baidu.html    www.baidu.com
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2381  100  2381    0     0    311      0  0:00:07  0:00:07 --:--:--   657
[root@BC ~]# ll
total 1356
-rw-r--r--. 1 root root    2381 Jul 10 12:15 baidu.html


[root@BC ~]# curl  -s   -o   ./nginx.tar.gz    http://nginx.org/download/nginx-1.18.0.tar.gz


2020年07月13日上午(day07)

一、文件字符串处理命令-sort


1.sort		#排序  将不相同的行进行排序在一起     默认是根据第一列进行排序  默认是以空白字符为分割符  
			#默认以字母进行排序


选项:

	-k		#指定哪一列为分隔符  
	
	-n		#以数值大小的方式进行排序 
	
	-r		#倒叙排序  

	-t		#指定分割符  
	
cat>sort.txt<<EOF
b   5
c   3
a   11
f   2
d   9
EOF



[root@BC ~]# cat sort.txt 
b   5
c   3
a   11
f   2
d   9
[root@BC ~]# sort sort.txt 
a   11
b   5
c   3
d   9
f   2

[root@BC ~]# sort  -k2   sort.txt 
a   11
f   2
c   3
b   5
d   9
[root@BC ~]# sort  -nk2   sort.txt 
f   2
c   3
b   5
d   9
a   11

[root@BC ~]# sort  -rnk2  sort.txt 
a   11
d   9
b   5
c   3
f   2


[root@BC ~]# cp  /etc/passwd  ./
[root@BC ~]# cat passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin


[root@BC ~]# sort  -t ":"  -nk3  passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin


cat>file.txt<<EOF
123
abc
123
edf
456
123
abc
EOF


[root@BC ~]# cat file.txt 
123
abc
123
edf
456
123
abc

[root@BC ~]# sort  file.txt 
123
123
123
456
abc
abc
edf


二、文件字符串处理命令-uniq


1.uniq		#去重   去除重复的行   只能去除相同相邻的行     统计   将重复的行的次数统计出来    跟sort结合使用  


|			#管道   将前面命令的执行结果交给后面的命令继续执行   操作的是数据  


选项:

		-c		#统计重复的行的次数 

[root@BC ~]# sort  file.txt 
123
123
123
456
abc
abc
edf

[root@BC ~]# sort  file.txt | uniq  
123
456
abc
edf

[root@BC ~]# sort  file.txt | uniq  -c
      3 123
      1 456
      2 abc
      1 edf


[root@BC ~]# sort  file.txt | uniq  -c | sort  
      1 456
      1 edf
      2 abc
      3 123
[root@BC ~]# sort  file.txt | uniq  -c | sort  -n
      1 456
      1 edf
      2 abc
      3 123
[root@BC ~]# sort  file.txt | uniq  -c | sort  -rn
      3 123
      2 abc
      1 edf
      1 456

三、文件字符串处理命令-cut


1.cut			#取列      awk命令的小弟    默认的分隔符为tab键 

选项:

		-d		#指定分隔符 
		
		-f		#取出指定的列 
        
        -c		#取出指定的字符  按照行进行处理的  
	
[root@BC ~]# echo "root:x:0:0:root:/root:/bin/bash" >test.txt
[root@BC ~]# cat test.txt
root:x:0:0:root:/root:/bin/bash

#取出第七列
[root@BC ~]# cut  -d ":"  -f7   test.txt 
/bin/bash

#取出第一列和第七列
[root@BC ~]# cut  -d ":"  -f1,7   test.txt 
root:/bin/bash

#取出第五列到第七列
[root@BC ~]# cut  -d ":"  -f5-7   test.txt 
root:/root:/bin/bash

[root@BC ~]# cut  -d  ":"  -f7   passwd 
/bin/bash
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/bin/sync
/sbin/shutdown
/sbin/halt
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
[root@BC ~]# cut  -d  ":"  -f7   passwd  | sort  
/bin/bash
/bin/sync
/sbin/halt
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/shutdown
[root@BC ~]# cut  -d  ":"  -f7   passwd  | sort   | uniq 
/bin/bash
/bin/sync
/sbin/halt
/sbin/nologin
/sbin/shutdown
[root@BC ~]# cut  -d  ":"  -f7   passwd  | sort   | uniq  -c
      1 /bin/bash
      1 /bin/sync
      1 /sbin/halt
     14 /sbin/nologin
      1 /sbin/shutdown
[root@BC ~]# cut  -d  ":"  -f7   passwd  | sort   | uniq  -c | sort -n
      1 /bin/bash
      1 /bin/sync
      1 /sbin/halt
      1 /sbin/shutdown
     14 /sbin/nologin
[root@BC ~]# cut  -d  ":"  -f7   passwd  | sort   | uniq  -c | sort -rn
     14 /sbin/nologin
      1 /sbin/shutdown
      1 /sbin/halt
      1 /bin/sync
      1 /bin/bash


[root@BC ~]# cat test.txt 
root:x:0:0:root:/root:/bin/bash
[root@BC ~]# cut  -c 6  test.txt 
x
[root@BC ~]# cut  -c 6  passwd 
x
:
n
:
4
x
o
x
x
t
#取出不同的字符 
[root@BC ~]# cut  -c 6,8  test.txt 
x0

#取出连续的字符  
[root@BC ~]# cut  -c 1-4  test.txt 
root


#取出系统eth0的IP地址

[root@BC ~]# yum install  -y  net-tools

[root@BC ~]# ifconfig  eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.100  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::3310:9d15:9ee4:43e8  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:eb:ea:8d  txqueuelen 1000  (Ethernet)
        RX packets 1634  bytes 464970 (454.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1033  bytes 114568 (111.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@BC ~]# ifconfig  eth0 | head  -2
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.100  netmask 255.255.255.0  broadcast 10.0.0.255
[root@BC ~]# ifconfig  eth0 | head  -2 | tail  -1 
        inet 10.0.0.100  netmask 255.255.255.0  broadcast 10.0.0.255
[root@BC ~]# ifconfig  eth0 | head  -2 | tail  -1  | cut  -d " "  -f10
10.0.0.100



[root@BC ~]# ip a s eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:eb:ea:8d brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::3310:9d15:9ee4:43e8/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@BC ~]# ip a s eth0  | head  -3
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:eb:ea:8d brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
[root@BC ~]# ip a s eth0  | head  -3 | tail  -1
    inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
[root@BC ~]# ip a s eth0  | head  -3 | tail  -1 | cut -c 10-19
10.0.0.100



[root@BC ~]# ip a s eth0  | head  -3 | tail  -1
    inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
[root@BC ~]# ip a s eth0  | head  -3 | tail  -1 | cut  -d " "  -f6
10.0.0.100/24
[root@BC ~]# ip a s eth0  | head  -3 | tail  -1 | cut  -d " "  -f6 | cut -d "/"  -f1
10.0.0.100

四、文件字符串处理命令-tr



1.tr		#替换  删除   sed的小弟     只能单对单的替换 

选项:

	-d		#删除指定的字符
	
语法:

	tr   old   new   <   file  


<		#标准输入重定向 


[root@BC ~]# cat test.txt 
root:x:0:0:root:/root:/bin/bash

[root@BC ~]# tr  "0"  "9"  < test.txt 
root:x:9:9:root:/root:/bin/bash

[root@BC ~]# tr  -d  "o"  <  test.txt 
rt:x:0:0:rt:/rt:/bin/bash
[root@BC ~]# 


[root@BC ~]# ip a s eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:eb:ea:8d brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::3310:9d15:9ee4:43e8/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@BC ~]# ip a s eth0 | head -3 | tail -1
    inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
[root@BC ~]# ip a s eth0 | head -3 | tail -1 | tr  \'/\'  \' \'
    inet 10.0.0.100 24 brd 10.0.0.255 scope global noprefixroute eth0
[root@BC ~]# ip a s eth0 | head -3 | tail -1 | tr  \'/\'  \' \' | cut  -d " "  -f6
10.0.0.100

五、文件字符串处理命令-wc


1.wc		#统计    行数  字节数  列数   行的长度  

选项:

	-l		#统计行数 
	
	-w		#统计列数,默认以空白字符为分隔符 
	
	-c		#统计字节数 
	
	-L		#统计文件中最长的行的长度
	
	
[root@BC ~]# wc  passwd 
 18  26 798 passwd
[root@BC ~]# wc -l  passwd 
18 passwd
[root@BC ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@BC ~]# wc  /etc/hosts
  2  10 158 /etc/hosts
[root@BC ~]# wc -w  /etc/hosts
10 /etc/hosts
[root@BC ~]# ll passwd 
-rw-r--r--. 1 root root 798 Jul 13 16:49 passwd
[root@BC ~]# ll /etc/hosts
-rw-r--r--. 1 root root 158 Jun  7  2013 /etc/hosts
[root@BC ~]# wc -c  /etc/hosts
158 /etc/hosts
[root@BC ~]# wc -c  passwd 
798 passwd
[root@BC ~]# 


[root@BC ~]# wc -L  passwd
68 passwd
[root@BC ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@BC ~]# wc -L  /etc/hosts
78 /etc/hosts


[root@BC ~]# name=ewuighrtuighwiorteugh
[root@BC ~]# echo $name
ewuighrtuighwiorteugh
[root@BC ~]# echo $name | wc -L
21

六、Linux三剑客之老三-grep


1.grep			#过滤    给过滤出来的内容加上颜色    按照行进行处理的  


[root@BC ~]# alias 
alias cp=\'cp -i\'
alias egrep=\'egrep --color=auto\'
alias fgrep=\'fgrep --color=auto\'
alias grep=\'grep --color=auto\'
alias l.=\'ls -d .* --color=auto\'
alias ll=\'ls -l --color=auto\'
alias ls=\'ls --color=auto\'
alias mv=\'mv -i\'
alias rm=\'rm -i\'

#选项:

	-n		#显示出过滤出来的所在文件的行号
	
	-v		#排除,取反
	
	-c		#统计过滤出来的内容的总行数 
	
	-i		#过滤的时候忽略大小写   
	
	-o		#只显示你要过滤的内容
    
    -w		#精确匹配  只过滤你要过滤的单词,而不是包含这个单词的字符串  
    
    -r		#递归过滤  针对目录进行操作  

	-A		#显示出你要过滤的内容及向下多少行的内容 
	
	-B		#显示出你要过滤的内容及向上多少行的内容 
	
	-C		#显示出你要过滤的内容向上向下各多少行 

	^		#以什么开头
	
	$		#以什么为结尾
	
	|		# 或者    扩展正则   
	
	-E		#支持扩展正则   ====  egrep
	
	.		#任意一个字符  排除换行符  
	
	*		#前面的字符出现0次或者0次以上  
	
	.*		#所有  
	
[root@BC ~]# grep  \'root\'  passwd 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin


[root@BC ~]# grep  -n  \'root\'  passwd 
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin


[root@BC ~]# grep  -v  \'root\'  passwd 
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin


[root@BC ~]# grep \'root\'  passwd 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@BC ~]# grep  -c  \'root\'  passwd 
2


[root@BC ~]# echo "ROOT"  >> passwd 
[root@BC ~]# grep  "root"  passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@BC ~]# grep -i  "root"  passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ROOT


[root@BC ~]# grep  -o  \'root\'  passwd 
root
root
root
root


[root@BC ~]# echo  "roottttt"  >>passwd 
[root@BC ~]# grep  \'root\'  passwd 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
roottttt
[root@BC ~]# grep  -w  \'root\'  passwd 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin


[root@BC ~]# ifconfig  eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.100  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::3310:9d15:9ee4:43e8  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:eb:ea:8d  txqueuelen 1000  (Ethernet)
        RX packets 3778  bytes 648285 (633.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2329  bytes 260396 (254.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@BC ~]# ifconfig  eth0 | grep  inet
        inet 10.0.0.100  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::3310:9d15:9ee4:43e8  prefixlen 64  scopeid 0x20<link>
[root@BC ~]# ifconfig  eth0 | grep -w  inet
        inet 10.0.0.100  netmask 255.255.255.0  broadcast 10.0.0.255
[root@BC ~]# 

#针对一个目录进行操作 

[root@BC ~]# grep  -r  \'root\'  ./
./passwd:root:x:0:0:root:/root:/bin/bash
./passwd:operator:x:11:0:operator:/root:/sbin/nologin
./passwd:roottttt
./test.txt:root:x:0:0:root:/root:/bin/bash
./data/test.txt:root
./test/test.txt:root
./backup/test.txt:root


[root@BC ~]# grep  -R  \'root\'  ./
./passwd:root:x:0:0:root:/root:/bin/bash
./passwd:operator:x:11:0:operator:/root:/sbin/nologin
./passwd:roottttt
./test.txt:root:x:0:0:root:/root:/bin/bash
./data/test.txt:root
./test/test.txt:root
./backup/test.txt:root


[root@BC ~]# grep  -A 4  \'sync\'  passwd 
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin


[root@BC ~]# grep  -B 4  \'sync\'  passwd 
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync


[root@BC ~]# grep  -C 4  \'sync\'  passwd 
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin


[root@BC ~]# grep  \'root\'  passwd 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
roottttt
[root@BC ~]# grep  \'^root\'  passwd 
root:x:0:0:root:/root:/bin/bash
roottttt
[root@BC ~]# grep  \'t$\'  passwd 
halt:x:7:0:halt:/sbin:/sbin/halt
roottttt
[root@BC ~]# grep  \'adm|mail\'  passwd 
[root@BC ~]# grep -E  \'adm|mail\'  passwd 
adm:x:3:4:adm:/var/adm:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
[root@BC ~]# egrep  \'adm|mail\'  passwd 
adm:x:3:4:adm:/var/adm:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin


#取出文件中的第5行到第15行 

[root@BC ~]# head  -15  passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
[root@BC ~]# head  -15  passwd  | tail  -11
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin


[root@BC ~]# grep  \'r*\'  passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ROOT
roottttt



[root@BC ~]# grep  -n  \'.*\'  passwd 
1:root:x:0:0:root:/root:/bin/bash
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8:halt:x:7:0:halt:/sbin:/sbin/halt
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
11:games:x:12:100:games:/usr/games:/sbin/nologin
12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13:nobody:x:99:99:Nobody:/:/sbin/nologin
14:systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
15:dbus:x:81:81:System message bus:/:/sbin/nologin
16:polkitd:x:999:998:User for polkitd:/:/sbin/nologin
17:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
18:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
19:ROOT
20:roottttt
[root@BC ~]# 
[root@BC ~]# grep  -n  \'.*\'  passwd  | grep  \'^5\'
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@BC ~]# grep  -n  \'.*\'  passwd  | grep -w  \'^5\'
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@BC ~]# grep  -n  \'.*\'  passwd  | grep -wA 10  \'^5\'
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8:halt:x:7:0:halt:/sbin:/sbin/halt
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
11:games:x:12:100:games:/usr/games:/sbin/nologin
12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13:nobody:x:99:99:Nobody:/:/sbin/nologin
14:systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
15:dbus:x:81:81:System message bus:/:/sbin/nologin
[root@BC ~]# 


[root@BC ~]# grep  -n  \'.*\'  passwd   | grep -Ew   \'^8|^10\'
8:halt:x:7:0:halt:/sbin:/sbin/halt
10:operator:x:11:0:operator:/root:/sbin/nologin


七、总结


1. sort   	#排序    将相同的行排序在一起    指定某一列进行排序   默认以第一列进行排序 

	选项:
	
		-t		#指定分隔符  默认分隔符为空白字符  
		
		-k		#指定以哪一列进行排序 
		
		-n		#以数值大小进行排序 
		
		-r		#倒叙排序 


2. uniq		#去重  统计   把相邻相同的行进行去重   统计重复的次数 

	选项:
	
		-c		#统计重复的次数 
		
3.cut		#取列    

	选项:
	
		-d		#指定分隔符  ,m默认分隔符为tab键 
		
		-f		#取出指定的列,取出不连续的列使用逗号分割,取出连续的列使用短横杠进行分割 
		
		-c		#取出你指定的字符 取出不连续的列使用逗号分割,取出连续的列使用短横杠进行分割 取出的每一行
		
4. tr		#替换和删除的命令   只能单对单的进行替换 

	选项:
	
		-d		#删除指定的字符 
		
	语法:
	
		tr   旧的字符    新的字符   <  文件名 
		
5. wc		#统计

	选项:
	
		-l		#统计行数  
		
		-w		#统计列数  默认以空白字符为分隔符
		
		-c		#统计字节的大小  
		
		-L		#统计文件中最长的行的长度  字符的数量
		
6. grep		#过滤  给过滤出来的内容加上颜色 

	选项:
	
		-n		#给过滤出来的内容显示所在文件的行号 
		
		-v		#排除,取反 
		
		-i		#过滤的时候,忽略大小写 
		
		-c		#统计过滤出来的内容的行数  
		
		-o		#只显示过滤出来的内容 
		
		-w		#精确匹配,之过滤你要过滤的字符串,而不是包含这个字符串的字符串 
		
		-r		#递归过滤   针对目录进行操作 
		
		-E		#支持扩展正则使用  
		
		-A		#显示过滤出来的内容及向下多少行 
		
		-B		#显示过滤出来的内容及向上多少行 
		
		-C		#显示过滤出来的内容向上向下各多少行
        
        ^		#以什么为开头
        
        $		#以什么为结尾 
        
        |		#或者   扩展正则 
        
        .		#除换行符以外的任意一个字符 
        
        *		#匹配前面的字符出现0次或者0次以上 
        
        .*		#所有  包括空行 
        
        
        

2020年07月14日上午(day08)

一、Linux三剑客之老二-sed


1.sed		#擅长增删改查       替换


选项:

	-n		#取消默认输出 
	
	-r		#支持扩展正则使用 
	
	-i		#改变文件内容  
	
	-e		#允许多项编辑  
	
内部指令:

	p			#print  	打印 
	
	d			# 删除  排除
    
    a			#追加  将内容追加指定内容的后面 
    
    i			#插入   将内容插入到指定的内容的前面  
    
    s			#替换 
    
    g			#全局 
    
    i			#忽略大小写 
    
	
	
查   过滤   


[root@BC ~]# sed -n   \'/root/p\'  passwd 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
roottttt


[root@BC ~]# sed -n   \'/^root/p\'  passwd 
root:x:0:0:root:/root:/bin/bash
roottttt


[root@BC ~]# sed  -nr  \'/root|sshd/p\'  passwd 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
roottttt

#打印不连续的内容
[root@BC ~]# sed  -n  \'/sync/p;/mail/p\'  passwd 
sync:x:5:0:sync:/sbin:/bin/sync
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

#打印某个字符串到某个字符串的所有内容 
[root@BC ~]# sed  -n  \'/sync/,/mail/p\'  passwd 
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin


#打印单行 
[root@BC ~]# sed  -n  \'1p\'  passwd 
root:x:0:0:root:/root:/bin/bash

#打印连续的行
[root@BC ~]# sed  -n  \'1,3p\'  passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

#打印不连续的行
[root@BC ~]# sed  -n  \'1p;3p\'  passwd 
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin


[root@BC ~]# sed  -n \'5,15p\'  passwd 
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin


删     排除  

#删除包含root字符串的行  

[root@BC ~]# sed  \'/root/d\'  passwd 
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ROOT

#删除不连续的字符串   删除多个字符串  

[root@BC ~]# sed  \'/root/d;/lp/d\'  passwd 
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ROOT

#删除连续的字符串

[root@BC ~]# sed  \'/adm/,/games/d\'  passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ROOT
roottttt

#删除单行
[root@BC ~]# sed \'1d\'  passwd 
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ROOT
roottttt

#删除连续的行
[root@BC ~]# sed \'1,10d\'  passwd 
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ROOT
roottttt

#删除不连续的行 

[root@BC ~]# sed \'1d;10d\'  passwd 
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ROOT
roottttt
[root@BC ~]# 

#删除第一行到最后一行   $ 表示结尾 

[root@BC ~]# sed  \'1,$d\'  passwd 
[root@BC ~]# 

#真正改变了文件的内容 

[root@BC ~]# sed  -i  \'1,10d\'  passwd 
[root@BC ~]# cat passwd
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ROOT
roottttt


增		添加内容到文件中 


a  追加   

#将内容追加第五行的后面 
[root@BC ~]# sed  \'5aoldboy\'  passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
oldboy
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin

#将内容追加到文件的底部

[root@BC ~]# sed  \'$aoldboy\'  passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
oldboy

#追加多行内容到文件中    \n 换行符    \t  tab键 

[root@BC ~]# sed  \'10aoldboy\noldgirl\'  passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
oldboy
oldgirl
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin


[root@BC ~]# sed -i  \'$aoldboy\'  passwd 
[root@BC ~]# tail -1  passwd
oldboy

#根据字符串进行追加内容  

[root@BC ~]# sed  \'/sshd/aoldboy\'  passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
oldboy
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
oldboy

i   插入

#在第一行的前面插入内容  

[root@BC ~]# sed   \'1ioldboy\'  passwd 
oldboy
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
oldboy

#在最后一行的前面插入内容 

[root@BC ~]# sed  \'$iold\'  passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
old
oldboy


#插入多行内容  

[root@BC ~]# sed  \'1ioldboy\noldgirl\'  passwd 
oldboy
oldgirl
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
oldboy


[root@BC ~]# sed  \'/root/inew\'  passwd 
new
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
new
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
oldboy


[root@BC ~]# sed  \'/root/aold\'  passwd  | sed  \'/sshd/illl\'
root:x:0:0:root:/root:/bin/bash
old
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
old
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
lll
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
oldboy



[root@BC ~]# sed  -e  \'/root/aold\'  -e \'/sshd/illl\'  passwd 
root:x:0:0:root:/root:/bin/bash
old
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
old
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
lll
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
oldboy


改   替换 

s  替换       g   全局    i   忽略大小写  

#全局替换 

[root@BC ~]# sed  \'s#root#admin#g\'  passwd 
admin:x:0:0:admin:/admin:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/admin:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
oldboy

#针对某一行进行替换 

[root@BC ~]# sed \'1s#root#admin#g\'  passwd   
admin:x:0:0:admin:/admin:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
oldboy


#替换多行内容  

[root@BC ~]# sed  \'1,10s#root#admin#g\'   passwd 
admin:x:0:0:admin:/admin:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/admin:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
oldboy


#替换的时候,忽略大小写  

[root@BC ~]# echo "ROOT"  >>passwd
[root@BC ~]# 
[root@BC ~]# cat passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
oldboy
ROOT
[root@BC ~]# sed  \'s#root#admin#g\'  passwd 
admin:x:0:0:admin:/admin:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/admin:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
oldboy
ROOT
[root@BC ~]# sed  \'s#root#admin#gi\'   passwd 
admin:x:0:0:admin:/admin:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/admin:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
oldboy
admin
[root@BC ~]# 

#替换第10行到最后一行的内容 

[root@BC ~]# sed  \'10,$s#root#admin#gi\'   passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/admin:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
oldboy
admin


#满足包含root字符串行,再进行替换操作 

[root@BC ~]# sed  \'/root/s#bin#oldboy#g\'  passwd 
root:x:0:0:root:/root:/oldboy/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/soldboy/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
oldboy
ROOT

#满足以root开头的行 再进行替换操作 

[root@BC ~]# sed  \'/^root/s#bin#oldboy#g\'  passwd 
root:x:0:0:root:/root:/oldboy/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
oldboy
ROOT

#在每个root后面加上一个abc

[root@BC ~]# sed  \'s#root#rootabc#g\'  passwd 
rootabc:x:0:0:rootabc:/rootabc:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/rootabc:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
oldboy
ROOT

#给文件的每一行前面加上注释  # 

[root@BC ~]# sed  \'s#^#\##g\'   passwd 
#root:x:0:0:root:/root:/bin/bash
#bin:x:1:1:bin:/bin:/sbin/nologin
#daemon:x:2:2:daemon:/sbin:/sbin/nologin
#adm:x:3:4:adm:/var/adm:/sbin/nologin
#lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
#sync:x:5:0:sync:/sbin:/bin/sync
#shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
#halt:x:7:0:halt:/sbin:/sbin/halt
#mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
#operator:x:11:0:operator:/root:/sbin/nologin
#games:x:12:100:games:/usr/games:/sbin/nologin
#ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
#nobody:x:99:99:Nobody:/:/sbin/nologin
#systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
#dbus:x:81:81:System message bus:/:/sbin/nologin
#polkitd:x:999:998:User for polkitd:/:/sbin/nologin
#sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
#postfix:x:89:89::/var/spool/postfix:/sbin/nologin
#oldboy
#ROOT

#把所有的#删除掉  

[root@BC ~]# sed  \'s#\###g\'  passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
oldboy
ROOT

#将某个字符串全部删除 

[root@BC ~]# sed  \'s#root##g\'  passwd 
:x:0:0::/:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
oldboy
ROOT

#排除空行  删除空行 

[root@BC ~]# cp  /etc/ssh/sshd_config   ./

^		#以什么开头 

$		#以什么为结尾  

^$		#空行     排除有空格或者tab键的空行   

[root@BC ~]# grep -v  \'^$\'  sshd_config 
#	$OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $
# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/local/bin:/usr/bin
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.
# If you want to change the port on a SELinux system, 


[root@BC ~]# sed  \'/^$/d\'   sshd_config 
#	$OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $
# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/local/bin:/usr/bin
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the



#后向引用    ()    扩展正则  

前期定义   后期调用   \1  \2     第一个括号里面的内容 用 \1   第二个括号就是\2  

[root@BC ~]# sed  -r  \'8s#(.*)#\1 oldboy#g\'   passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt oldboy
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
oldboy
ROOT

#取IP地址 

[root@BC ~]# ifconfig   eth0  
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.100  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::3310:9d15:9ee4:43e8  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:eb:ea:8d  txqueuelen 1000  (Ethernet)
        RX packets 12703  bytes 1441173 (1.3 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8645  bytes 925660 (903.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@BC ~]# ifconfig   eth0   | sed  -n \'2p\'
        inet 10.0.0.100  netmask 255.255.255.0  broadcast 10.0.0.255
[root@BC ~]# ifconfig   eth0   | sed  -n \'2p\' | sed  -r  \'s#(^.*et )(.*)(  n.*$)#\2#g\'
10.0.0.100
[root@BC ~]# ifconfig   eth0   | sed  -n \'2p\' | sed  -r  \'s#(^.*et )(.*)(  n.*$)#\1#g\'
        inet 
[root@BC ~]# ifconfig   eth0   | sed  -n \'2p\' | sed  -r  \'s#(^.*et )(.*)(  n.*$)#\3#g\'
  netmask 255.255.255.0  broadcast 10.0.0.255

[root@BC ~]# ifconfig   eth0   | sed  -nr  \'2s#(^.*et )(.*)(  n.*$)#\2#gp\'
10.0.0.100




[root@BC ~]# ip  a s eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:eb:ea:8d brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::3310:9d15:9ee4:43e8/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@BC ~]# ip  a s eth0  | sed  -n \'3p\'
    inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
[root@BC ~]# ip  a s eth0  | sed  -n \'3p\'  | sed  -r  \'s#(^.*t )(.*)(/.*$)#\2#g\'
10.0.0.100
[root@BC ~]# ip  a s eth0  | sed  -nr  \'3s#(^.*t )(.*)(/.*$)#\2#gp\'
10.0.0.100


#将passwd文件中的第一列与第七列的位置进行调换 

[root@BC ~]# sed  -nr  \'s#(.*)(:x.*:)(.*)#\3\2\1#gp\'  passwd 
/bin/bash:x:0:0:root:/root:root
/sbin/nologin:x:1:1:bin:/bin:bin
/sbin/nologin:x:2:2:daemon:/sbin:daemon
/sbin/nologin:x:3:4:adm:/var/adm:adm
/sbin/nologin:x:4:7:lp:/var/spool/lpd:lp
/bin/sync:x:5:0:sync:/sbin:sync
/sbin/shutdown:x:6:0:shutdown:/sbin:shutdown
/sbin/halt:x:7:0:halt:/sbin:halt
/sbin/nologin:x:8:12:mail:/var/spool/mail:mail
/sbin/nologin:x:11:0:operator:/root:operator
/sbin/nologin:x:12:100:games:/usr/games:games
/sbin/nologin:x:14:50:FTP User:/var/ftp:ftp
/sbin/nologin:x:99:99:Nobody:/:nobody
/sbin/nologin:x:192:192:systemd Network Management:/:systemd-network
/sbin/nologin:x:81:81:System message bus:/:dbus
/sbin/nologin:x:999:998:User for polkitd:/:polkitd
/sbin/nologin:x:74:74:Privilege-separated SSH:/var/empty/sshd:sshd
/sbin/nologin:x:89:89::/var/spool/postfix:postfix


#打印行号 

[root@BC ~]# sed  =  passwd 
1
root:x:0:0:root:/root:/bin/bash
2
bin:x:1:1:bin:/bin:/sbin/nologin
3
daemon:x:2:2:daemon:/sbin:/sbin/nologin
4
adm:x:3:4:adm:/var/adm:/sbin/nologin
5
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin



二、Linux三剑客之老大-awk


1.awk		# 擅长取列      计算   数组  函数    编程语言 

内部命令   内部变量 


	NR 		#行号  
	
	$0		#完整的一行内容 
    
    $n		# n 是数字  表示取出第几列  多列用逗号分割 
	
	-F  	#FS   分隔符的变量
    
    NF		#最后一列 为第几列  
    
    $NF		#显示最后一列的内容
	
查   过滤


[root@BC ~]# awk  \'/root/\'   passwd 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

[root@BC ~]# awk  \'/root/;/adm/\'   passwd 
root:x:0:0:root:/root:/bin/bash
adm:x:3:4:adm:/var/adm:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin


[root@BC ~]# awk  \'/root|adm/\'   passwd 
root:x:0:0:root:/root:/bin/bash
adm:x:3:4:adm:/var/adm:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin


[root@BC ~]# awk  \'/adm/,/mail/\'   passwd 
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin


[root@BC ~]# awk  \'NR==1\'  passwd 
root:x:0:0:root:/root:/bin/bash
[root@BC ~]# awk  \'NR==1,NR==3\'  passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@BC ~]# awk  \'NR==1;NR==3\'  passwd 
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin


[root@BC ~]# awk  \'NR>10\'  passwd 
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
[root@BC ~]# awk  \'NR<10\'  passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin


[root@BC ~]# awk  \'NR<=2\'  passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@BC ~]# awk  \'NR>=15\'  passwd 
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin


&&		#并且 


[root@BC ~]# awk  \'NR>10 && NR<16\'  passwd 
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin

||  	#或者 

[root@BC ~]# awk  \'NR<3 || NR>15\'   passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin


#打印整个文件内容

[root@BC ~]# awk  \'{print  $0}\'   passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin

#给文件内容加上行号 

[root@BC ~]# awk  \'{print NR,$0}\'   passwd 
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8 halt:x:7:0:halt:/sbin:/sbin/halt
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10 operator:x:11:0:operator:/root:/sbin/nologin
11 games:x:12:100:games:/usr/games:/sbin/nologin
12 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13 nobody:x:99:99:Nobody:/:/sbin/nologin
14 systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
15 dbus:x:81:81:System message bus:/:/sbin/nologin
16 polkitd:x:999:998:User for polkitd:/:/sbin/nologin
17 sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
18 postfix:x:89:89::/var/spool/postfix:/sbin/nologin


#取反  排除 

!  取反  排除  

[root@BC ~]# awk  \'!/sbin/\'  passwd 
root:x:0:0:root:/root:/bin/bash

[root@BC ~]# awk  \'NR!=1\'  passwd 
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin

#排除了第5行到第15行

[root@BC ~]# awk  \'NR<5 || NR >15\'  passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin


# 取列 


[root@BC ~]# awk  -F:  \'{print $1}\'  passwd 
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
systemd-network
dbus
polkitd
sshd
postfix
[root@BC ~]# awk  -F:  \'{print $1,$2}\'  passwd 
root x
bin x
daemon x
adm x
lp x
sync x
shutdown x
halt x
mail x
operator x
games x
ftp x
nobody x
systemd-network x
dbus x
polkitd x
sshd x
postfix x


[root@BC ~]# awk  -F:  \'{print $NF}\'  passwd 
/bin/bash
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/bin/sync
/sbin/shutdown
/sbin/halt
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin

$(NF-1)   倒数第二列 

[root@BC ~]# awk  -F:  \'{print $(NF-1)}\'  passwd 
/root
/bin
/sbin
/var/adm
/var/spool/lpd
/sbin
/sbin
/sbin
/var/spool/mail
/root
/usr/games
/var/ftp
/
/
/
/
/var/empty/sshd
/var/spool/postfix


[root@BC ~]# awk  -F \'[:]\'  \'{print $1}\'  passwd 
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
systemd-network
dbus
polkitd
sshd
postfix

#默认分隔符为 空白字符 

[root@BC ~]# ifconfig   eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.100  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::3310:9d15:9ee4:43e8  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:eb:ea:8d  txqueuelen 1000  (Ethernet)
        RX packets 15508  bytes 1698801 (1.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 10471  bytes 1145384 (1.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@BC ~]# ifconfig   eth0 | awk  \'NR==2\'  
        inet 10.0.0.100  netmask 255.255.255.0  broadcast 10.0.0.255
[root@BC ~]# ifconfig   eth0 | awk  \'NR==2\'   | awk  \'{print  $2}\'
10.0.0.100
[root@BC ~]# ifconfig   eth0 | awk  \'NR==2{print  $2}\'
10.0.0.100

#指定多个分隔符 

[root@BC ~]# ip  a  s eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:eb:ea:8d brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::3310:9d15:9ee4:43e8/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@BC ~]# ip  a  s eth0 | awk  \'NR==3\'
    inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
[root@BC ~]# ip  a  s eth0 | awk  \'NR==3\' | awk  -F \'[ /]\'  \'{print $6}\'
10.0.0.100
[root@BC ~]# ip  a  s eth0 | awk  \'NR==3\' | awk  -F \'[ /]*\'  \'{print $3}\'
10.0.0.100
[root@BC ~]# echo "    //   inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0" >ip.txt
[root@BC ~]# cat ip.txt
    //   inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
[root@BC ~]# awk  -F \'[ /]\'  \'{print $11}\' ip.txt 
10.0.0.100
[root@BC ~]# awk  -F \'[ /]*\'  \'{print $3}\' ip.txt 
10.0.0.100


#指定分隔符   使用双引号引起来  

[root@BC ~]# awk  -F:  \'{print $1":"$2}\'  passwd 
root:x
bin:x
daemon:x
adm:x
lp:x
sync:x
shutdown:x
halt:x
mail:x
operator:x
games:x
ftp:x
nobody:x
systemd-network:x
dbus:x
polkitd:x
sshd:x
postfix:x
[root@BC ~]# awk  -F:  \'{print $1"脱产10期"$2}\'  passwd 
root脱产10期x
bin脱产10期x
daemon脱产10期x
adm脱产10期x
lp脱产10期x
sync脱产10期x
shutdown脱产10期x
halt脱产10期x
mail脱产10期x
operator脱产10期x
games脱产10期x
ftp脱产10期x
nobody脱产10期x
systemd-network脱产10期x
dbus脱产10期x
polkitd脱产10期x
sshd脱产10期x
postfix脱产10期x


[root@BC ~]# awk  -F:  \'{print  $NF":"$2":"$3":"$4":"$5":"$6":"$1}\'  passwd 
/bin/bash:x:0:0:root:/root:root
/sbin/nologin:x:1:1:bin:/bin:bin
/sbin/nologin:x:2:2:daemon:/sbin:daemon
/sbin/nologin:x:3:4:adm:/var/adm:adm
/sbin/nologin:x:4:7:lp:/var/spool/lpd:lp
/bin/sync:x:5:0:sync:/sbin:sync
/sbin/shutdown:x:6:0:shutdown:/sbin:shutdown
/sbin/halt:x:7:0:halt:/sbin:halt
/sbin/nologin:x:8:12:mail:/var/spool/mail:mail
/sbin/nologin:x:11:0:operator:/root:operator
/sbin/nologin:x:12:100:games:/usr/games:games
/sbin/nologin:x:14:50:FTP User:/var/ftp:ftp
/sbin/nologin:x:99:99:Nobody:/:nobody
/sbin/nologin:x:192:192:systemd Network Management:/:systemd-network
/sbin/nologin:x:81:81:System message bus:/:dbus
/sbin/nologin:x:999:998:User for polkitd:/:polkitd
/sbin/nologin:x:74:74:Privilege-separated SSH:/var/empty/sshd:sshd
/sbin/nologin:x:89:89::/var/spool/postfix:postfix

2.排除正常空行
 [root@BC ~]#grep -v \'^$\'  sshd_config 
 
 [root@BC ~]#sed \'/^$/d\' sshd_config 
 
 [root@BC ~]#awk \'!/^$/\' sshd_config 


2020年07月15日上午(day09)

一、回顾三剑客

1. grep			#过滤   给过滤出来的内容加上颜色 

	选项:
	
		-n		#给过滤出来的内容加上此行所在文件的行号  
		
		-i		#忽略大小写  
		
		-c		#统计的是行数 包含过滤字符串的行数  
		
		-v		#排除  删除   取反  
		
		-o		#只显示过滤出来的内容 
		
		-w		#精确匹配  只匹配你要过滤的字符串,而不是过滤包含此字符串的字符串 
		
		-r		#递归过滤   过滤多个文件   针对目录操作  

		-A		#匹配过滤出来的内容向下多少行   后面加正整数  
		
		-B		#匹配过滤出来的内容向上多少行 

		-C		#匹配过滤出来的内容各向上向下多少行 
		
		-E		#支持扩展正则使用     ===    egrep  
		
		^		#以什么开头  
		
		$		#以什么为结尾
        
        ^$		#空行   排除存在空格或者tab键的空行  
		
		.		#匹配除换行符以外的任意一个字符 
		
		*		#匹配前面的字符出现0次或者0次以上  
		
		.*		#所有
        
        |		#或者    扩展正则 
		

2. sed			#擅长替换     增删改查    后向引用  

	选项:
	
		-n		#取消默认输出  
        
        -r		#支持扩展正则 
        
        -i		#真正的改变文件内容 
        
        -e		#允许多项编辑      了解 
     
		
		
	内部命令:
	
		p		#打印  
		
		d		#删除   排除  取反  
		
		s		#替换
		
		g		#全局 
		
		i		#忽略大小写 
		
		a		#追加 
		
		i		#插入  
		
		\n		#换行符 
		
		\t		#tab键
		
		=		#显示行号 
		

后向引用:

[root@BC ~]# ifconfig  eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.100  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::3310:9d15:9ee4:43e8  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:eb:ea:8d  txqueuelen 1000  (Ethernet)
        RX packets 19648  bytes 2074525 (1.9 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 13896  bytes 1420434 (1.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@BC ~]# ifconfig  eth0 | sed -n \'3p\' | sed -r \'s#(.*6 )(.*)(  pr.*)#\2#g\'
fe80::3310:9d15:9ee4:43e8



[root@BC ~]# ifconfig  eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.100  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::3310:9d15:9ee4:43e8  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:eb:ea:8d  txqueuelen 1000  (Ethernet)
        RX packets 19930  bytes 2100423 (2.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 14078  bytes 1441164 (1.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@BC ~]# ifconfig  eth0 | sed  -n  \'2p\'
        inet 10.0.0.100  netmask 255.255.255.0  broadcast 10.0.0.255
[root@BC ~]# ifconfig  eth0 | sed  -n  \'2p\'  | sed  -r  \'s#(^.*et )(.*)(  n.*$)#\2#g\'
10.0.0.100


[root@BC ~]# ip a s eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:eb:ea:8d brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::3310:9d15:9ee4:43e8/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@BC ~]# ip a s eth0 | sed  -n  \'3p\'|sed -r \'s#(^.*t )(.*)(/.*)#\2#g\' 
10.0.0.100



灵活  思路  方法  


[root@BC ~]# stat  /etc/hosts
  File: ‘/etc/hosts’
  Size: 158       	Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d	Inode: 67125348    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:net_conf_t:s0
Access: 2020-07-14 17:30:04.678582732 +0800
Modify: 2013-06-07 22:31:32.000000000 +0800
Change: 2020-07-06 02:13:36.028996182 +0800
 Birth: -
[root@BC ~]# stat  /etc/hosts | sed -nr \'4s#.*: \((.*)/.*#\1#gp\'
    0
[root@BC ~]# stat  /etc/hosts | sed -nr \'4s#.*: \((.*)/-r.*#\1#gp\'
0644
[root@BC ~]# stat  /etc/hosts | sed -nr \'4s#.*\((.*)/-r.*#\1#gp\'
0644


多种方法  多种选择 


3. awk		#擅长取列  

	选项:
	
		-F		#指定分隔符   默认的为空白字符为分隔符    FS 
		
		-v		#指定内部变量 
		
		!		#取反  排除 
		
		
	内部变量:
	
		FS		#指定输入分隔符 
		
		OFS		#指定输出分隔符 
		
		NR		#行号 
		
		NF		#最后一列 
		
		$NF		#显示最后一列 
		
		$0		#完整的一行内容 
		
		$n		#n数字  指定取出的某一列 
		
	
    
了解    
	
1. 排除空行  存在空格和tab键的空行  

[root@BC ~]# cat sshd_config
#	$OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/local/bin:/usr/bin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.

# If you want to change the port on a SELinux system, you have to tell
# SELinux about this change.
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
#
Port 22
#AddressFamily any
ListenAddress 0.0.0.0
#ListenAddress ::


[root@BC ~]# grep  -v  \'^$\'  sshd_config 

[root@BC ~]# sed  \'/^$/d\'  sshd_config 

[root@BC ~]# awk  \'!/^$/\'   sshd_config 


# -P   支持tab键 

[root@BC ~]#  grep  -Pv  \'^[ \t]*$\'  sshd_config


[root@BC ~]# sed \'/^[ \t]*$/d\'  sshd_config 

[root@BC ~]# awk  \'!/^[ \t]*$/\'  sshd_config 

# \s   空白字符 

[root@BC ~]# grep  -v  \'^\s*$\'  sshd_config 

[root@BC ~]# sed  \'/^\s*$/d\'  sshd_config

[root@BC ~]# awk  \'!/^\s*$/\'  sshd_config

2. 排除空行和注释行  #号开头的


[root@BC ~]# grep  -Ev  \'^$|^#\'  sshd_config

[root@BC ~]# grep  -Ev  \'^\s*$|^#\'  sshd_config 
Port 22
ListenAddress 0.0.0.0


[root@BC ~]# sed  -r \'/^\s*$|^#/d\'  sshd_config 
Port 22
ListenAddress 0.0.0.0
[root@BC ~]# sed  -r \'/^[ \t]*$|^#/d\'  sshd_config 
Port 22
ListenAddress 0.0.0.0

[root@BC ~]# awk  \'!/^[ \t]*$|^#/\'  sshd_config 
Port 22
ListenAddress 0.0.0.0

[root@BC ~]# awk  \'!/^\s*$|^#/\'  sshd_config 
Port 22
ListenAddress 0.0.0.0



3. 将/etc/passwd文件中的第一列和第七列位置进行调换   awk   等值替换


[root@BC ~]# awk  -F \'[:]\'  \'{a=$1;$1=$NF;$NF=a;print}\'  passwd  | tr  \' \' \':\'
/bin/bash:x:0:0:root:/root:root
/sbin/nologin:x:1:1:bin:/bin:bin
/sbin/nologin:x:2:2:daemon:/sbin:daemon
/sbin/nologin:x:3:4:adm:/var/adm:adm
/sbin/nologin:x:4:7:lp:/var/spool/lpd:lp


[root@BC ~]# awk  -F \'[:]\' -vOFS=":" \'{a=$1;$1=$NF;$NF=a;print}\'  passwd  
/bin/bash:x:0:0:root:/root:root
/sbin/nologin:x:1:1:bin:/bin:bin
/sbin/nologin:x:2:2:daemon:/sbin:daemon
/sbin/nologin:x:3:4:adm:/var/adm:adm
/sbin/nologin:x:4:7:lp:/var/spool/lpd:lp

二、文件的类型及其属性

1.举例引用

[root@BC ~]# ls -li
total 24
134317708 drwxr-xr-x. 2 root root  22 Jul 13 19:06 backup
    16346 drwxr-xr-x. 2 root root  22 Jul 13 19:06 data
134317704 -rw-r--r--. 1 root root  28 Jul 13 16:53 file.txt
134317705 -rw-r--r--. 1 root root  75 Jul 14 20:17 ip.txt
134317678 -rw-r--r--. 1 root root 798 Jul 14 19:13 passwd


第一列:	134317708			#inode号  索引节点  

第二列:	-rw-r--r--.        #文件的类型和权限 

第三列:	2					#文件的硬链接的数量 

第四列:	root				#文件的所有者   属主 

第五列:	root				#文件的所属组   属组 

第六列:	798					#文件的大小  

第七八九列	Jul 13 19:06  		#文件创建时间或最后的修改时间    

第十列:	passwd				 #文件的名称   不属于文件的属性 



2.du		#查看目录的大小  

	-s		#显示大小 
	
	-h		#以B MB GB的格式显示大小

[root@BC ~]# du  -sh  /etc
31M	/etc



3.文件类型 

drwxr-xr-x.
-rw-r--r--.
lrwxrwxrwx
crw-rw-rw-
srw-rw-rw-
prw-------.

第一个字符为文件的类型信息

第二个到第10个	文件权限 


4.文件类型的种类:


	-		#普通文件    二进制  日志 文本  脚本 
	
	d		#目录 
	
	l		#软链接文件   
	
	b		#块设备   磁盘 硬盘  磁盘分区  镜像  光盘 
	
	c		#字符设备  
    
    s		#套接字文件  socket文件 
    
    p		#管道文件  
	
	
5.stat		#详细显示文件的属性信息

[root@BC ~]# stat  passwd 
  File: ‘passwd’
  Size: 798       	Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d	Inode: 134317678   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2020-07-14 19:13:16.904691535 +0800
Modify: 2020-07-14 19:13:12.935691465 +0800
Change: 2020-07-14 19:13:12.935691465 +0800
 Birth: -

#  -c		指定格式输出    %a  以8进制显示文件的权限  

[root@BC ~]# stat -c %a  passwd
644



6.file		#详细显示文件的信息  


[root@BC ~]# file passwd 
passwd: ASCII text

[root@BC ~]# file  /opt/
/opt/: directory

[root@BC ~]# file  /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=ceaf496f3aec08afced234f4f36330d3d13a657b, stripped

[root@BC ~]# ll  /bin/ls
-rwxr-xr-x. 1 root root 117680 Oct 31  2018 /bin/ls

[root@BC ~]# file  /etc/grub2.cfg 
/etc/grub2.cfg: symbolic link to `../boot/grub2/grub.cfg\'

[root@BC ~]# file  /dev/log
/dev/log: socket

[root@BC ~]# file /run/systemd/initctl/fifo
/run/systemd/initctl/fifo: fifo (named pipe)


7.后缀名:

Linux中对后缀没有任何的要求,  系统存在一些带后缀名的文件,只是为了方便程序人员的使用  

Linux中是区分大小写的  


	.txt
	
	.log
	
	.xml
	
	.conf
	
	.cnf
	
	.html
	
	.php
	
	.sh
	
	.py
	
	.mp3
	
	.jpg
	
	.png
	
	.tar
	
	.tar.gz
	
	.gz
	
	.zip
	

三、链接文件

1.文件的组成:

元数据:	metadata 	属性信息    大小 时间  属主  属组 权限  inode   索引节点   

用户数据:	user data 	数据块   硬盘存放真实数据的地方     block  

文件分为硬链接文件  hard link 和软链接文件或者符号链接   symbolic link  ==  soft link


2.软链接文件:

	当我们访问这个软链接文件时,其实就是在访问源文件的本身。就是相当于Windows上面的快捷方式   里面存放的是文件的路径  及可以执行这个文件 

1)软链接文件和源文件属于不同的文件  inode是不一样    那么当我们对一个文件创建多个软链接时,其实就是多个inode指向同一个block。

2)那么当我们删除软链接文件时,其实只是删除了一个inode的指向,并不会对源文件造成影响。

3)如果我们删除的是源文件,那么该文件的所有软链接文件都会失效。
		
[root@BC ~]# ll -i /etc/sysconfig/selinux
134477906 lrwxrwxrwx. 1 root root 17 Jul  6 02:14 /etc/sysconfig/selinux -> ../selinux/config
[root@BC ~]# ll -i /etc/selinux/config
223842 -rw-r--r--. 1 root root 543 Jul  6 02:14 /etc/selinux/config

3.应用场景:

1)软件升级

2) 企业的代码发布  Jenkins    秒级发布  

3)不方便移动的目录

4)数据回滚

5)程序读取


4.ln		#创建软链接 

选项:

	-s		#创建软链接
    
	&&		#前面的命令执行成功  才会执行后面的命令 

	||		#前面的命令执行失败,才会执行后面的命令 

用法:
	ln  -s		源文件      链接文件 


[root@BC ~]# ln -s /etc/sysconfig/network-scripts/ifcfg-eth0  /root/eth0
[root@BC ~]# ll
total 0
lrwxrwxrwx. 1 root root 41 Jul 15 20:01 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0

[root@BC ~]# mkdir   nginx-1.17.0
[root@BC ~]# ll
total 0
drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.17.0
[root@BC ~]# mkdir  nginx-1.18.0
[root@BC ~]# ll
total 0
drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.17.0
drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.18.0

[root@BC ~]# ll
total 0
lrwxrwxrwx. 1 root root 41 Jul 15 20:01 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0
drwxr-xr-x. 2 root root  6 Jul 15 19:59 nginx-1.17.0
drwxr-xr-x. 2 root root  6 Jul 15 19:59 nginx-1.18.0
[root@BC ~]# ln  -s nginx-1.17.0/    nginx
[root@BC ~]# ll
total 0
lrwxrwxrwx. 1 root root 41 Jul 15 20:01 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0
lrwxrwxrwx. 1 root root 13 Jul 15 20:04 nginx -> nginx-1.17.0/
drwxr-xr-x. 2 root root  6 Jul 15 19:59 nginx-1.17.0
drwxr-xr-x. 2 root root  6 Jul 15 19:59 nginx-1.18.0
[root@BC ~]# rm -f  nginx  &&  ln -s  nginx-1.18.0/  nginx		#版本升级
[root@BC ~]# ll
total 0
lrwxrwxrwx. 1 root root 41 Jul 15 20:01 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0
lrwxrwxrwx. 1 root root 13 Jul 15 20:04 nginx -> nginx-1.18.0/
drwxr-xr-x. 2 root root  6 Jul 15 19:59 nginx-1.17.0
drwxr-xr-x. 2 root root  6 Jul 15 19:59 nginx-1.18.0

[root@BC ~]# rm -f nginx  &&  ln -s  nginx-1.17.0/  nginx		#版本回退  
[root@BC ~]# ll
total 0
lrwxrwxrwx. 1 root root 41 Jul 15 20:01 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0
lrwxrwxrwx. 1 root root 13 Jul 15 20:07 nginx -> nginx-1.17.0/
drwxr-xr-x. 2 root root  6 Jul 15 19:59 nginx-1.17.0
drwxr-xr-x. 2 root root  6 Jul 15 19:59 nginx-1.18.0


5.软链接的特点:

概念

创建 

跟源文件是不同类型的文件,inode是不一样的

软链接可以对目录创建 也可以跨文件系统 

rm  -f

删除软链接文件对源文件没有任何影响 

删除源文件,软链接存在,但是会失效   出现 红底白字闪烁状  



6.硬链接

概念:	多个文件的数据指向同一个数据块,多个不同的入口,inode是相同的,这样的文件互为硬链接 

防止文件被误删除  


7.创建硬链接

	ln命令直接创建   只能对文件创建  不能对目录创建  
	
用法:

	ln   源文件    硬链接文件 
	
	
[root@BC ~]# cp  /etc/hosts   ./
[root@BC ~]# ll
total 4
lrwxrwxrwx. 1 root root  41 Jul 15 20:01 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0
-rw-r--r--. 1 root root 158 Jul 15 20:18 hosts
lrwxrwxrwx. 1 root root  13 Jul 15 20:07 nginx -> nginx-1.17.0/
drwxr-xr-x. 2 root root   6 Jul 15 19:59 nginx-1.17.0
drwxr-xr-x. 2 root root   6 Jul 15 19:59 nginx-1.18.0
[root@BC ~]# ln  hosts    hosts_hard
[root@BC ~]# ll
total 8
lrwxrwxrwx. 1 root root  41 Jul 15 20:01 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0
-rw-r--r--. 2 root root 158 Jul 15 20:18 hosts
-rw-r--r--. 2 root root 158 Jul 15 20:18 hosts_hard
lrwxrwxrwx. 1 root root  13 Jul 15 20:07 nginx -> nginx-1.17.0/
drwxr-xr-x. 2 root root   6 Jul 15 19:59 nginx-1.17.0
drwxr-xr-x. 2 root root   6 Jul 15 19:59 nginx-1.18.0
[root@BC ~]# ll -i 
total 8
134317677 lrwxrwxrwx. 1 root root  41 Jul 15 20:01 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0
134317704 -rw-r--r--. 2 root root 158 Jul 15 20:18 hosts
134317704 -rw-r--r--. 2 root root 158 Jul 15 20:18 hosts_hard


[root@BC ~]# cat hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@BC ~]# cat hosts_hard 
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@BC ~]# echo "123" >>hosts_hard
[root@BC ~]# cat hosts_hard 
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
123
[root@BC ~]# cat hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
123

删除源文件或者硬链接文件都没有什么影响    只有硬链接为0时,这个文件才会被真正的删除 


8.企业面试题:软链接和硬链接的区别? 

1) 从概念   
硬链接文件与源文件inode相同,软链接文件与源文件inode不同

2)从创建方式 
创建命令不同:
    软链接:ln -s
    硬链接:ln
    
3)从创建对象 
目录不能创建硬链接,并且硬链接不可以跨越系统的分区,软链接可以

4)从删除 
删除软链接文件,对源文件无影响,但是删除软链接源文件对软链接文件有影响
删除硬链接文件,对源文件也无影响,并且删除源文件,对硬链接文件也无影响

2020年07月16日上午(day10)

一、文件的执行过程


1. 系统会判断你输入的命令是否绝对路径,是直接执行

2. 如果是相对路径,系统会判断命令是否存在别名,如果存在,执行别名 

3. 如果命令不存在别名,系统会判断输入的命令是否内置命令,如果是,直接执行 

4. 如果不是内置命令,系统会查询内存的hash缓存表,如果命令存在缓存,则按照缓存执行 

5. 如果hash缓存表中没有命令的缓存,系统会从环境变量PATH中的命令路径查询命令的路径进行执行

6. 如果PATH变量没有命令的路径,就会报错  command  not  found  


#查询命令是否为内置命令 

[root@BC ~]# type  -a  cd
cd is a shell builtin
cd is /usr/bin/cd
[root@BC ~]# type  -a  ls
ls is aliased to `ls --color=auto\'
ls is /usr/bin/ls

#查看系统中所有的内置命令

[root@BC ~]# help


#查看当前窗口下所有外部命令的缓存表

[root@BC ~]# hash
hits	command
  53	/usr/bin/grep
   1	/usr/bin/egrep
   1	/usr/bin/tail
   6	/usr/bin/file




[root@BC ~]# /usr/bin/wc   /etc/hosts
  2  10 158 /etc/hosts
[root@BC ~]# ll   /usr/bin/wc
-rwxr-xr-x. 1 root root 41688 Oct 31  2018 /usr/bin/wc
[root@BC ~]# mv /usr/bin/wc  /usr/bin/gl
[root@BC ~]# wc  /etc/hosts
-bash: /usr/bin/wc: No such file or directory
[root@BC ~]# gl  /etc/hosts
  2  10 158 /etc/hosts
[root@BC ~]# hash 
hits	command
  53	/usr/bin/grep
   1	/usr/bin/egrep
   1	/usr/bin/tail
   1	/usr/bin/gl


#从缓存中删除一个命令的缓存

[root@BC ~]# hash  -d  wc


[root@BC ~]# wc  /etc/hosts
-bash: wc: command not found


[root@BC ~]# mv  /usr/bin/gl  /usr/bin/wc
[root@BC ~]# wc  /etc/hosts
  2  10 158 /etc/hosts


[root@BC ~]# mv /usr/bin/wc  /usr/sbin/
[root@BC ~]# wc  /etc/hosts
-bash: /usr/bin/wc: No such file or directory
[root@BC ~]# hash  -d  wc
[root@BC ~]# wc  /etc/hosts
  2  10 158 /etc/hosts


#清空hash缓存表中的所有缓存 

[root@BC ~]# hash  -r
[root@BC ~]# hash
hash: hash table empty

#里面存放的是系统中的命令的路径,每个路径用:号分割 

[root@BC ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin


二、vi/vim文本编辑器介绍



vi就是一个文本编辑器 

为什么学习:

	系统配置 
	
	编写脚本 
	
vim就是vi的升级版    高级版  

[root@BC ~]# 
[root@BC ~]# yum  install  -y  vim


区别:

vim有高亮显示   vi没有  

视图模式  批量操作    vi没有vim的好

复制有格式的内容到文件中  使用vim格式会乱   vi不会 


如何学习好vim

里面都是通过命令来执行 

三种模式:

命令模式  

	打开文件,默认进入的就是命令模式,可以从命令模式到编辑模式或者底行模式
    
    光标移动    复制   粘贴    删除   简单的替换    撤销   

编辑模式 

	编辑模式需要从命令模式输入编辑模式的命令才能进入,进入编辑模式之后,左下角会出现  INSERT字样   就可以使用键盘输入内容,输入完成之后 按Esc键回到命令模式  
	
	修改   删除   添加  

底行模式 

	底行模式需要从命令模式输入:或者/进入底行模式,如果要退出底行模式,按Esc键 回到命令模式  
	
	保存文件  退出  显示行号  移动行号   搜索文件内容   导入文件内容  导出文件内容 


视图模式  扩展 

	批量添加
	
	批量删除 
	
	可视块
	
	可视行

三、命令模式


#光标移动

[root@BC ~]# cp  /etc/services   ./


G		#光标移动行尾  当前文件的最后一行 

gg		#光标移动到第一行  

1G		#光标移动到第一行

10G		#光标移动到第十行 

10gg	#光标移动到第十行

ngg		#光标移动到指定的行

nG		#光标移动到指定的行

^		#光标移动到当前行行首 

$		#光标移动到当前行的行尾  

h		#向左  5h	向左移动5个字符

l		#向右  5l

j		#向下  5j

k		#向上  5k 

w		#移动到下一个字符串的首字母  短跳   以空格或者特殊符号为分隔符  

W		#移动到下一个字符串的首字母  长跳   以空白字符为分隔符 

e		#移动到下一个字符串的尾字母  短跳   以空格或者特殊符号为分隔符  

E		#移动到下一个字符串的尾字母  长跳   以空白字符为分隔符

b		#移动到上一个字符串的首字母  短跳   以空格或者特殊符号为分隔符

B		#移动到上一个字符串的首字母  长跳   以空白字符为分隔符


ctrl键  + f   #向下翻页

ctrl键  + b	 #向上翻页 

ctrl键  + u	 #向上翻半页

ctrl键  + d	 #向下翻半页


#复制    粘贴 


yy		#复制当前行

nyy		#复制多行  包含当前行 

p		#在当前行的下一行进行粘贴 

P		#在当前行的上一行进行粘贴  

np		#粘贴多次

nP		#粘贴多次  


#删除==剪切   粘贴 

dd		#删除当前行 剪切当前行 

ndd		#删除多行  包含当前行 

dG		#删除当前行到文件的结尾 

delete	#从前往后删除一个字符

x		#从前往后删除一个字符

X 		#从后往前删除一个字符

de/dw	#删除当前一组字符串   以特殊符号或者空白字符为分割  

D		#删除当前光标所在字符及当前行向后的所有的内容 


#撤销  简单替换

u		#撤销  

ctrl键 + r	#回滚你的撤销 

r		#在当前光标上面进行替换   没有进入编辑模式 
 
R		#连续替换  

~		#把当前光标所在字符替换为大小写 

>>		#将当前行向后进行缩进

<<		#将缩进取消  

fi		#将光标快速移动到当前行的第一个i字符     ;   跳转到下一个  

*		#高亮显示当前光标所在的字符串  向下跳转 

#		#向上跳转    


#保存退出

ZZ		#保存退出 


四、编辑模式


# 编辑模式需要从命令模式进入 

a		#在当前光标后进入编辑模式  

i		#在当前光标前进入编辑模式 

o		#在当前光标下另起一行,进入编辑模式 

A		#在当前光标所在行的行尾进入编辑模式 

I		#在当前光标所在行的行首进入编辑模式 

O		#在当前光标所在行的上方另起一行,进入编辑模式 

s		#删除当前光标所在的字符,并进入编辑模式 

S		#删除当前行,并进入编辑模式 

cc		#删除当前行,并进入编辑模式

C		#删除当前光标所在的字符及向后的所有内容,并进入编辑模式  针对当前行操作 

ce		#删除当前所在的字符,并进入编辑模式 

cw		#删除当前所在的字符,并进入编辑模式

五、底行模式(末行模式)


#只能从命令模式进入底行模式 


#保存退出

:q		#退出 

:q!		#强制退出 

:w		#保存 

:wq		#保存退出  

:wq!	#强制保存退出 

:x		#保存退出  


#光标移动  移动的行  删除  

:n		#n 数字   跳转到指定的行

:1d		#删除第一行 

:1,10d	#删除多行  


#替换    跟sed一样


:%s#old#new#g		#全局替换 

:1s#admin#root#g	#替换指定的行

:1,5s#bin#oldboy#g	#替换多行  


# 文件另存为

:w	new1.txt    #将文件的内容另存为一个新文件 

:1,10w new2.txt	#将文件的第一行到第十行内容另存为一个新文件


#导入其他文件内容进入这个文件

:$r	/etc/hosts		#导入/etc/hosts文件中的内容到此文件的结尾 

:0r	 /etc/hosts		#导入/etc/hosts文件中的内容到此文件的行首

#搜索 

/root		#搜索root的字符串 

	n		#向下查找
	
	N		#向上查找

/root\c		#搜索的时候,忽略大小写 


:noh		#取消高亮 

六、视图模式


1.用于批量操作  

2.可视块

#添加内容

光标先移动到你要操作的行的 首行或者尾行  的具体某个字符 

ctrl键 +  v		#进入可视块模式

通过移动光标将要操作的行选中

按shift键 + i键    进入insert模式 

输入你要添加的内容 

输入完成之后   按Esc就可以 


#删除 

光标先移动到要删除的行的首行或者尾行  到达具体某个字符 


ctrl键 +  v		#进入可视块模式

通过光标选中你要删除的内容 

按d删除 




3.可视行 

#添加   复制   粘贴  

光标移动到要复制的行的首行或者尾行 

按shift键 + v  #进入可视行模式 

选中你要复制的行    按y复制 

光标移动到你要粘贴的位置  输入 p粘贴 



#删除 

光标移动到要删除的行的首行或者尾行

按shift键 + v  #进入可视行模式 

选中你要删除的行

按d删除 


七、vim执行过程


1. vim打开一个文件进行编辑

2. 系统会生成一个临时文件 ,以点开头的临时文件 后缀名为.swp

3. 刚进入文件的模式的命令模式

4. 通过命令模式可以进入编辑模式,进行编辑文件

5. 编辑文件完成之后需要输入Esc键,退出编辑模式进入命令模式

6. 从命令模式进入底行模式,进行保存退出 

7. 保存退出之后,系统会将临时文件的内容覆盖到源文件,之后删除临时文件 

八、vim故障


E325: ATTENTION
Found a swap file by the name ".passwd.swp"
          owned by: root   dated: Thu Jul 16 20:14:27 2020
         file name: ~root/passwd
          modified: YES
         user name: root   host name: BC
        process ID: 81955
While opening file "passwd"
             dated: Thu Jul 16 19:11:50 2020

(1) Another program may be editing the same file.  If this is the case,
    be careful not to end up with two different instances of the same
    file when making changes.  Quit, or continue with caution.
(2) An edit session for this file crashed.
    If this is the case, use ":recover" or "vim -r passwd"
    to recover the changes (see ":help recovery").
    If you did this already, delete the swap file ".passwd.swp"
    to avoid this message.

Swap file ".passwd.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:

#故障

vim非正常退出导致的


按照提示 进行恢复   保存退出之后 

在手动的删除这个文件 

[root@BC ~]# rm -f .passwd.swp 

2020年07月17日上午(day11)

一、vim的变量



:set nu		#显示行号  


:set nonu	#取消行号 


:set list	#给每一行的结尾加上制表符 $


:set nolist	#取消制表符的显示 


:noh		#取消高亮显示 


:set ic		#搜索的忽略大小写 


vim环境变量的配置文件



~/.vimrc		#个人用户的配置文件     优先级高 



/etc/vimrc		#全局环境变量配置文件


set nu		#写在文件中  


[root@BC ~]# cat ~/.vimrc
set ic


二、vim文件比对


[root@BC ~]# diff  passwd passwd.bak 				#了解  
2d1
< ROOT
13c12
< vfgbvgnftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
---
> ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin



[root@BC ~]# vimdiff  passwd   passwd.bak  		#把不同之处进行高亮显示   


三、vim多开文件


#水平打开两个文件进行编辑   切换窗口使用  ctrl键 + ww

[root@BC ~]# vim -o  old.txt   new.txt	

#垂直分割两个文件

[root@BC ~]# vim -O  old.txt   new.txt

#快速的到达指定的行

[root@BC ~]# vim +10  passwd.bak


四、2020年07月08日作业


1.超级用户(管理员用户)提示符是__#__,普通用户提示符是__$__。



2.linux关机重启的命令有哪些 ?

关机:

	shutdown
	
	halt
	
	init 0
	
	poweroff
	
重启

	reboot
	
	shutdown
	
	init 6


3.bash是什么?

命令解释器 

4.bash特性, 常见的bash特性有哪些?

1. tab键补全

2. 快捷键 

3. 历史命令  history 

4. 命令别名  alias


5.网卡的配置文件路径什么?

/etc/sysconfig/network-scripts/ifcfg-eth0


6.[root@qiudao ~]# 已知这个是linux命令行,那么请问root表示什么?

当前登录的用户   管理员用户


7.接第上题,qiudao表示什么?


主机名 


8.接上题,~的位置表示什么?而~本身又代表了什么?


当前所在的目录 

当前用户的家目录


[root@qiudao ~]# yum install -y net-tools 已知命令行内容,下面几道练习题根据此命令行内容作答。

9.已知当前光标所在位置在最后面,我如果要删除命令行的内容,该怎样操作呢?

ctrl + u

10.已知当前光标所在位置在最前面,我如果要删除命令行的内容,该怎样操作呢?

ctrl  +  k

11.已知当前光标所在位置在最后面,我想只删除net-tools,该怎样操作呢?

ctrl  +  w

12.磁盘分区安装系统的时候,你是怎么分区的?

/boot		#引导分区  500-1024M

swap		#临时交换分区  虚拟内存分区  物理内存 1-2倍  峰值  16G

/			#系统分区   剩余多少给多少


13.网络类型都有哪几种?这几种模式,各个意思你是怎么理解的?

(1)NAT 网络地址转换  

	NAT模式中的虚拟机是通过宿主机(物理电脑)进行上网和交换数据的  
	
	使用到网卡是VMnet8      VMware NAT Service服务就充当了一个路由器,虚拟机上网的时候首先会找到这个路由器,进行了一个地址转换,伪装了一个跟宿主机一样的IP地址   进行上网,  网络上的数据将返回给VMnet8这个网卡,VMnet8这块网卡会把数据返回给虚拟机  

	好处: 外面的网络可以随便更换,虚拟机的网络不变,IP地址也不会跟宿主机的IP地址冲突,IP的地址范围也广,设置一个网段  
	
	坏处: 上网需要经过一个中介  代理  

(2)桥接模式  Bridge  

	通过宿主机网卡架设了一座桥 网桥    直接进入到了实际的网络环境中    
	
	虚拟机的IP地址跟宿主机的IP地址在一个网段范围之内,容易跟宿主机IP发生冲突 

	IP地址会随着外面网络的改变而改变,不能使用一个固定的IP地址,IP少 

	优点: 上网不需要经过宿主机,只需要通过VMnet0 网卡 
	
	桥接模式中的虚拟机跟宿主机的层级是一样的
	
(3)仅主机模式  Host-only

	仅能跟宿主机进行连接,没有办法上网的   VMnet1


14.快照有什么作用?

可以恢复到指定的某种快照的状态下 


15.克隆分哪几种?各表示什么含义?

链接克隆  基于原实际的副本,占用资源少,依赖于宿主机,一旦宿主机出现问题,克隆机也会出现问题

完整克隆 是原始虚拟机的副本,占用资源多,不依赖于宿主机,是个完整的主体。


16.GNU是什么,介绍一下都有哪些内容?

Emacs 	#编辑器  

gcc		#编译器

bash	#命令解释器

gawk	#编程语言 

hurd	#内核  研发中 


17.GPL是什么,内容是什么?

通用公共许可协议 


18.Linux的发行版本都有哪些?

Redhat

CentOS

Fedora

suse

Debian

Ubuntu 

freebsd


19.创建一个目录,shanghai。

mkdir  shanghai

20.创建一个文件,test.txt

touch  test.txt

21.进入到shanghai这个目录。

cd  shanghai

22.显示你当前所在的位置。

pwd

23.如何快速从当前目录切换到家目录?

cd


24.用ls -a随便查看一个目录,发现每个目录下都会有两个名为“.”和“..”的目录,解释它们分别代表的含义

.		当前目录

..		当前目录的上一级目录 


25.解释linux系统下“绝对路径”和“相对路径”的区别?

绝对路径都是以/或者以~开头的

不以/或者~开头的都是相对路径


26.使用创建文件的命令一次性在oldboy目录下批量创建(oldboy1,oldboy2,oldboy3,oldboy4,oldboy5)这几个文件

touch  oldboy/oldboy{1..5}


27.如何检查当前登录的是什么用户?

whoami


28.如何快速返回上一次所在的目录?

cd  -


29. 假设超级用户root当前所在目录为:/usr/local,键入cd命令后,用户当前所在目录为?

家目录   /root


30. 在使用mkdir命令创建新的目录时,在其父目录不存在时先创建父目录的选项是?

-p


31. 在linux中,下面()命令不是针对目录操作的。  A 
A. ps
B. cd
C.pwd
D. ls


32. 建立一个新文件可以使用的命令为?

touch

cat

echo


33. 如果要列出一个目录下的所有文件需要使用命令为?

ls -la

tree  -a  


34.Linux系统习惯将许多设备驱动存储在什么目录中?

/dev


35.包含了域名与IP地址的映射关系的文件是?

/etc/hosts  


36.用什么命令来显示当前目录?

pwd

37.在类linux操作系统中,哪个用户默认对整个操作系统拥有完全控制权?

root


38.linux系统管理员创建一个普通oldboy用户,默认会在哪个目录下创建一个用户的主目录

/home/oldboy

39.使用cd命令进入到/usr/local目录下,然后又执行了cd .. 请问,当前你所在的位置是哪里?

/usr


40.已知你在/etc/sysconfig/network-scripts/目录下,你执行了cd  /etc/systemd/命令,怎样才能快速的到达/etc/sysconfig/network-scripts/目录下?

cd  -


41.已知当前位置为/opt,请问,执行cd .  ,写出你所在的位置?

/opt

42.创建/oldboy目录?

mkdir  /oldboy


43.创建/data/test目录,已知/data目录不存在,请给出命令?

mkdir  -p /data/test


44.创建/root/user /root/logs  /root/conf  /root/html目录,请用一条命令实现

mkdir  /root/{user,logs,conf,html}

45.创建文件oldboy.txt 

touch  oldboy.txt


46.在/root/目录下创建文件test.txt  test.log  test.sh  test.conf  请用一条命令创建。


touch  /root/test.{txt,log,sh,conf}


47.显示/root目录下的目录结构。

tree  /root


48.只显示/目录的两层目录结构。

tree  -L 2  /


49.只显示/etc目录下的目录。

tree  -d  /etc

50.如果我在当前在/目录下,之后执行了以下操作,请告诉我,最后我所在的目录位置

cd /etc/sysconfig/

cd ..

cd ..

cd -

cd ~

cd ..

/  或者 /home 

51.当前用户是root用户,当前所在位置是/usr/local ,输入cd命令后,当前所在目录是哪里?

/root

52.显示当前所在位置信息

pwd


53.显示/oldboy 下面所有文件(包含隐藏文件)的详细信息

ls  -la  /oldboy

54.在/oldboy目录下创建以你名字的目录。(已知oldboy目录不存在,请用一条命令实现)


mkdir  -p  /oldboy/BC


55.在你名字的目录下面创建两个文件,分别为test.txt,test.log


touch  /oldboy/BC/test.{txt,log}


五、2020年07月09日作业


1. 欲把当前目录下的file1.txt复制为file2.txt 命令是?

[root@BC ~]# touch file1.txt 
[root@BC ~]# cp file1.txt  file2.txt


2.批量创建oldboy01,oldboy02,...oldoby05这几个目录

[root@BC ~]# mkdir oldboy{01..05}


3.显示/oldboy 下面所有文件(包含隐藏文件)的详细信息

[root@BC ~]# ll -a /oldboy

4.在/oldboy目录下创建以你名字的目录。(已知oldboy目录不存在,请用一条命令实现)
[root@BC ~]# mkdir -p /oldboy/jh

5.在你名字的目录下面创建两个文件,分别为test.txt,test.log
[root@BC ~]# touch  /oldboy/jh/test.{txt,log}

6.把test.txt文件移动到/tmp目录下面

[root@BC ~]# mv /oldboy/jh/test.txt  /tmp/

7.把test.log文件重命名为test.sh

[root@BC jh]# mv test.log  test.sh

8.删除test.sh这个文件

[root@BC jh]# rm -f test.sh 


9.删除oldboy这个目录

[root@BC jh]# rm -rf /oldboy/

10.切换到/tmp目录下,查看当前的工作位置,同时创建data1、data2、data3、共三个目录。

[root@BC ~]# cd /tmp 
[root@BC tmp]# pwd
/tmp
[root@BC tmp]# mkdir /data{1..3}

11.接上一题,分别在data1、data2、data3三个目录下创建3个文件,名字为oldboy1、oldboy2、oldboy3.然后查看/tmp目录的整个目录结构情况,最后检查下data1和oldboy1两个对象的属性。

[root@BC tmp]# touch data{1..3}/oldboy{1..3}

[root@BC tmp]# tree /tmp
/tmp
├── data1
│   ├── oldboy1
│   ├── oldboy2
│   └── oldboy3
├── data2
│   ├── oldboy1
│   ├── oldboy2
│   └── oldboy3
└── data3
    ├── oldboy1
    ├── oldboy2
    └── oldboy3

3 directories, 9 files

[root@BC tmp]# ll -d data1
drwxr-xr-x 2 root root 51 Jul 17 15:52 data1
[root@BC tmp]# ll data*/oldboy1
-rw-r--r-- 1 root root 0 Jul 17 15:52 data1/oldboy1
-rw-r--r-- 1 root root 0 Jul 17 15:52 data2/oldboy1
-rw-r--r-- 1 root root 0 Jul 17 15:52 data3/oldboy1


12.把/etc/hosts文件复制到/tmp/data1目录下,然后把data1目录复制到/opt/目录下。

[root@BC tmp]#cp /etc/hosts /tmp/data1

[root@BC tmp]#cp -r data1/ /opt/


13.将/tmp/data1目录移动到/root目录下,然后删除/opt/data1目录下的hosts文件,最后删除/opt目录下的data1目录。

[root@BC tmp]# mv /tmp/data1/ /root/
[root@BC tmp]# rm -f /opt/data1/hosts 
[root@BC tmp]# rm -rf /opt/data1/

14.查看oldboy.txt文件中的内容,并显示行号(请使用cat命令)。

[root@BC tmp]# cat -n oldboy.txt


15.使用cat命令把oldboy oldgirl student三行内容(每个字符串是一行内容)写入到test.txt文件中

[root@BC tmp]# cat  >test.txt<<eof
> oldboy
> oldgirl
> student
> eof

16.查看系统中/etc/services文件中的内容(使用more和less命令,进行上下页查看,并搜索关键字‘ssh’,之后退出。)

more /etc/services    b上一页	空格下一页	/ssh	q退出
less   /etc/services    b上一页	空格下一页	/ssh	q退出

17.使用cat命令查看文本文件的内容时要对所有的输出行进行显示行号,怎么实现?

cat -n	文件名

18.使用mv命令,下列说法错误的是?  CD  
A.mv命令可以重命名文件
B.mv命令可以移动文件
C.mv命令可以复制文件
D.mv命令可以删除文件


19.删除文件的命令为?

rm   -f		文件名


20.显示"I\'m a student"到屏幕上面

[root@BC tmp]# echo "I\'m a student"
I\'m a student

21.将"I\'m a student"追加到hello.txt文件中

[root@BC tmp]# echo "I\'m a student" >>hello.txt

22.将/etc/passwd文件复制到/opt目录中

[root@BC tmp]# cp /etc/passwd /opt

23.将/tmp目录复制到当前用户的家目录下

[root@BC ~]# cp -r /tmp ./

24.将/opt目录下的hosts文件移动到/root目录下,并将其改名为ip.txt 

[root@BC ~]# mv /opt/hosts /root/ip.txt

25.把/var/log/目录下的所有文件拷贝到/opt目录下 

[root@BC ~]# cp -r /var/log/* /opt/

26.使用echo命令创建一个非空文件

[root@BC ~]# echo \'2\' >jh

27.使用echo命令把oldboy oldgirl student三行内容(每个字符串是一行内容)写入到test.txt文件中

[root@BC ~]# echo -e "oldboy\noldgirl\nstudent" >test.txt

28.将/etc/hosts和/etc/passwd两个文件合并为一个新文件,文件名称为test.log

[root@BC ~]# cat /etc/hosts /etc/passwd >>test.log

29.将/etc/services文件拷贝到/root目录下

[root@BC ~]# cp /etc/services  /root/

30.分页查看/root/services文件,要求从第10行开始显示 

[root@BC ~]# more +10 services 

六、2020年07月10日作业



1.打开这个网站http://nginx.org/download/,下载一个结尾为tar.gz的软件包
[root@BC ~]# wget  http://nginx.org/download/nginx-1.18.0.tar.gz 

2.同样打开上面的网站,下载一个结尾为tar.gz的软件包,要求下载之后的软件包名为nginx.tar.gz
[root@BC ~]# wget -O ./nginx.tar.gz http://nginx.org/download/nginx-1.18.0.tar.gz 
--2020-07-10 16:00:12--  http://nginx.org/download/nginx-1.18.0.tar.gz
Resolving nginx.org (nginx.org)... 95.211.80.227, 62.210.92.35, 2001:1af8:4060:a004:21::e3
Connecting to nginx.org (nginx.org)|95.211.80.227|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1039530 (1015K) [application/octet-stream]
Saving to: ‘./nginx.tar.gz’

100%[=================================================>] 1,039,530   69.4KB/s   in 15s    

2020-07-10 16:00:28 (65.6 KB/s) - ‘./nginx.tar.gz’ saved [1039530/1039530]



3.打开此网站https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/  下载一个结尾为rpm的软件包
[root@BC ~]# wget  https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-server-pgsql-4.0.9-2.el7.x86_64.rpm
--2020-07-10 16:02:18--  https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-server-pgsql-4.0.9-2.el7.x86_64.rpm
Resolving mirrors.aliyun.com (mirrors.aliyun.com)... 116.153.35.243, 116.153.35.245, 116.153.35.248, ...
Connecting to mirrors.aliyun.com (mirrors.aliyun.com)|116.153.35.243|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2208004 (2.1M) [application/x-redhat-package-manager]
Saving to: ‘zabbix-server-pgsql-4.0.9-2.el7.x86_64.rpm’

100%[=================================================>] 2,208,004   2.14MB/s   in 1.0s   

2020-07-10 16:02:20 (2.14 MB/s) - ‘zabbix-server-pgsql-4.0.9-2.el7.x86_64.rpm’ saved [2208004/2208004]


4.同样打开上面这个网站,下载一个结尾为rpm的软件包,要求下载之后的软件包名为zabbix.rpm
[root@BC ~]# wget -O ./zabbix.rpm  https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-web-4.0.20-1.el7.noarch.rpm
--2020-07-10 16:03:29--  https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-web-4.0.20-1.el7.noarch.rpm
Resolving mirrors.aliyun.com (mirrors.aliyun.com)... 218.98.31.240, 116.153.35.249, 218.98.31.242, ...
Connecting to mirrors.aliyun.com (mirrors.aliyun.com)|218.98.31.240|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2959992 (2.8M) [application/x-redhat-package-manager]
Saving to: ‘./zabbix.rpm’

100%[=================================================>] 2,959,992   2.68MB/s   in 1.1s   

2020-07-10 16:03:31 (2.68 MB/s) - ‘./zabbix.rpm’ saved [2959992/2959992]


5.在linux中访问BC的博客网站,访问主页就可以
[root@BC ~]# curl  -L https://www.increase93.com/

6.在linux中访问BC的博客网站,要求把主页的内容保存到BC.html文件中。\
[root@BC ~]# curl  -o BC.html https://www.increase93.com/
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 44971    0 44971    0     0  21236      0 --:--:--  0:00:02 --:--:-- 21242

7.在linux中访问百度的首页
[root@BC ~]# curl  https://www.baidu.com

8.在linux中访问百度的首页,要求把主页的内容保存到baidu.html文件中
[root@BC ~]# curl  -o baidu.html www.bidu.com
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   169  100   169    0     0     99      0  0:00:01  0:00:01 --:--:--    99
[root@BC ~]# ll
total 9104
-rw-r--r--   1 root root   82874 Jul 10 11:24 001849-15912011295e8a.jpg
-rw-r--r--   1 root root  102690 Mar 29  2018 112234-1517109754fad1.jpg
-rw-r--r--   1 root root       9 Jul  9 11:59 1.txt
-rw-r--r--   1 root root      34 Jul  9 12:00 2,txt
-rw-------.  1 root root    1350 Jul  8 12:26 anaconda-ks.cfg
-rw-r--r--   1 root root     169 Jul 10 16:08 baidu.html


9.把/etc/hosts文件下载到本地电脑桌面

sz  /etc/hosts 

10.把/etc/services文件下载到本地电脑D盘中

sz  /etc/hosts


11.把你的课堂笔记上传到linux系统中

rz


12.把你的习题笔记上传到linux系统中的/opt目录下面

cd  /opt

rz


13.如果我要把本地电脑中的目录上传到linux系统,请问怎么上传?

打包压缩上传 

xftp上传  

14.查找ifconfig命令的绝对路径在哪里?你能使用几种方法实现?

[root@BC ~]# which  ifconfig
/usr/sbin/ifconfig
[root@BC ~]# type -p  ifconfig
/usr/sbin/ifconfig
[root@BC ~]# whereis -b  ifconfig
ifconfig: /usr/sbin/ifconfig
[root@BC ~]# locate  ifconfig
/usr/sbin/ifconfig


15.查找netstat命令的绝对路径在哪里?你能使用几种方法实现?

[root@BC ~]# which  netstat
/usr/bin/netstat
[root@BC ~]# type -p  netstat
/usr/bin/netstat
[root@BC ~]# whereis -b  netstat
netstat: /usr/bin/netstat
[root@BC ~]# locate  netstat
/usr/bin/netstat

16.统计文件/etc/hosts的行数?你能使用几种方法实现?

[root@BC ~]# wc -l hosts 
2 hosts

[root@BC ~]# cat -n hosts  |tail -1
     2	::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

[root@BC ~]# grep -c \'.*\' hosts 
2


17.改变bash的提示符实际上就是改变变量?

PS1

18.显示/etc/passwd文件的前5行内容。

[root@BC ~]# head -5 passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin


19.显示/etc/passwd文件的最后5行内容。

[root@BC ~]# tail -5 passwd 
ntp:x:38:38::/etc/ntp:/sbin/nologin
nginx:x:998:996:Nginx web server:/var/lib/nginx:/sbin/nologin
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
jh:x:1000:1000::/home/jh:/bin/bash
jindaa:x:1001:1001::/home/jindaa:/bin/bash


20.显示/etc/services文件的第11行到第20行的内容

[root@BC ~]# sed -n \'11,20p\' passwd 

[root@BC ~]# head -20 |tail  passwd 

[root@BC ~]# more +11 /etc/services  | more  -10

21.查看系统中的cd命令是不是内嵌命令

[root@BC ~]# type -a cd 
cd is a shell builtin
cd is /usr/bin/cd

22.找出系统中文件名为oldboy.txt的所有文件。

[root@BC ~]# find / -type f -name "oldboy.txt"

23.找出系统中名为oldboy的所有目录。

[root@BC ~]# find / -type d -name "oldboy"

24.找出系统中文件名以oldboy开头的所有文件。

[root@BC ~]# find / -type f -name "oldboy*"

25.rm是个危险的命令,要求用命令rm删除文件时提示“rm command no bny”,怎么实现?

[root@BC ~]# alias rm=\'echo rm command no bny\'

26.设置rm命令存在别名之后,要删除/oldboy这个目录,怎么实现?

[root@BC ~]# \rm -rf oldboy

[root@BC ~]# /usr/bin/rm -rf oldboy


27.实时查看系统日志/var/log/message的更新

[root@BC ~]# tail -f /var/log/messages

28.查找出系统中为s类型的文件

[root@BC ~]# find  /  -type  s  
/dev/log
/run/vmware/guestServicePipe

29.查找出系统中为p类型的文件

[root@BC ~]# find  /  -type  p  
/run/systemd/inhibit/1.ref
/run/systemd/sessions/104.ref
/run/systemd/sessions/78.ref
/run/systemd/initctl/fifo

30.只显示出/etc/passwd文件的第五行

[root@BC ~]# head -5 passwd |tail -1

七、2020年07月13日作业

1.已知sort.log文件内容如下,请根据文件内容的第二列进行倒序排序。
cat >>sort.log<<\'EOF\'
218.65.30.25 68652
218.65.30.53 34326
218.87.109.154 21201
112.85.42.103 18065
112.85.42.99 17164
218.87.109.151 17163
218.87.109.150 17163
218.65.30.61 17163
218.65.30.126 17163
218.65.30.124 17163
EOF

[root@BC ~]# sort -rnk2 sort.log 
218.65.30.25 68652
218.65.30.53 34326
218.87.109.154 21201
112.85.42.103 18065
112.85.42.99 17164
218.87.109.151 17163
218.87.109.150 17163
218.65.30.61 17163
218.65.30.126 17163
218.65.30.124 17163


2.统计系统文件/etc/services有多少行。

[root@BC ~]# wc -l services 
11176 services


3.已知文件内容如下,请对该文件的字符串出现的次数进行统计,并从小到大的进行排序出来。
cat>>uniq.txt<<\'EOF\'
oldboy
oldgirl
oldboy
egon
student
oldgirl
oldboy
EOF


[root@BC ~]# sort  uniq.txt  |uniq -c |sort -n
      1 egon
      1 student
      2 oldgirl
      3 oldboy

4.取出系统中的文件/etc/passwd的第七列(以:为分隔符)。

[root@BC ~]# cut -d \':\' -f7 passwd 


5.已知文件test.txt内容如下,请给出输出test.txt文件内容时,不包含oldboy字符串的命令。
test
qiudao
oldboy


[root@BC ~]# head -2 test.txt 
test
qiudao

[root@BC ~]# grep -v \'oldboy\' test.txt 
test
qiudao

[root@BC ~]# sed \'/oldboy/d\' test.txt 
test
qiudao

[root@BC ~]# awk \'!/oldboy/\' test.txt 
test
qiudao

6.只查看/etc/passwd文件内第5到第15行的内容

[root@BC ~]# head -15 passwd |tail -11

[root@BC ~]# sed -n \'5,15p\' passwd 

[root@BC ~]# awk \'NR>4&&NR<16\' passwd 

[root@BC ~]# awk \'NR==5,NR==15\' passwd 


7.test.txt 的内容如下,要求过滤出不包含oldgirl的行。
oldboy
oldgirl
qiudao

[root@BC ~]# grep -v \'oldgirl\' test.txt 
oldboy
qiudao
[root@BC ~]# sed \'/oldgirl/d\' test.txt 
oldboy
qiudao
[root@BC ~]# awk \'!/oldboy/\' test.txt 
oldgirl 
qiudao


8.请执行命令取出linux中eth0的IP地址分别是ip和ifconfig的命令(请用cut,有能力者也可分别用awk,sed命令答)。

[root@BC ~]# ip a s eth0 | head -3 |tail -1 | tr \'/\' \' \' |cut -d " " -f6
10.0.0.100

[root@BC ~]# ip  a s eth0  | awk  -F \'[ /]\'  \'NR==3{print $6}\'
10.0.0.100

[root@BC ~]# ip  a s eth0  | awk  -F \'[ /]*\'  \'NR==3{print $3}\'
10.0.0.100

[root@BC ~]# ip a s eth0  |sed -nr  \'3s#(^.*t )(.*)(/.*$)#\2#gp\'
10.0.0.100

[root@BC ~]# ifconfig eth0 |head -2 |tail -1 |cut -d \' \' -f10 
10.0.0.200

[root@BC ~]# ip a s eth0 |head -3|tail -1 |cut -d \' \' -f6 |cut -d \' /\' -f1
10.0.0.200

9.删除/etc/passwd文件的前三行内容。


[root@BC ~]# grep -n \'.*\'  passwd  | grep -wv \'^[123]\'

[root@BC ~]# grep -n \'.*\'  passwd  | grep -Ewv \'^1|^2|^3\'


[root@BC ~]# sed  \'1,3d\'  passwd


[root@BC ~]# awk  \'NR>3\'  passwd 

10.统计文件/etc/hosts的行数?你能使用几种方法实现?

[root@BC ~]# wc -l hosts 
2 hosts

[root@BC ~]# cat -n hosts|tail -1
     2	::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

[root@BC ~]# grep -c \'.*\' hosts 
2

11.统计文件/etc/services的字节数。你能使用几种方法实现?

[root@BC ~]# ll /etc/services 
-rw-r--r--. 1 root root 670293 Jun  7  2013 /etc/services
[root@BC ~]# wc -c  /etc/services
670293 /etc/services
[root@BC ~]# du -sh /etc/services
656K	/etc/services
[root@BC ~]# stat /etc/services
  File: ‘/etc/services’
  Size: 670293    	Blocks: 1312       IO Block: 4096   regular file
Device: 803h/2051d	Inode: 67125358    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:etc_t:s0
Access: 2020-07-17 18:40:51.792211723 +0800
Modify: 2013-06-07 22:31:32.000000000 +0800
Change: 2020-07-06 02:13:36.049996181 +0800
 Birth: -


12.执行下面的命令echo "Im BC , is QQ 1176494252" >file.txt,要求取出该文件中的姓名和QQ号。


[root@BC ~]# cut  -d " " -f2,6  file.txt
BC 1176494252


[root@BC ~]# awk  \'{print $2,$6}\'  file.txt
BC 1176494252


13.执行如下命令
cat > file.txt <<EOF
abc
123
abc
123
def
EOF
要求去除重复的行

[root@BC ~]# sort  file.txt  | uniq 
123
abc
def

14.接上题,取出每行出现的次数

[root@BC ~]# sort  file.txt  | uniq  -c
      2 123
      2 abc
      1 def


15.统计/var/log下的文件个数,不统计下级目录。

[root@BC ~]# ll  /var/log/  | grep  \'^-\' | wc -l
33
[root@BC ~]# ll  /var/log/  | grep -c  \'^-\' 
33


[root@BC ~]# tree -fL 1 /var/log | tail -1
4 directories, 33 files
[root@BC ~]# tree -fL 1 /var/log | tail -1 | cut -d " " -f3
33


16.统计/var/log下的所有文件和目录个数,不包含隐藏文件。

[root@BC ~]# tree  /var/log | tail -1 | cut -d " " -f1,3
4 44


17.以“:”为分隔符,取出/etc/passwd第一行的最后一列的内容


[root@BC ~]# cut -d ":"  -f7  passwd  | head -1
/bin/bash


[root@BC ~]# awk -F:  \'NR==1{print $NF}\'  passwd 
/bin/bash


[root@BC ~]# sed -n \'1s#^.*:##gp\' passwd 
/bin/bash


18.过滤出/etc/passwd以nologin结尾的内容,并统计行数

[root@BC ~]# grep -c  \'nologin$\'   passwd 
14


[root@BC ~]# grep  \'nologin$\'   passwd  |cat -n
     1	bin:x:1:1:bin:/bin:/sbin/nologin
     2	daemon:x:2:2:daemon:/sbin:/sbin/nologin
     3	adm:x:3:4:adm:/var/adm:/sbin/nologin
     4	lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
     5	mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
     6	operator:x:11:0:operator:/root:/sbin/nologin
     7	games:x:12:100:games:/usr/games:/sbin/nologin
     8	ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
     9	nobody:x:99:99:Nobody:/:/sbin/nologin
    10	systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
    11	dbus:x:81:81:System message bus:/:/sbin/nologin
    12	polkitd:x:999:998:User for polkitd:/:/sbin/nologin
    13	sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    14	postfix:x:89:89::/var/spool/postfix:/sbin/nologin



19.分析如下日志内容,每个域名被访问次数

cat>web.log <<EOF
http://www.oldboy.com/index.html
http://www.oldboy.com/1.html
http://post.oldboy.com/index.html
http://mp3.oldboy.com/index.html
http://www.oldboy.com/3.html
http://post.oldboy.com/2.html
EOF


[root@BC ~]# cut -d "/" -f3 web.log 
www.oldboy.com
www.oldboy.com
post.oldboy.com
mp3.oldboy.com
www.oldboy.com
post.oldboy.com
[root@BC ~]# cut -d "/" -f3 web.log  |sort 
mp3.oldboy.com
post.oldboy.com
post.oldboy.com
www.oldboy.com
www.oldboy.com
www.oldboy.com
[root@BC ~]# cut -d "/" -f3 web.log  |sort  |uniq -c
      1 mp3.oldboy.com
      2 post.oldboy.com
      3 www.oldboy.com

[root@BC ~]# awk  -F \'[:/]*\' \'{print $2}\' web.log |sort |uniq -c      1 mp3.oldboy.com
      2 post.oldboy.com
      3 www.oldboy.com

20.显示/etc/services文件的第11行到第20行的内容
[root@BC ~]# sed -n \'11,20p\' services 

[root@BC ~]# awk \'NR==11,NR==20\' services

[root@BC ~]# cat -n services |head -20 |tail 

[root@BC ~]# grep -n \'.*\' services  |grep -wA 9 \'^11\'


21.已知文件123.txt内容如下,请过滤出包含oldboy字符串的命令
test
OLDBOY
online
oldboy
oldboyoldboy


[root@BC ~]# grep  \'oldboy\'  123.txt
oldboy
oldboyoldboy
[root@BC ~]# sed  -n  \'/oldboy/p\'  123.txt
oldboy
oldboyoldboy
[root@BC ~]# awk  \'/oldboy/\'  123.txt 
oldboy
oldboyoldboy


22.过滤出文件123.txt中不包含test的行,并给其过滤出来的内容加上行号


[root@BC ~]# grep  -nv  \'test\'  123.txt  
2:OLDBOY
3:online
4:oldboy
5:oldboyoldboy


[root@BC ~]# awk  \'!/test/{print NR,$0}\'  123.txt 
2 OLDBOY
3 online
4 oldboy
5 oldboyoldboy

23.要求过滤出文件123.txt中包含oldboy的字符串,忽略大小写。

[root@BC ~]# grep -i  \'oldboy\'  123.txt 
OLDBOY
oldboy
oldboyoldboy
[root@BC ~]# sed  -nr  \'/oldboy|OLDBOY/p\'  123.txt 
OLDBOY
oldboy
oldboyoldboy
[root@BC ~]# awk  \'/oldboy|OLDBOY/\' 123.txt 
OLDBOY
oldboy
oldboyoldboy


24.要求过滤出文件123.txt中包含online字符串的行,并统计共有多少行。


[root@BC ~]# grep -c  \'online\'  123.txt 
1

25.要求过滤出文件123.txt中oldboy的单词。

[root@BC ~]# grep  -w  \'oldboy\'  123.txt 
oldboy


写一个文件,文件内容如下,下面几题请用该文件作答?
cat >>test.txt<<EOF
server {
	lisTEN 80;
	server_nAme www.oldboy.com;
	root /code/dOcs
	index INDEX.html;
}
EOF
26.过滤www.oldboy.com这段关键字

[root@BC ~]# grep  \'www.oldboy.com\'  test.txt 
server_nAme www.oldboy.com;
[root@BC ~]# sed  -n \'/www.oldboy.com/p\'  test.txt 
server_nAme www.oldboy.com;
[root@BC ~]# awk  \'/www.oldboy.com/\' test.txt
server_nAme www.oldboy.com;


27.同时过滤出root和index的行,不区分大小写

[root@BC ~]# grep  -Ei  \'root|index\'  test.txt 
root /code/dOcs
index INDEX.html;

[root@BC ~]# sed -nr \'/root|ROOT|index|INDEX/p\' test.txt 
root /code/dOcs
index INDEX.html;

[root@BC ~]# awk  \'/root|ROOT|index|INDEX/\' test.txt 
root /code/dOcs
index INDEX.html;

28.过滤index,区分大小写

[root@BC ~]# grep  \'index\'  test.txt 
index INDEX.html;
[root@BC ~]# awk \'/index/\'  test.txt 
index INDEX.html;
[root@BC ~]# sed -n  \'/index/p\'  test.txt 
index INDEX.html;


29.过滤出带"O"的行,不区分大小写

[root@BC ~]# grep  -i \'o\'  test.txt 
server_nAme www.oldboy.com;
root /code/dOcs

[root@BC ~]# sed  -nr \'/o|O/p\'  test.txt
server_nAme www.oldboy.com;
root /code/dOcs
[root@BC ~]# 

[root@BC ~]# awk  \'/o|O/\'  test.txt
server_nAme www.oldboy.com;
root /code/dOcs




30.过滤出不带";"的行

[root@BC ~]# grep  -v \';\'  test.txt
server {
root /code/dOcs
}
[root@BC ~]# sed  \'/;/d\' test.txt
server {
root /code/dOcs
}
[root@BC ~]# awk  \'!/;/\' test.txt
server {
root /code/dOcs
}

31.过滤出以s开头的行

[root@BC ~]# grep  \'^s\'  test.txt
server {
server_nAme www.oldboy.com;
[root@BC ~]# sed -n \'/^s/p\'  test.txt
server {
server_nAme www.oldboy.com;
[root@BC ~]# awk  \'/^s/\'  test.txt
server {
server_nAme www.oldboy.com;


32.统计该文件的行数

wc  -l


33.如果某一天你误操作了"rm -rf *",会发生哪些情况

看目录   

删除当前目录下的所有  


34.已知123.txt文件内容如下:
linlaoshi
qiulaoshi
oldboy 
要求过滤出oldboy这一行的内容?你有几种方法?

[root@BC ~]# grep \'oldboy\' 456.txt 
oldboy
[root@BC ~]# sed  -n \'/oldboy/p\' 456.txt 
oldboy
[root@BC ~]# awk \'/oldboy/\' 456.txt 
oldboy


35.接上题,要求不显示oldboy这行内容,怎么实现?你有几种方法?

[root@BC ~]# grep -v \'oldboy\' 456.txt 
linlaoshi
qiulaoshi
[root@BC ~]# sed  \'/oldboy/d\' 456.txt 
linlaoshi
qiulaoshi
[root@BC ~]# awk \'!/oldboy/\' 456.txt 
linlaoshi
qiulaoshi


八、2020年07月14日作业


1.取出系统中的文件/etc/passwd的第七列(以:为分隔符)。
[root@BC ~]# cut -d \':\' -f7 passwd 

[root@BC ~]# awk -F: \'{print $7}\' passwd 

2.已知文件test.txt内容如下,请给出输出test.txt文件内容时,不包含oldboy字符串的命令。
test
qiudao
oldboy

[root@BC ~]# grep -v \'oldboy\' 789.txt 
test 
qiudao
[root@BC ~]# sed \'/oldboy/d\' 789.txt 
test 
qiudao
[root@BC ~]# awk \'!/oldboy/\' 789.txt 
test 
qiudao

3.只查看/etc/passwd文件内第5到第15行的内容
root@BC ~]# cat -n passwd |head -15 |tail

[root@BC ~]# grep -n \'.*\' passwd  | grep  -wA 10 \'^5\'

[root@BC ~]# sed -n \'2,15p\' passwd

[root@BC ~]# awk \'NR>4&&NR<16\' passwd 

4.把test.txt文件中的oldboy替换为oldgirl,给出命令

[root@BC ~]# sed \'s#oldboy#oldgirl#g\' 789.txt 
test 
qiudao
oldgirl

5.test.txt 的内容如下,要求过滤出不包含qiudao的行。有几种方法可以实现
oldboy
oldgirl
qiudao

[root@BC ~]# grep -v \'qiudao\' 1.txt 
oldboy
oldgirl
[root@BC ~]# sed \'/qiudao/d\' 1.txt 
oldboy
oldgirl
[root@BC ~]# awk \'!/qiudao/\' 1.txt 
oldboy
oldgirl

6.把文件/etc/passwd文件中的/sbin/nologin替换为/bin/bash 

[root@BC ~]# sed \'s#/sbin/nologin#/bin/bash#g\' passwd 

7.把/etc/selinux/config文件中的SELINUX=enforcing行中的enforcing替换成disabled

[root@BC ~]# sed  -i  \'/^S/s#enforcing#disabled#g\'  /etc/selinux/config


8.现将文件b.txt 中的所有123 替换成def,请问如何实现?

[root@BC ~]# sed -i \'s#123#def#g\' b.txt

9.将文件的test.txt中的第10行的oldboy改为oldgirl

[root@BC ~]# sed -i \'10s#oldboy#oldgirl#g\' b.txt


10.请执行命令取出linux中eth0的IP地址(请用cut,有能力者也可分别用awk,sed命令答)。

[root@BC ~]# ifconfig eth0 |head -2 |tail -1 |cut -d \' \' -f10
10.0.0.200

[root@BC ~]# ifconfig  eth0 |sed -n \'2p\' |sed -r \'s#(^.*et )(.*)( n.*$)#\2#g\'
10.0.0.200 

[root@BC ~]# ifconfig  eth0 |awk -F \'[ /]*\' \'NR==2{print $3}\'
10.0.0.200


11.使用命令调换/etc/passwd文件里 root 位置和/bin/bash 位置? 即将所有的第一列和最后一列位置调换?


[root@BC ~]# sed  -r  \'s#(^.*)(:x.*:)(.*)#\3\2\1#g\'  passwd 


[root@BC ~]# awk  -F:  \'{print $7":"$2":"$3":"$4":"$5":"$6":"$1}\'  passwd 


[root@BC ~]# awk  -F: -vOFS=":"  \'{a=$1;$1=$NF;$NF=a;print}\'  passwd  


12.先拷贝,再删除/etc/passwd文件的前三行内容。

[root@BC ~]# sed \'1,3d\' passwd 


13.使用sed命令打印出/etc/passwd文件的第一行到第三行

[root@BC ~]# sed -n \'1,3p\' passwd 

14.过滤出/etc/services 文件包含3306或1521两数字所在的行的内容。(三种方法)

[root@BC ~]# grep  -E  \'3306|1521\'  /etc/services 
mysql           3306/tcp                        # MySQL
mysql           3306/udp                        # MySQL
ncube-lm        1521/tcp                # nCube License Manager
ncube-lm        1521/udp                # nCube License Manager
[root@BC ~]# sed  -nr \'/3306|1521/p\' /etc/services
mysql           3306/tcp                        # MySQL
mysql           3306/udp                        # MySQL
ncube-lm        1521/tcp                # nCube License Manager
ncube-lm        1521/udp                # nCube License Manager
[root@BC ~]# awk  \'/3306|1521/\'  /etc/services
mysql           3306/tcp                        # MySQL
mysql           3306/udp                        # MySQL

DNS1=xxxx 
DNS2=xxxx


DNS配置文件
/etc/resolv.conf     立即生效 

nameserver   xxxxx

nameserver   xxxxx

生效的方式的不一样 

书写的方式不一样 

17.若要将鼠标从VM中释放出来,可按()键完成。

ctrl + alt  

18.如何统计/etc下有多少个目录,不包括隐藏目录,只显示目录个数。

[root@BC ~]# tree -d  /etc  | tail -1
605 directories

19.统计secure.log文件中每个ip地址破解你用户密码的次数(包含Failed password字符串的行属于破解密码的,日志群里有,文件很大,建议不要使用cat打开)。

[root@BC ~]# awk  \'/Failed password/{print $(NF-3)}\'  secure.log |sort | uniq -c | sort -rn | head 
  68652 218.65.30.25
  34326 218.65.30.53
  21201 218.87.109.154
  18065 112.85.42.103
  17164 112.85.42.99
  17163 218.87.109.151
  17163 218.87.109.150
  17163 218.65.30.61
  17163 218.65.30.126
  17163 218.65.30.124




20.输入last,统计当前连接本机的每个远程终端IP的连接总次数

[root@BC ~]# last  | grep  \'pts\' |awk  \'{print $3}\' | sort | uniq -c | sort -rn 
      8 10.0.0.1



21.输入lscpu,取出当前系统的cpu核心数


[root@BC ~]# lscpu | grep \'^Core\'
Core(s) per socket:    1
[root@BC ~]# lscpu | grep \'^Core\' | awk  \'{print $NF}\'
1


22.输入df -h,取出当前系统根分区剩余可用磁盘空间


[root@BC ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        98G  1.2G   97G   2% /
devtmpfs        980M     0  980M   0% /dev
tmpfs           991M     0  991M   0% /dev/shm
tmpfs           991M  9.6M  981M   1% /run
tmpfs           991M     0  991M   0% /sys/fs/cgroup
/dev/sda1       497M  120M  378M  25% /boot
tmpfs           199M     0  199M   0% /run/user/0
[root@BC ~]# df -h | awk  \'NR==2{print $4}\'
97G
[root@BC ~]# df -h | awk  \'/\/$/\'
/dev/sda3        98G  1.2G   97G   2% /
[root@BC ~]# df -h | awk  \'/\/$/{print $4}\'
97G




23.显示/proc/meminfo文件中以s开头的行(忽略大小写)

[root@BC ~]# grep -i  \'^s\'  /proc/meminfo
SwapCached:            0 kB
SwapTotal:       2097148 kB
SwapFree:        2097148 kB
Shmem:              9732 kB
Slab:             154764 kB
SReclaimable:     104372 kB
SUnreclaim:        50392 kB

[root@BC ~]# sed  -nr  \'/^s|^S/p\'  /proc/meminfo
SwapCached:            0 kB
SwapTotal:       2097148 kB
SwapFree:        2097148 kB
Shmem:              9732 kB
Slab:             154764 kB
SReclaimable:     104372 kB
SUnreclaim:        50392 kB
[root@BC ~]# awk  \'/^s|^S/\'  /proc/meminfo
SwapCached:            0 kB
SwapTotal:       2097148 kB
SwapFree:        2097148 kB
Shmem:              9732 kB
Slab:             154764 kB
SReclaimable:     104372 kB
SUnreclaim:        50392 kB


24.执行命令echo "I am BC,myqq is 1176494252">oldboy.txt,
现在需要从文件中过滤出“BC”和“1176494252”字符串,请给出命令?(最少三种方法)

[root@BC ~]# echo "I am BC,myqq is 1176494252">oldboy.txt
[root@BC ~]# cat oldboy.txt
I am BC,myqq is 1176494252
[root@BC ~]# awk  -F \'[ ,]\'  \'{print $3,$6}\'  oldboy.txt
BC 1176494252
[root@BC ~]# tr \',\' \' \' < oldboy.txt 
I am BC myqq is 1176494252
[root@BC ~]# tr \',\' \' \' < oldboy.txt  |cut -d " " -f3,6
BC 1176494252

[root@BC ~]# sed  \'s#^.*m ##g\'  oldboy.txt | sed \'s#,.* # #g\'
BC 1176494252



25.接上题,如果需要从文件中过滤出“BC,1176494252”字符串,请再给出命令?

[root@BC ~]# sed  \'s#^.*m ##g\'  oldboy.txt | sed \'s#,.* #,#g\'
BC,1176494252

[root@BC ~]# tr \',\' \' \' < oldboy.txt  |cut -d " " -f3,6 | tr \' \' \',\'
BC,1176494252

[root@BC ~]# awk  -F \'[ ,]\'  \'{print $3","$6}\'  oldboy.txt
BC,1176494252



26.我想在/data/oldboyedu目录下面创建 一个oldboy.txt文件,出现了如下报错。
[root@qiudao ~]# touch /data/oldboyedu/oldboy.txt
touch: cannot touch ‘/data/oldboyedu/oldboy.txt’: No such file or directory
问:为何出现这样的错误?该怎么解决?

/data/oldboyedu/ 目录不存在  

mkdir  -p  /data/oldboyedu/ 

touch /data/oldboyedu/oldboy.txt



27.翻译题
01).command not found  				#命令找不到 		   
02).No such file or directory  		#没有这个文件或者目录 		   
03).File exists 					#文件已经存在 							
04).Is a directory 					#这是个目录 						
05).Not a directory  				#不是一个目录 	


28.在/backup下创建10个.txt的文件,找到/backup目录下所有后缀名为.txt的文件

touch  /backup/{01..10}.txt 

ll  /backup/*.txt




29.显示/etc/services文件的第10行到第20行的内容?

[root@BC ~]# sed -n \'10,20p\' services 


30.显示文件/etc/services的大小?
[root@BC ~]# wc -c services 

[root@BC ~]# ll services 
-rw-r--r-- 1 root root 670293 Jul 17 16:48 services

[root@BC ~]# stat services 
  File: ‘services’
  Size: 670293    	Blocks: 1312       IO Block: 4096   regular file
Device: 803h/2051d	Inode: 134380615   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-07-17 16:48:08.524679627 +0800
Modify: 2020-07-17 16:48:01.909679477 +0800
Change: 2020-07-17 16:48:01.909679477 +0800
 Birth: -
[root@BC ~]# 


31.以“:”为分隔符,取出/etc/passwd第一行的第七列也就是最后一列的内容?(两种方法)
[root@BC ~]# sed -nr \'1s#(.*)(:.*:)(/.*)#\3#gp\' passwd 
/bin/bash

[root@BC ~]# awk -F:  \'NR==1{print $NF}\' passwd 
/bin/bash

32.找出/var/log目录中以.log结尾的文件,并显示这些文件的属性信息。

[root@BC ~]# ll /var/log/*.log 

33.寻找名称为mytest.log的文件

[root@BC ~]#find  /  -type f   -name "mytest.log"

34.用命令行更改config.txt文件,把里面的“name”更改为“address”

[root@BC ~]#sed  -i  \'s#name#address#g\'   config.txt

35.把/etc/passwd文件中的:替换成#


[root@BC ~]#tr  \':\'  \'#\'  < /etc/passwd


36.说明下面这几个文件的作用:

/etc/hostname、		#主机名

/etc/resolv.conf、	#本地DNS文件

/etc/hosts			#本地域名解析文件   


37.尝试使用sed命令的后向引用和awk命令取出ip地址,请分别使用ip和ifconfig命令取出。
38.在123.txt文件末尾插入‘test’。(两种方法)

sed  \'$atest\'  123.txt

echo \'test\'  >> 123.txt

cat >>123.txt<<EOF
test
EOF


39.将/etc/passwd文件中第一行到第五行的root替换为admin?


sed  -i  \'1,5s#root#admin#g\'  passwd  



40.统计nginx访问日志access.log中每个访问ip出现次数最多的10个。(已知ip在第一列,日志群里有) 

[root@BC ~]# awk  \'{print $1}\'  access.log  |sort | uniq -c |sort -rn |  head
  16033 139.226.172.217
   1041 47.102.42.79
    994 180.95.238.82
    727 113.140.249.33
    647 223.166.74.124
    525 112.87.125.55
    429 182.138.163.167
    373 112.87.125.53
    352 223.166.74.198
    308 182.138.158.169



41.取出下列文件的权限如:0644 ?(两种方法)
[root@BC ~]# stat  BC.txt 
  File: ‘123.txt’
  Size: 44        	Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d	Inode: 67160518    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-07-27 16:55:57.055131412 +0800
Modify: 2019-07-27 16:55:50.098131214 +0800
Change: 2019-07-27 16:55:50.101131214 +0800


[root@BC ~]# stat -c %a  passwd 
644

[root@BC ~]# stat passwd    | awk  -F \'[(/]\'  \'NR==4{print $2}\'
0644


42.删除BC.txt文件中的第10行到20行。(两种方法)


sed  \'10,20d\'   BC.txt

awk  \'NR<10 || NR>20\'  BC.txt

九、2020年07月16日作业

#准备文件
[root@BC ~]# cat file.txt 
server {
	listen 80;
	server_name test.oldboy.com;
	index index.html;
}

1.跳转到某行时使用		
nG 	#跳到n行
ngg	#跳到n行

2.复制server{   到    }结尾的这一行,  粘贴到 } 结尾的下一行
光标在第一行,命令模式下yy然后光标移到}这一行,p粘贴		

3.删除listen相关的所有行				
:2d

4.将server_name 替换为SERVER_NAME	
:3s#server_name#SERVER_NAME#g   

5.删除oldboy.com,boy删除			  
:3s#boy##g 

6.撤销一次							  
u

7.在编辑模式下修改 test.oldboy.com为test.ett.com
i进入编辑模式,光标移到old处,回车删除old,输入ett,ESC返回命令模式

8.在index 最后面,添加index.php
i进入编辑模式,光标移到index 后面,输入index.php,ESC返回命令模式

9.在index行下面插入一行内容为:root  html;。
o进入编辑模式 输入root  html

10.退出编辑模式。
ESC返回命令模式

11.将/etc/passwd 复制到/root/目录下,并重命名为test.txt
[root@BC ~]# cp /etc/passwd /root/test.txt 

12.分别向下、向右、向左、向右移动5个字符,分别向下、向上翻两页
向下5j、向右5k、向左5h、向右5l
向下翻两页ctrl +f  ctrl+f
向上翻两页ctrl +b ctrl +b

13.把光标移动到第10行,让光标移动到行末,再移动到行首,移动到test.txt文件的最后一行,移动到文件的首行
移动到行尾	$
移动到行首	^
移动到test.txt文件的最后一行G
移动到文件的首行1G

14.搜索文件中出现的 root 并数一下一共出现多少个
命令模式/root搜索 总共4个
  	
15.把从第一行到第三行出现的root 替换成admin,然后还原上一步操作
命令模式:1,3s#root#damin#g
还原操作u
 
16.把整个文件中所有的root替换成admin
命令模式:%s#root#damin#g

17.把光标移动到20行,删除本行,还原上一步操作
命令模式:20d	
还原操作u
 
18.删除从5行到10行的所有内容,还原上一步操作
命令模式:5,10d
还原操作u

19.复制2行并粘贴到11行下面,还原上一步操作(按两次u)
复制2行2yy
粘贴到11行p
还原操作uu

20.复制从11行到15行的内容并粘贴到8行上面,还原上一步操作(按两次u)
11gg,5yy
粘贴到8行p
还原操作uu

21.把13行到18行的内容移动文件的尾部,还原上一步操作(按两次u)
13gg,6dd
复制2行2yy
粘贴到尾部p
还原操作uu

22.将文件中所有的/sbin/nologin为/bin/bash
命令模式:%s#/sbin/nologin#/bin/bash#g  

23.在第一行下面插入新的一行,并输入"# Hello!"
1gg,o进入编辑模式,大输入# Hello!

24.保存文档并退出
:wq
:x
zz

#根据文件回答下列习题

[root@BC ~]# cat proxy.conf
server {
    Listen 8080;
    Server_Name vim.OldboyEDU.com;
    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forward-for;
        proxy_intercept_errors on;
        proxy_next_upstream error timeout;
        proxy_next_upstream_timeout 3s;
        proxy_next_upstream_tries 2;
        error_page 500 502 403 404 = /proxy_error.html;
    }
    location = /proxy_error.html {
        root /code/proxy;
    }
}

25.使用vim打开proxy.conf文件
vim proxy.conf

26.修改Listen为listen小写,并将8080修改为80
:2s#Listen 8080#listen 8080#g 

27.修改Server_Name为server_name小写。
:3s#Server_Name#server_name#g 

28.修改vim.OldboyEDU.com为vim.oldboy.com
:3s#vim.OldboyEDU.com#vim.oldboy.com#g
 
29.在server_name行下插入一行 root /code;
2gg,o进入编辑模式,输入root /code

30.复制5-14行的内容,然后将其粘贴到14行下面
5gg
10yy
粘贴到14行p

31.删除与proxy_set_header相关的两行全部删除
6G, 2dd

32.如上操作完成后,在13-20行前面加上#号
:13,20s#^#\##g

33.删除21-23的行,然后保存当前文件
21gg
3dd
:wq


2020年07月20日上午(day12)

一、什么是用户


1.定义:能够正常登录系统的就是用户 

Linux系统支持多用户同时登陆  互相管理不冲突  

Windows不支持多用户同时登陆 


2.为什么要有用户?

1)系统的程序进程需要指定的用户进行运行  

2)root管理系统权限太大,需要普通用户进行管理 


3.id		#查看用户的基本信息

[root@BC ~]# id		#默认查看当前登录的用户的信息
uid=0(root) gid=0(root) groups=0(root)

[root@BC ~]# id  nginx
uid=998(nginx) gid=996(nginx) groups=996(nginx)


二、用户跟系统的约定


CentOS-7

UID

0   ---    超级管理员用户   权限最大  

1-200  ---	系统用户,系统默认创建好的  不能登录系统的用户  用来运行系统中的程序和进程

201-1000 --- 系统用户  用户自定义的  运行一些软件程序 

1000+	---	  普通用户  可以正常登录系统  但是权限很低 


CentOS-6   

1-500   系统用户

500+	普通用户


三、用户相关的文件


#用户的基本信息存放在这个文件里面

[root@BC ~]# ll /etc/passwd
-rw-r--r-- 1 root root 860 Jul 20 19:50 /etc/passwd

#以冒号为分隔符,分为7列

[root@BC ~]# head  -1  /etc/passwd
root:x:0:0:root:/root:/bin/bash


第一列:	root		#用户的名称

第二列:	x			#用户的密码占位符

第三列:    0			#用户的UID信息

第四列:	0			#用户的GID信息

第五列:	root		#用户的注释信息

第六列:	/root		#用户的家目录

第七列:	/bin/bash	#用户的命令解释器    能够登录系统的   /sbin/nologin  禁止登录系统



#用户的密码信息及账号信息 

[root@BC ~]# ll /etc/shadow
---------- 1 root root 584 Jul 20 19:50 /etc/shadow

#以冒号为分隔符,分为9列

[root@BC ~]# head  -2  /etc/shadow
root:$6$SoTZ3L8.5rI4::0:99999:7:::
bin:*:17834:0:99999:7:::



第一列:	root		#用户的名称

第二列:	* 或者 !!	   #加密后的密码信息,  * 和 !!  表示的是没有密码 

第三列:	17834		#密码最后一次修改距离1970年1月1日过了多少天 

第四列:	0			#密码最短有效期   0没有限制  

第五列:	99999		#密码最长有效期   99999  没有限制  

第六列:	7			#密码到期前的预警时间  

第七列:	10			#密码到期后的宽恕时间 

第八列:	20391231	#账号过期时间  

第九列:	空			#没有使用 


2020年07月21日上午(day13)

一、用户管理命令


1. useradd   ==   adduser       #创建用户 

选项:

	-u		#指定uid
	
	-g		#指定组 gid  前提需存在 
	
	-G		#指定附加组  多个用逗号分割 
	
	-d		#指定家目录  
	
	-c		#注释信息
	
	-s		#指定命令解释器 
	
	-r		#创建系统用户,默认不创建家目录  命令解释器是允许登录的
	
	-M		#不创建家目录  


[root@BC ~]# useradd   user01
[root@BC ~]# tail -1  /etc/passwd  
user01:x:1000:1000::/home/user01:/bin/bash
[root@BC ~]# tail -1 /etc/shadow
user01:!!:18464:0:99999:7:::


[root@BC ~]# useradd  -u666  -d /opt/user02  -c  "test"  user02
[root@BC ~]# tail  -1  /etc/passwd
user02:x:666:1001:test:/opt/user02:/bin/bash
[root@BC ~]# ll /opt/
drwx------  2 user02 user02      62 Jul 21 16:47 user02

[root@BC ~]# useradd   -r   user03
[root@BC ~]# tail -1  /etc/passwd
user03:x:665:665::/home/user03:/bin/bash
[root@BC ~]# ll /home/
total 0
drwx------ 2 user01 user01 62 Jul 21 16:40 user01

[root@BC ~]# useradd  -r  -s /sbin/nologin  user04
[root@BC ~]# tail  -1  /etc/passwd
user04:x:664:664::/home/user04:/sbin/nologin
[root@BC ~]# ll /home/
total 0
drwx------ 2 user01 user01 62 Jul 21 16:40 user01

[root@BC ~]# useradd   -M  -s  /sbin/nologin  user05
[root@BC ~]# tail -1  /etc/passwd
user05:x:1001:1002::/home/user05:/sbin/nologin
[root@BC ~]# ll /home/
total 0
drwx------ 2 user01 user01 62 Jul 21 16:40 user01


2. usermod			#修改用户信息的


选项:

	-u		#修改用户的uid
	
	-g		#修改用户的gid
	
	-a		#追加 添加附加组  需跟-G配合使用
	
	-G		#修改附加组,默认会覆盖原来的所有附加组    -aG		追加 
	
	-m		#迁移家目录 
	
	-d		#修改家目录 
	
	-c		#修改注释信息
	
	-s		#修改命令解释器 
	
	-l		#修改用户的名称 
	
	-L		#锁定用户
	
	-U		#解锁用户
	
	
[root@BC ~]# usermod  -u6666  -g 1001  -aG 665,664   -md  /opt/user01  -c "123"   -l user123  user01
[root@BC ~]# grep  \'user01\'  /etc/passwd
user123:x:6666:1001:123:/opt/user01:/bin/bash
[root@BC ~]# id  user123
uid=6666(user123) gid=1001(user02) groups=1001(user02),665(user03),664(user04)


[root@BC ~]# usermod   -s  /bin/bash  user05
[root@BC ~]# grep  \'user05\'  /etc/passwd
user05:x:1001:1002::/home/user05:/bin/bash


[root@BC ~]# usermod   -L   user02
[root@BC ~]# usermod   -U   user02

#修改密码

[root@BC ~]# passwd   user02
Changing password for user user02.
New password: 
BAD PASSWORD: The password is a palindrome
Retype new password: 
passwd: all authentication tokens updated successfully.

#远程登录

[C:\~]$ ssh  user02@10.0.0.100


Connecting to 10.0.0.100:22...
Connection established.
To escape to local shell, press \'Ctrl+Alt+]\'.

Last failed login: Tue Jul 21 17:22:10 CST 2020 from 10.0.0.1 on ssh:notty
There were 4 failed login attempts since the last successful login.
Last login: Tue Jul 21 17:20:45 2020 from 10.0.0.1
[user02@BC ~]$ 


3. userdel		#删除用户  默认不删除家目录及邮件信息  

选项:
	
	-r		#删除用户的时候,删除家目录及邮件相关信息  
	
	
[root@BC ~]# ll /opt/
total 1016
drwx------  2 user123 user02      62 Jul 21 16:40 user01
drwx------  2 user02  user02      62 Jul 21 16:47 user02
[root@BC ~]# userdel   user123
[root@BC ~]# ll /opt/
total 1016
drwx------  2   6666 user02      62 Jul 21 16:40 user01
drwx------  2 user02 user02      62 Jul 21 16:47 user02



[root@BC ~]# useradd   user06
[root@BC ~]# ll /home/
total 0
drwx------ 2 user06 user06 62 Jul 21 17:45 user06
[root@BC ~]# ll /var/mail/
total 0
-rw-rw---- 1 user02 mail 0 Jul 21 16:47 user02
-rw-rw---- 1 user05 mail 0 Jul 21 16:55 user05
-rw-rw---- 1 user06 mail 0 Jul 21 17:45 user06
-rw-rw---- 1   6666 mail 0 Jul 21 16:40 user123
[root@BC ~]# userdel   -r  user06
[root@BC ~]# ll /home/
total 0
[root@BC ~]# ll /var/mail/
total 0
-rw-rw---- 1 user02 mail 0 Jul 21 16:47 user02
-rw-rw---- 1 user05 mail 0 Jul 21 16:55 user05
-rw-rw---- 1   6666 mail 0 Jul 21 16:40 user123

[root@BC ~]# userdel  user02
userdel: user user02 is currently used by process 8333		#用户正在使用  
[root@BC ~]# ps  aux |grep  8333
user02     8333  0.0  0.1 161364  2348 ?        S    17:42   0:00 sshd: user02@pts/1
root       8389  0.0  0.0 112708   976 pts/0    R+   17:46   0:00 grep --color=auto 8333
[root@BC ~]# userdel  user02


4. 查看用户的命令  

#查看用忽的id及组的相关信息

[root@BC ~]# id  root
uid=0(root) gid=0(root) groups=0(root)


[root@BC ~]# yum install  -y  finger

[root@BC ~]# finger   root
Login: root           			Name: root
Directory: /root                    	Shell: /bin/bash
On since Tue Jul 21 17:49 (CST) on pts/0 from 10.0.0.1
   7 seconds idle
No mail.
No Plan.


[root@BC ~]# who
root     pts/0        2020-07-21 17:49 (10.0.0.1)

[root@BC ~]# whoami
root

[root@BC ~]# w
 09:59:15 up 22:14,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    10.0.0.1         17:49     ?     0.02s  0.00s w


[root@BC ~]# uptime
 09:59:49 up 22:14,  1 user,  load average: 0.00, 0.01, 0.05


二、用户创建的相关文件


创建用户的时候,没有指定相关信息,系统创建用户是根据两个文件进行创建的    

[root@BC ~]# ll  /etc/login.defs 
-rw-r--r--. 1 root root 2028 Oct 30  2018 /etc/login.defs
[root@BC ~]# ll /etc/default/useradd 
-rw-r--r--. 1 root root 119 Oct 30  2018 /etc/default/useradd




[root@BC ~]# grep  -Ev  \'^$|^#\'  /etc/login.defs
MAIL_DIR	/var/spool/mail			#接收邮件的目录 
PASS_MAX_DAYS	99999				#密码最大的有效期天数  
PASS_MIN_DAYS	0					#密码最小的有效期 
PASS_MIN_LEN	5					#密码最小的长度  不起作用  root用户限制不了  普通用户最少8位
PASS_WARN_AGE	7					#密码到期前的告警时间 
UID_MIN                  1000		#普通用户最小的UID
UID_MAX                 60000		#普通用户最大的UID
SYS_UID_MIN               201		#系统用户的最小UID
SYS_UID_MAX               999		#系统用户的最大UID 
GID_MIN                  1000		#普通用户的组的最小GID
GID_MAX                 60000		#普通用户的组的最大GID
SYS_GID_MIN               201		#系统用户的组的最小GID
SYS_GID_MAX               999		#系统用户的组的最大GID
CREATE_HOME	yes						#创建用户的时候默认创建家目录
UMASK           077					#默认创建用户的家目录的权限 umask为077   777-077=700
USERGROUPS_ENAB yes					#创建或删除用户的时候,没有指定组,默认创建或删除跟用户相同名称的组
ENCRYPT_METHOD SHA512				#密码的加密规则 


[root@BC ~]# cat /etc/default/useradd
GROUP=100			#当创建用户没有指定组,并且USERGROUPS_ENAB为no的时候,这个选项生效  
HOME=/home			#创建用户的家目录的位置  
INACTIVE=-1			#跟shadow文件的第七列 密码到期后的宽恕时间  -1 密码永不失效   不启用
EXPIRE=				#跟shadow文件第八列  账号密码的失效时间  时间戳   空则表示没有失效时间
SHELL=/bin/bash		#默认的命令解释器  
SKEL=/etc/skel		#默认创建家目录的模板  
CREATE_MAIL_SPOOL=yes	#创建邮件相关信息  

三、用户命令行故障



[root@BC ~]# passwd   test
Changing password for user test.
New password: 
BAD PASSWORD: The password is a palindrome
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@BC ~]# rm  -f  /home/test/.bash*



#家目录里面的环境变量配置文件不存在

-bash-4.2$ 
-bash-4.2$

#解决

-bash-4.2$ pwd
/home/test
-bash-4.2$ cp -a  /etc/skel/.bash*  ./


Permission denied		#权限不足 

[root@BC ~]# mkdir  -m  700  /home/test
[root@BC ~]# ll -d /home/test
drwx------ 2 root root 6 Jul 21 10:53 /home/test
[root@BC ~]# chown  -R  test.test /home/test



-bash-4.2$ cd /home/test
-bash-4.2$ pwd
/home/test
-bash-4.2$ cp -a /etc/skel/.bash* ./
-bash-4.2$ logout


四、用户的密码信息



#如何设置密码 

管理员可以给任何用户设置密码  密码的长度没有限制  

普通用户只能给自己设置密码  且是无规律的8位以上的密码  



[root@BC ~]# useradd    BC01

[root@BC ~]# passwd   	#默认给当前用户设置密码 
Changing password for user root.
New password: 
[root@BC ~]# passwd    BC01	#给指定的用户设置密码 
Changing password for user BC01.
New password: 
BAD PASSWORD: The password is a palindrome
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@BC ~]# 



非交互式设置密码

--stdin

[root@BC ~]# echo  \'2\'  | passwd  --stdin  BC01
Changing password for user BC01.
passwd: all authentication tokens updated successfully.


#如何设置随机密码  

#如何获得随机数 

[root@BC ~]# echo $RANDOM
28241
[root@BC ~]# echo $RANDOM | md5sum
6c8a1df9e12e9c553d0f9a397b860f4e  -
[root@BC ~]# echo $RANDOM | md5sum | cut -c 1-10
64091f6823
[root@BC ~]# echo $RANDOM | md5sum | cut -c 1-10
df0676f775

#密码设置成功,但是不知道密码 

[root@BC ~]# echo $RANDOM | md5sum | cut -c 1-10  | passwd  --stdin  BC01
Changing password for user BC01.
passwd: all authentication tokens updated successfully.



[root@BC ~]# echo $RANDOM | md5sum | cut -c 1-10 |tee  pass.txt
b676039b3f


[root@BC ~]# echo $RANDOM | md5sum | cut -c 1-10 |tee  pass.txt  | passwd  --stdin  BC01
Changing password for user BC01.
passwd: all authentication tokens updated successfully.
[root@BC ~]# cat pass.txt 
7d53328b61


tee 	#重定向的命令 将数据重定向到指定的文件中,并输出在屏幕上面一份  

	-a		#追加  
	

#设置更复杂的密码 

[root@BC ~]# yum install  -y  expect

选项:

	-l		#指定的密码位数
	
	-d		#指定数字位数
	
	-c		#小写字母位数
	
	-C		#大小字母位数
	
	-s		#特殊字符位数
	
	
[root@BC ~]# mkpasswd  
gC}2atTf9
[root@BC ~]# mkpasswd  -l 24  -d 6 -c 6 -C 6 -s 6
sv_^WF85J@DF5Ng5|3{f3/ng
[root@BC ~]# mkpasswd  -l 24 
9px3Sesrx[ybtbvElubxxltj
[root@BC ~]# mkpasswd  -l 24 
uimYw\Z4amzffhti0eljucgg
[root@BC ~]# mkpasswd  -l 24 -s 24
impossible to generate 24-character password with 2 numbers, 2 lowercase letters, 2 uppercase letters and 24 special characters.
[root@BC ~]# mkpasswd  -l 24 -s 24 -d 0 -c 0 -C 0 
$.$}+?;-~]|)>(#_),[)!#@$

[root@BC ~]# mkpasswd  -l 24 -s 24 -d 0 -c 0 -C 0   | tee  pass.txt  | passwd  --stdin  BC01
Changing password for user BC01.
passwd: all authentication tokens updated successfully.
[root@BC ~]# cat pass.txt 
:{]~"/\'%[,+"^*%??%,\'?}~$


五、用户组的管理



什么是用户组  

组分为两类


基本组 		#一个用户只能拥有一个基本组  

附加组			#当基本组的权限不够用户使用的,就出现了附加组   一个用户允许拥有多个附加组  


跟组相关的文件 


[root@BC ~]# ll  /etc/group
-rw-r--r-- 1 root root 573 Jul 21 11:04 /etc/group
[root@BC ~]# ll  /etc/gshadow
---------- 1 root root 449 Jul 21 11:04 /etc/gshadow
[root@BC ~]# 

#以冒号为分隔符  分为4列

[root@BC ~]# cat /etc/group		#用户组的基本信息文件 
root:x:0:
bin:x:1:
daemon:x:2:
mail:x:12:postfix


第一列:	root		#组的名称 

第二列:	x			#组的密码占位符

第三列:	0			#组的GID  

第四列:				#用户名  哪些用户使用此组作为附加组  多个用逗号分割 

#用户组的组密码文件

#以冒号为分隔符  分为四列

[root@BC ~]# cat /etc/gshadow
root:::
bin:::
daemon:::
mail:::postfix

第一列:	root		#组的名称  

第二列:	!或者空		#用户组的密码信息  空或者!是没有密码  

第三列:	空			#用户组的管理者  

第四列:	空			#用户名  哪些用户使用此组作为附加组  多个用逗号分割


[root@BC ~]# usermod  -aG user05,user03,user01  BC01
[root@BC ~]# grep  \'BC01\'  /etc/group
user01:x:1000:BC01
user03:x:665:BC01
user05:x:1002:BC01
BC01:x:1006:
[root@BC ~]# grep  \'BC01\'  /etc/gshadow
user01:!::BC01
user03:!::BC01
user05:!::BC01
BC01:!::

六、用户组的相关命令


1. 创建用户组的命令    groupadd

选项:

	-g		#指定组的ID  GID
	
	-r		#创建系统组  
	  

[root@BC ~]# groupadd   user_group01
[root@BC ~]# tail  -1  /etc/group
user_group01:x:1007:


[root@BC ~]# groupadd  -g 666  user_group02
[root@BC ~]# tail  -1  /etc/group
user_group02:x:666:


[root@BC ~]# groupadd   -r  user_group03
[root@BC ~]# tail  -1  /etc/group
user_group03:x:664:



2. 修改用户组的命令	   groupmod

选项:

	-g		#修改用户组的ID  GID
	
	-n		#修改组的名称  



[root@BC ~]# groupmod   -g 6666  user_group01
[root@BC ~]# grep  \'user_group01\'  /etc/group
user_group01:x:6666:

[root@BC ~]# groupmod   -n  new_group  user_group01
[root@BC ~]# grep  \'new_group\'  /etc/group
new_group:x:6666:



3. 删除用户组的命令	   groupdel


[root@BC ~]# groupdel   new_group
[root@BC ~]# grep  \'new_group\'  /etc/group

#删除作为某个用户的附加组的用户组  删除没有影响 

[root@BC ~]# groupdel  user01




[root@BC ~]# grep  \'1002\'  /etc/group
user05:x:1002:BC01
[root@BC ~]# grep  \'1002\'  /etc/passwd
user05:x:1001:1002::/home/user05:/bin/bash
test:x:1002:1003::/home/test:/bin/bash
[root@BC ~]# id user05 
uid=1001(user05) gid=1002(user05) groups=1002(user05)


#删除一个组作为某个用户的基本组   是不能删除的

解决:

	给这里面的用户重新找个基本组 
	
	把用户也一并删除掉 

[root@BC ~]# groupdel   user05
groupdel: cannot remove the primary group of user \'user05\'
[root@BC ~]# usermod  -g  1003  user05
[root@BC ~]# id user05 
uid=1001(user05) gid=1003(test) groups=1003(test)
[root@BC ~]# groupdel   user05

2020年07月22日上午(day14)

一、用户提权



1. su		使用普通用户登录,然后执行su命令切换到root用户     优点:简单   缺点:需要知道root密码

2. sudo		使用普通用户管理,当需要使用root的权限的时候,进行提权   优点:安全、方便   缺点:复杂  


shell的分类及执行的过程 


交互式shell		#终端操作  输入一条指令,需要等待系统的处理及返回结果 

非交互式shell		#脚本的执行方式就是  用户执行完指令 不需要跟系统进行交互 

登录式shell		#通过用户名和密码的方式进行登录的

非登录式shell		#不是通过用户名和密码的方式进行登录的    执行一个bash,就是一个非登录式shell


[root@BC ~]# yum install  -y  psmisc

[root@BC ~]# pstree
systemd─┬─NetworkManager───2*[{NetworkManager}]
        ├─VGAuthService
        ├─agetty
        ├─auditd───{auditd}
        ├─crond
        ├─dbus-daemon
        ├─firewalld───{firewalld}
        ├─master─┬─pickup
        │        └─qmgr
        ├─nginx───nginx
        ├─polkitd───6*[{polkitd}]
        ├─rsyslogd───2*[{rsyslogd}]
        ├─sshd─┬─sshd───bash───pstree
        │      └─sshd───bash───bash
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tuned───4*[{tuned}]
        └─vmtoolsd───{vmtoolsd}


用户的工作环境相关文件

二、用户的工作环境相关文件


#个人配置文件

/root/.bash_profile

/root/.bashrc

#全局配置文件

/etc/bashrc 

/etc/profile

/etc/profile.d/*.sh



profile		#环境变量配置文件  系统登录前执行的一些命令或者脚本 

bashrc		# 本地变量    别名 

执行顺序 

#在5个文件的第二行加入echo输出 

[root@BC ~]# vim .bashrc 
[root@BC ~]# vim .bash_profile 
[root@BC ~]# vim /etc/bashrc 
[root@BC ~]# 
[root@BC ~]# vim  /etc/profile
[root@BC ~]# vim /etc/profile.d/test.sh


#登录式Shell执行顺序

/etc/profile  ---》 /etc/profile.d/*.sh ---》 .bash_profile ---》 .bashrc ---》 /etc/bashrc


#非登录式shell执行顺序 

.bashrc ---》 /etc/bashrc ---》 /etc/profile.d/*.sh


三、su命令用户提权



su  username		#非登录式shell 		

su  -  username		#登录式shell

区别就是加载的配置文件不一样 


root用户切换到普通用户是不需要密码的,而普通用户切换到root用户是需要密码的



[root@BC ~]# useradd   test10  
[root@BC ~]# echo "1"  |passwd  --stdin  test10
Changing password for user test10.
passwd: all authentication tokens updated successfully.
[root@BC ~]# su  test10
/etc/bashrc
/etc/profile.d/*.sh
[test10@BC root]$

[test10@BC root]$ pwd
/root


su username在切换用户的时候,只执行了
/etc/bashrc
/etc/profile.d/*.sh

切换之后所在的目录是在从哪个用户切换过来的就是谁的家目录 



[root@BC ~]# su - test10
Last login: Wed Jul 22 09:09:58 CST 2020 on pts/0
/etc/profile
/etc/profile.d/*.sh
/etc/bashrc
[test10@BC ~]$ pwd
/home/test10


su  -  username  在切换用户的时候属于一种登录式shell 跟su命令直接切换的区别就是是否加载了/etc/profile文件,切换之后,工作环境也已经改变了,是在自己的家目录下面 


[root@BC ~]# su  -  test10
Last login: Wed Jul 22 09:13:03 CST 2020 on pts/0

[test10@BC ~]$ su -
Password: 
Last login: Wed Jul 22 09:13:25 CST 2020 from 10.0.0.1 on pts/2

[root@BC ~]# su - test10
Last login: Wed Jul 22 09:16:33 CST 2020 on pts/0


[test10@BC ~]$ su - root
Password: 
Last login: Wed Jul 22 09:16:59 CST 2020 on pts/0
[root@BC ~]# 

四、sudo用户提权



#日志审计 

[root@BC ~]# grep  \'wheel\'  /etc/group
wheel:x:10:
[root@BC ~]# usermod  -aG  wheel  test10
[root@BC ~]# id test10
uid=1007(test10) gid=1007(test10) groups=1007(test10),10(wheel)

[test10@BC ~]$ sudo  -l  
[sudo] password for test10: 
Matching Defaults entries for test10 on BC:
    !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY
    HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
    env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC
    LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
    secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

User test10 may run the following commands on BC:
    (ALL) ALL
[test10@BC ~]$ sudo tail  -f  /var/log/messages
Jul 22 09:19:49 BC systemd-logind: Removed session 65.
Jul 22 09:19:56 BC systemd: Created slice User Slice of test10.
Jul 22 09:19:56 BC systemd: Started Session 66 of user test10.
Jul 22 09:19:56 BC systemd-logind: New session 66 of user test10.
Jul 22 09:20:11 BC su: (to root) test10 on pts/2
Jul 22 09:47:08 BC systemd-logind: Removed session 66.
Jul 22 09:47:08 BC systemd: Removed slice User Slice of test10.
Jul 22 09:47:12 BC systemd: Created slice User Slice of test10.
Jul 22 09:47:12 BC systemd: Started Session 67 of user test10.
Jul 22 09:47:12 BC systemd-logind: New session 67 of user test10.
^C


[test10@BC ~]$ rm -rf /opt/
rm: cannot remove ‘/opt/hostname’: Permission denied
rm: cannot remove ‘/opt/hostnamectl’: Permission denied
rm: cannot remove ‘/opt/test_hostname’: Permission denied
rm: cannot remove ‘/opt/test_hostname.txt’: Permission denied
rm: cannot remove ‘/opt/.hostname.log’: Permission denied
rm: cannot remove ‘/opt/HOSTNAMECTL’: Permission denied
rm: cannot remove ‘/opt/user02’: Permission denied
rm: cannot remove ‘/opt/user01’: Permission denied
[test10@BC ~]$ sudo  rm -rf /opt/
[test10@BC ~]$ ll /opt 
ls: cannot access /opt: No such file or directory


#权限太大   怎么限制权限  

visudo		#进行设置    默认只能root用户使用sudo命令 普通用户是使用不了的 需要root用户设置 


#只给开发人员只读权限 

[root@BC ~]# visudo		#简单   有语法检查功能
====
[root@BC ~]# vi /etc/sudoers

#在100行左右添加此行
test11  ALL=(ALL)       /usr/bin/cat,/usr/bin/tail

用户     主机  角色       命令 

						ALL  所有命令
						
						/usr/bin/cat	#单个命令
						
						/usr/bin/cat,/usr/bin/tail	#多个用逗号分割
						
						/usr/bin/*		#目录下的所有命令
						
						NOPASSWD:		#免密执行  

test11  ALL=(ALL)       NOPASSWD: /usr/bin/tail /var/log/messages 	#限制某个文件操作


#检查语法
[root@BC ~]# visudo -c
/etc/sudoers: parsed OK

#普通用户测试

[sudo] password for test11: 
Matching Defaults entries for test11 on BC:
    !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY
    HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
    env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC
    LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
    secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

User test11 may run the following commands on BC:
    (ALL) /usr/bin/cat, /usr/bin/tail


[test11@BC ~]$ tail -f  /var/log/messages
tail: cannot open ‘/var/log/messages’ for reading: Permission denied
tail: no files remaining
[test11@BC ~]$ sudo tail -f  /var/log/messages
Jul 22 09:47:12 BC systemd: Started Session 67 of user test10.
Jul 22 09:47:12 BC systemd-logind: New session 67 of user test10.
Jul 22 09:52:16 BC systemd: Created slice User Slice of test11.
Jul 22 09:52:16 BC systemd: Started Session 68 of user test11.
Jul 22 09:52:16 BC systemd-logind: New session 68 of user test11.
Jul 22 09:57:26 BC systemd-logind: Removed session 68.
Jul 22 09:57:26 BC systemd: Removed slice User Slice of test11.
Jul 22 09:57:35 BC systemd: Created slice User Slice of test11.
Jul 22 09:57:35 BC systemd: Started Session 69 of user test11.
Jul 22 09:57:35 BC systemd-logind: New session 69 of user test11.
^C

[test11@BC ~]$ rm -rf /mnt/
rm: cannot remove ‘/mnt/’: Permission denied
[test11@BC ~]$ sudo rm -rf /mnt/
Sorry, user test11 is not allowed to execute \'/bin/rm -rf /mnt/\' as root on BC.


#执行sodu命令的时候,不提示输入密码

[root@BC ~]# visudo
test11  ALL=(ALL)       NOPASSWD:/usr/bin/cat,/usr/bin/tail
[root@BC ~]# visudo -c
/etc/sudoers: parsed OK

[test11@BC ~]$ sudo  -l
Matching Defaults entries for test11 on BC:
    !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY
    HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
    env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC
    LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
    secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

User test11 may run the following commands on BC:
    (ALL) NOPASSWD: /usr/bin/cat, /usr/bin/tail
[test11@BC ~]$ 


注意:设置命令权限的时候,多个可以使用逗号分割   也可以是/usr/bin/*   ALL




五、sudo设置组


两种方法:

利用sudo的自己的组   只在sudo里面生效

利用系统组   是一个真实存在的组


#利用sudo的自己的组 

[root@BC ~]# useradd  dev01
[root@BC ~]# useradd  dev02
[root@BC ~]# echo "1" | passwd  --stdin  dev01
Changing password for user dev01.
passwd: all authentication tokens updated successfully.
[root@BC ~]# echo "1" | passwd  --stdin  dev02
Changing password for user dev02.
passwd: all authentication tokens updated successfully.




#用户别名组
User_Alias DEV = dev01,dev02

#命令别名组

Cmnd_Alias READ = /bin/cat,/bin/head,/bin/tail

#调用

DEV     ALL=(ALL)       NOPASSWD: READ

[root@BC ~]# visudo -c
/etc/sudoers: parsed OK


#测试

[dev01@BC ~]$ sudo  -l
Matching Defaults entries for dev01 on BC:
    !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY
    HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
    env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC
    LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
    secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

User dev01 may run the following commands on BC:
    (ALL) NOPASSWD: /bin/cat, /bin/head, /bin/tail

[dev01@BC ~]$ sudo  head -1 /etc/shadow
root:$6$SoTZ3L8.5rI4l25X$WAqOKpP8BwpL/evQNV2RfaJnXn6AZepgQcwUjHTUoDSJz7InZPGUZbanfzCVtLUeSX1q6gbPTiP.vnKIVcW1t0::0:99999:7:::
[dev01@BC ~]$ sudo  tail -1 /etc/shadow
dev02:$6$iZSmy0at$iDnyU7dcY1saiseJHT40Qw00.LildePgoG2j3ShODj1s69Z.aVpaj9vvoZLtCcMakQ0BDFdA5Lh3FstbnAKcf1:18465:0:99999:7:::


系统的组  真实组


[root@BC ~]# groupadd   dev_group
[root@BC ~]# useradd  -g dev_group  dev11
[root@BC ~]# useradd  -g dev_group  dev12
[root@BC ~]# echo "1" | passwd  --stdin  dev11
Changing password for user dev11.
passwd: all authentication tokens updated successfully.
[root@BC ~]# echo "1" | passwd  --stdin  dev12
Changing password for user dev12.
passwd: all authentication tokens updated successfully.

[root@BC ~]# visudo


%dev_group ALL=(ALL)   NOPASSWD: READ

[root@BC ~]# visudo -c
/etc/sudoers: parsed OK


#测试

[dev11@BC ~]$ sudo -l
Matching Defaults entries for dev11 on BC:
    !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY
    HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
    env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC
    LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
    secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

User dev11 may run the following commands on BC:
    (ALL) NOPASSWD: /bin/cat, /bin/head, /bin/tail
[dev11@BC ~]$ head -1 /var/log/messages
head: cannot open ‘/var/log/messages’ for reading: Permission denied
[dev11@BC ~]$ sudo head -1 /var/log/messages
Jul 16 04:01:01 BC systemd: Started Session 61 of user root.
[dev11@BC ~]$ sudo tail -1 /var/log/messages
Jul 22 10:54:33 BC systemd-logind: New session 79 of user dev11.

六、sudo设置案列


禁止root用户登录,使用普通用户登录,并且普通用户能够免密的切换到root用户 

#禁止root登录

[root@BC ~]# ll  /etc/ssh/sshd_config 
-rw-------. 1 root root 3907 Apr 11  2018 /etc/ssh/sshd_config
[root@BC ~]# grep  -i \'rootlogin\'  /etc/ssh/sshd_config
#PermitRootLogin yes
# the setting of "PermitRootLogin without-password".

[root@BC ~]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

[root@BC ~]# sed  -i  \'/^#PermitRootLogin/s#.*#PermitRootLogin no#g\'  /etc/ssh/sshd_config

[root@BC ~]# grep  -i \'rootlogin\'  /etc/ssh/sshd_config
PermitRootLogin no
# the setting of "PermitRootLogin without-password".

[root@BC ~]# systemctl  restart sshd


[root@BC ~]# useradd   qiudao
[root@BC ~]# echo "1"  | passwd  --stdin  qiudao
Changing password for user qiudao.
passwd: all authentication tokens updated successfully.


[C:\~]$ ssh  qiudao@10.0.0.100


Connecting to 10.0.0.100:22...
Connection established.
To escape to local shell, press \'Ctrl+Alt+]\'.

Last login: Wed Jul 22 09:47:12 2020 from 10.0.0.1
[qiudao@BC ~]$ 


[root@BC ~]# visudo 

qiudao  ALL=(ALL)       NOPASSWD: /bin/su


[root@BC ~]# visudo -c
/etc/sudoers: parsed OK

#测试

[qiudao@BC ~]$ sudo  su -
Last login: Wed Jul 22 11:08:51 CST 2020 on pts/1
Last failed login: Wed Jul 22 11:09:55 CST 2020 from 10.0.0.1 on ssh:notty
There were 2 failed login attempts since the last successful login.
[root@BC ~]# 

 
sudo 执行流程

1.普通用户执行sudo命令, 会检查/var/db/sudo是否存在时间戳缓存

2.如果存在则不需要输入密码, 否则需要输入用户与密码

3.输入密码会检测是否该用户是否拥有该权限

4.如果有则执行,否则报错退出

七、day10作业



#准备文件
[root@BC ~]# cat file.txt 
server {
	listen 80;
	server_name test.oldboy.com;
	index index.html;
}

1.跳转到某行时使用	

gg   G  

2.复制server{   到    }结尾的这一行,  粘贴到 } 结尾的下一行

gg  5yy  G  p

3.删除listen相关的所有行				

/listen   dd  

4.将server_name 替换为SERVER_NAME	  

2gg  R   


5.删除oldboy.com,boy删除	


2gg    dw

6.撤销一次	  						  

u


7.在编辑模式下修改 test.oldboy.com为test.ett.com

2gg   cw   ett

8.在index 最后面,添加index.php

3gg   index.php

9.在index行下面插入一行内容为:root  html;。

3gg   o    root  html;

10.退出编辑模式。

Esc

11.将/etc/passwd 复制到/root/目录下,并重命名为test.txt

cp  /etc/passwd  /root/test.txt

12.分别向下、向右、向左、向右移动5个字符,分别向下、向上翻两页

5h  5j  5k 5l  

13.把光标移动到第10行,让光标移动到行末,再移动到行首,移动到test.txt文件的最后一行,移动到文件的首行

10gg   $  ^    G   gg

14.搜索文件中出现的 root 并数一下一共出现多少个
	
/root 	
	
15.把从第一行到第三行出现的root 替换成admin,然后还原上一步操作


:1,3s#root#admin#g

16.把整个文件中所有的root替换成admin

:%s#root#admin#g

17.把光标移动到20行,删除本行,还原上一步操作


20gg    dd    u


18.删除从5行到10行的所有内容,还原上一步操作

:5,10d   u


19.复制2行并粘贴到11行下面,还原上一步操作(按两次u)

2gg   yy  11gg  p     u   u


20.复制从11行到15行的内容并粘贴到8行上面,还原上一步操作(按两次u)

11gg   5yy   8gg  P   u  u  


21.把13行到18行的内容移动文件的尾部,还原上一步操作(按两次u)

13gg  6dd    G  p    u u 


22.将文件中所有的/sbin/nologin为/bin/bash

:%s#/sbin/nologin#/bin/bash#g

23.在第一行下面插入新的一行,并输入"# Hello!"

gg  o  # Hello!

24.保存文档并退出

ZZ   :x   :wq

#根据文件回答下列习题

[root@BC ~]# cat proxy.conf
server {
    Listen 8080;
    Server_Name vim.OldboyEDU.com;
    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forward-for;
        proxy_intercept_errors on;
        proxy_next_upstream error timeout;
        proxy_next_upstream_timeout 3s;
        proxy_next_upstream_tries 2;
        error_page 500 502 403 404 = /proxy_error.html;
    }
    location = /proxy_error.html {
        root /code/proxy;
    }
}

25.使用vim打开proxy.conf文件

vim  proxy.conf

26.修改Listen为listen小写,并将8080修改为80

2gg   ~     xx

27.修改Server_Name为server_name小写。

3gg   ~   ~  


28.修改vim.OldboyEDU.com为vim.oldboy.com

3gg  ~  ~  ~  ~

29.在server_name行下插入一行 root /code;

3gg   o  root /code;

30.复制5-14行的内容,然后将其粘贴到14行下面

5gg  10yy  14gg  p

31.删除与proxy_set_header相关的两行全部删除

/proxy_set_header  dd

32.如上操作完成后,在13-20行前面加上#号

视图模式 

13gg   


33.删除21-23的行,然后保存当前文件

:21,23d   :wq  

八、day13作业


1.什么是用户?

能够登录系统的就是用户


2.Linux与windows系统的用户有什么区别?

Linux支持多用户同时登录

Windows默认不支持同时多用户登录的  


3.使用什么命令可以查看用户是否存在?

id   user

grep  \'user\'  /etc/passwd  



4.跟用户相关的配置文件都有哪些?分别存放的是什么?

/etc/passwd  用户基本信息    /etc/shadow   用户密码信息 



5./etc/passwd文件以\':\' 为分割符, 分为7个字段,请说明一下每个字段的具体含义?
6./etc/shadow文件以\':\' 为分割符, 分为9个字段,请说明一下每个字段的具体含义?



7.什么是用户的UID?

用户自己独有的ID号码  编号 


8.不同的用户对应UID号范围是多少?

约定  

9.新建用户user1、user2,用户user2不允许登陆到系统中。

useradd  user1

useradd  -M  -s  /sbin/nologin


10.创建普通用户oldboy,其ID号为789.

useradd  -u789   oldboy

11.创建虚拟用户test,其ID号为666

useradd  -u666  -M  -s  /sbin/nologin  test

12.修改oldboy用户的ID号,修改为777.

usermod  -u 777  oldboy

13.修改用户test的命令解释器,使其可以登录到系统。

usermod  -s  /bin/bash   test  

14.删除用户user1.不删除其家目录。

userdel  user1


15.删除用户user2,不保留其家目录。

userdel  -r  user2


16.给oldboy用户创建一个密码为123,并尝试登录。

echo "123"  | passwd  --stdin  oldboy 

17.默认情况下管理员创建了一个用户,就会在()目录下创建一个用户主目录

/home


18.如何检查系统中存在oldboy用户,并且显示用户id信息

id  oldboy 

grep  oldboy  /etc/passwd  


19.创建gid为1666,名字为www的用户组

groupadd  -g1666  www

20.创建uid为1666,gid为1666,名字为www的用户

useradd  -u1666  -g1666  www

21.创建uid为1888,注释信息为"虚拟用户",不创建家目录,不能登录系统,名字为oldboyedu的用户

useradd  -u1888 -c "虚拟用户"  -M  -s /sbin/nologin   oldboyedu


22.批量创建10个用户,用户名为oldboy1 oldboy2 oldboy3 .... oldboy10.

[root@BC ~]# echo {1..10} |xargs -n1
1
2
3
4
5
6
7
8
9
10
[root@BC ~]# seq 10
1
2
3
4
5
6
7
8
9
10

[root@BC ~]# seq 10  | awk  \'{print "oldboy"$1}\'
oldboy1
oldboy2
oldboy3
oldboy4
oldboy5
oldboy6
oldboy7
oldboy8
oldboy9
oldboy10
[root@BC ~]# seq 10  | awk  \'{print "useradd  oldboy"$1}\'
useradd  oldboy1
useradd  oldboy2
useradd  oldboy3
useradd  oldboy4
useradd  oldboy5
useradd  oldboy6
useradd  oldboy7
useradd  oldboy8
useradd  oldboy9
useradd  oldboy10
[root@BC ~]# seq 10  | awk  \'{print "useradd  oldboy"$1}\' | bash 
[root@BC ~]# tail  /etc/passwd
oldboy1:x:1014:1014::/home/oldboy1:/bin/bash
oldboy2:x:1015:1015::/home/oldboy2:/bin/bash
oldboy3:x:1016:1016::/home/oldboy3:/bin/bash
oldboy4:x:1017:1017::/home/oldboy4:/bin/bash
oldboy5:x:1018:1018::/home/oldboy5:/bin/bash
oldboy6:x:1019:1019::/home/oldboy6:/bin/bash
oldboy7:x:1020:1020::/home/oldboy7:/bin/bash
oldboy8:x:1021:1021::/home/oldboy8:/bin/bash
oldboy9:x:1022:1022::/home/oldboy9:/bin/bash
oldboy10:x:1023:1023::/home/oldboy10:/bin/bash


[root@BC ~]# seq 10 | sed -nr \'s#(.*)#useradd \1#gp\'
useradd 1
useradd 2
useradd 3
useradd 4
useradd 5
useradd 6
useradd 7
useradd 8
useradd 9
useradd 10
[root@BC ~]# seq 10 | sed -nr \'s#(.*)#useradd oldboy\1#gp\'
useradd oldboy1
useradd oldboy2
useradd oldboy3
useradd oldboy4
useradd oldboy5
useradd oldboy6
useradd oldboy7
useradd oldboy8
useradd oldboy9
useradd oldboy10
[root@BC ~]# seq 10 | sed -nr \'s#(.*)#useradd oldboy\1#gp\' |bash



23.迁移oldboy8用户的家目录到/tmp/oldboy8

usermod  -md  /tmp/olsboy8   oldboy8  


24.oldboy8用户的用户名修改成oldboy888

usermod  -l  oldboy888  oldboy8


25.锁定oldboy888用户,解锁oldboy888用户


usermod  -L oldboy888

usermod  -U  oldboy888

26.创建普通用户test01、test02、test03,要求UID为2888,2999,2998

[root@BC ~]# echo -e "01  2888\n02  2999\n03  2998"
01  2888
02  2999
03  2998
[root@BC ~]# echo -e "01  2888\n02  2999\n03  2998" |awk \'{print "test"$1}\'
test01
test02
test03
[root@BC ~]# echo -e "01  2888\n02  2999\n03  2998" |awk \'{print $2"test"$1}\'
2888test01
2999test02
2998test03
[root@BC ~]# echo -e "01  2888\n02  2999\n03  2998" |awk \'{print $2"  test"$1}\'
2888  test01
2999  test02
2998  test03
[root@BC ~]# echo -e "01  2888\n02  2999\n03  2998" |awk \'{print "useradd  -u"$2"  test"$1}\'
useradd  -u2888  test01
useradd  -u2999  test02
useradd  -u2998  test03
[root@BC ~]# echo -e "01  2888\n02  2999\n03  2998" |awk \'{print "useradd  -u"$2"  test"$1}\' | bash




27.给test01用户使用交互式设置密码为123456

passwd  test01



28.使用test01用户进行登录。

ssh  test01@10.0.0.100  


29.使用非交互式给test01设置密码为oldboy123

echo "oldboy123"  | passwd  --stdin   test01


30.使用修改之后的密码进行登录。

ssh  test01@10.0.0.100

31.有哪些命令可以查看当前用户的登录情况?

w    who    


32.删除用户test02,要求连家目录一起删除。


userdel -r  test02



33.请问,我删除了test02用户,哪个文件会发生变化?

/etc/passwd   /etc/shadow   /etc/group  /etc/gshadow

34.创建一个虚拟用户oldboy01,要求UID为555,不创建家目录。

useradd  -u555 -M -s /sbin/nologin  

35.创建用户时,不指定选项设置参数了,系统创建之后的默认参数是根据什么文件来定义的?

/etc/login.defs

/etc/default/useradd  

36.切换普通用户时,出现这样的命令行"-bash-4.1$",这是什么原因造成的,该怎么解决?

家目录不存在

家目录里面配置文件不存在 

cp  -a  /etc/skel/.bash*  ./  

37.登录到test01用户,给其用户test03设置密码,发现报错,请问是什么原因?该怎么解决?

普通用户只能给自己设置密码 



38.登录到test01用户,给其本用户设置密码为123,报错,请问是什么原因?该怎么解决?

普通用户设置密码至少要8位 并且不能有规律  


39.使用root用户给test01用户设置一个18位的随机密码,并进行登录。

echo  $RANDOM | md5sum  | cut -c 1-18  | tee pass.txt  | passwd --stdin test01

mkpasswd  -l 18  

40.创建10个用户,前缀是你的姓,后缀为数字序列,比如qiu1等,并设置随机密码,一条命令实现(能否使用多种方法实现)。


[root@BC ~]# seq 10 | sed -nr \'s#(.*)#useradd oldboy\1#gp\'
useradd oldboy1
useradd oldboy2
useradd oldboy3
useradd oldboy4
useradd oldboy5
useradd oldboy6
useradd oldboy7
useradd oldboy8
useradd oldboy9
useradd oldboy10
[root@BC ~]# seq 10 | sed -nr \'s#(.*)#useradd oldboy\1 && mkpasswd  -l 18 |tee pass\1\.txt | passwd --stdin oldboy\1#gp\' 
useradd oldboy1 11 mkpasswd  -l 18 |tee pass1.txt | passwd --stdin oldboy1
useradd oldboy2 22 mkpasswd  -l 18 |tee pass2.txt | passwd --stdin oldboy2
useradd oldboy3 33 mkpasswd  -l 18 |tee pass3.txt | passwd --stdin oldboy3
useradd oldboy4 44 mkpasswd  -l 18 |tee pass4.txt | passwd --stdin oldboy4
useradd oldboy5 55 mkpasswd  -l 18 |tee pass5.txt | passwd --stdin oldboy5
useradd oldboy6 66 mkpasswd  -l 18 |tee pass6.txt | passwd --stdin oldboy6
useradd oldboy7 77 mkpasswd  -l 18 |tee pass7.txt | passwd --stdin oldboy7
useradd oldboy8 88 mkpasswd  -l 18 |tee pass8.txt | passwd --stdin oldboy8
useradd oldboy9 99 mkpasswd  -l 18 |tee pass9.txt | passwd --stdin oldboy9
useradd oldboy10 1010 mkpasswd  -l 18 |tee pass10.txt | passwd --stdin oldboy10
[root@BC ~]# seq 10 | sed -nr \'s#(.*)#useradd oldboy\1 \&\& mkpasswd  -l 18 |tee pass\1\.txt | passwd --stdin oldboy\1#gp\'
useradd oldboy1 && mkpasswd  -l 18 |tee pass1.txt | passwd --stdin oldboy1
useradd oldboy2 && mkpasswd  -l 18 |tee pass2.txt | passwd --stdin oldboy2
useradd oldboy3 && mkpasswd  -l 18 |tee pass3.txt | passwd --stdin oldboy3
useradd oldboy4 && mkpasswd  -l 18 |tee pass4.txt | passwd --stdin oldboy4
useradd oldboy5 && mkpasswd  -l 18 |tee pass5.txt | passwd --stdin oldboy5
useradd oldboy6 && mkpasswd  -l 18 |tee pass6.txt | passwd --stdin oldboy6
useradd oldboy7 && mkpasswd  -l 18 |tee pass7.txt | passwd --stdin oldboy7
useradd oldboy8 && mkpasswd  -l 18 |tee pass8.txt | passwd --stdin oldboy8
useradd oldboy9 && mkpasswd  -l 18 |tee pass9.txt | passwd --stdin oldboy9
useradd oldboy10 && mkpasswd  -l 18 |tee pass10.txt | passwd --stdin oldboy10
[root@BC ~]# seq 10 | sed -nr \'s#(.*)#useradd old\1 \&\& mkpasswd  -l 18 |tee pass\1\.txt | passwd --stdin oldboy\1#gp\' |bash
Changing password for user oldboy1.
passwd: all authentication tokens updated successfully.
Changing password for user oldboy2.
passwd: all authentication tokens updated successfully.
Changing password for user oldboy3.
passwd: all authentication tokens updated successfully.
Changing password for user oldboy4.
passwd: all authentication tokens updated successfully.
Changing password for user oldboy5.
passwd: all authentication tokens updated successfully.
Changing password for user oldboy6.
passwd: all authentication tokens updated successfully.
Changing password for user oldboy7.
passwd: all authentication tokens updated successfully.
Changing password for user oldboy8.
passwd: all authentication tokens updated successfully.
Changing password for user oldboy9.
passwd: all authentication tokens updated successfully.
Changing password for user oldboy10.
passwd: all authentication tokens updated successfully.
[root@BC ~]# ll
total 61148
-rw-r--r--. 1 root root       39 Jul 17 19:16 123.txt
-rw-r--r--. 1 root root  9272936 Jul 17 12:01 access.log
-rw-r--r--. 1 root root       28 Jul 17 20:12 oldboy.txt
-rw-r--r--  1 root root       19 Jul 22 12:20 pass10.txt
-rw-r--r--  1 root root       19 Jul 22 12:20 pass1.txt
-rw-r--r--  1 root root       19 Jul 22 12:20 pass2.txt
-rw-r--r--  1 root root       19 Jul 22 12:20 pass3.txt
-rw-r--r--  1 root root       19 Jul 22 12:20 pass4.txt
-rw-r--r--  1 root root       19 Jul 22 12:20 pass5.txt
-rw-r--r--  1 root root       19 Jul 22 12:20 pass6.txt
-rw-r--r--  1 root root       19 Jul 22 12:20 pass7.txt
-rw-r--r--  1 root root       19 Jul 22 12:20 pass8.txt
-rw-r--r--  1 root root       19 Jul 22 12:20 pass9.txt


[root@BC ~]# seq 10  | awk  \'{print "useradd  boy"$1" && mkpasswd  -l 18 |tee -a pass.log | passwd --stdin boy"$1}\' |bash
Changing password for user boy1.
passwd: all authentication tokens updated successfully.
Changing password for user boy2.
passwd: all authentication tokens updated successfully.
Changing password for user boy3.
passwd: all authentication tokens updated successfully.
Changing password for user boy4.
passwd: all authentication tokens updated successfully.
Changing password for user boy5.
passwd: all authentication tokens updated successfully.
Changing password for user boy6.
passwd: all authentication tokens updated successfully.
Changing password for user boy7.
passwd: all authentication tokens updated successfully.
Changing password for user boy8.
passwd: all authentication tokens updated successfully.
Changing password for user boy9.
passwd: all authentication tokens updated successfully.
Changing password for user boy10.
passwd: all authentication tokens updated successfully.
[root@BC ~]# cat pass.log 
yekvpfdmF+3anweKd0
4nyyrwkUM>u3jlcgvi
jw5vczapnuplG5vVv<
mJaebjb9cxapL+1yjf
vvdyshXNkzc1qq4wg*
lmlGubcwrs9(Whq6wf
rbm/kwxbwdufAU55cx
g=mzhdgY6osysgLnf5
nany5srVjnf9emFpi*
fV5sn0qzm}kaMzgsux



41.创建10个用户,前缀是你的名,后缀为数字序列,比如BC1等,并给其10个用户设置统一密码为123456,最后尝试是否可以登录。

[root@BC ~]# seq 10  | awk  \'{print "useradd  boy"$1" && echo \'123456\' | passwd --stdin boy"$1}\' |bash
Changing password for user boy1.
passwd: all authentication tokens updated successfully.
Changing password for user boy2.
passwd: all authentication tokens updated successfully.
Changing password for user boy3.
passwd: all authentication tokens updated successfully.
Changing password for user boy4.
passwd: all authentication tokens updated successfully.
Changing password for user boy5.
passwd: all authentication tokens updated successfully.
Changing password for user boy6.
passwd: all authentication tokens updated successfully.
Changing password for user boy7.
passwd: all authentication tokens updated successfully.
Changing password for user boy8.
passwd: all authentication tokens updated successfully.
Changing password for user boy9.
passwd: all authentication tokens updated successfully.
Changing password for user boy10.
passwd: all authentication tokens updated successfully.


42.创建用户qiudao,并给其用户设置一个24位的随机密码,要求密码包含数字,大小写字母及特殊符号,最后查看是否可以登录。

useradd  qiudao

mkpasswd  -l 24  -d 6 -c 6 -C 6 -s 6 | tee  pass.txt | passwd  --stdin  qiudao  


43.跟组相关的两个配置文件是?

/etc/group 

/etc/gshadow


44.创建一个用户基本组,shanghai01.

groupadd   shanghai01


45.创建一个用户基本组,shanghai02,指定GID为1099.

groupadd -g1099   shanghai02

46.创建一个用户系统组,shanghai03.

groupadd  -r  shanghai03

47.修改用户基本组shanghai02的GID号为1033.

groupmod  -g 1033  shanghai02


2020年07月23日上午(day15)

一、权限的基本概述


1.什么是权限 

系统对用户所能执行的功能的限制     


2.为什么要有权限~

为了保护每个用户的自己的工作环境和隐私 


3.权限跟用户有什么关系  

属主    User        u

属组	  Group       g

其他人  others      o

					a    所有
					
对应了三个基础权限

r		可读    readable				4

w		可写	  writable				2

x		可执行	  executable			1

-		没有权限	权限位占位符  		0

[root@jh ~]# ls -l
total 61152
-rw-r--r--. 1 root root       39 Jul 17 19:16 123.txt
-rw-r--r--. 1 root root  9272936 Jul 17 12:01 access.log


-               rw-     r--     r--     644

文件的类型       属主     属组     匿名 

每三个为一组

第一个对应 可读  r

第二个对应  可写 w

第三个对应  可执行 x

没有此权限则用-代替 


4.为什么要设置权限,如何设置权限 

设置某个用户对于系统的某个资源拥有什么样管理权力 

chmod		#设置权限的命令 

选项:	

	-R		#针对目录设置权限  赋予目录及目录以下所有文件的权限 


只有root管理员才可以修改任何人的权限  普通用户只能修改自己的权限  


二、权限的设置案列



-rwxrw-r--	 test01   dev    file.txt

test01   user01属于dev组     jh01属于jh01组

三个用户分别对这个文件拥有什么权限 


test01是文件的所有者    可读  可写 可执行权限 

user01属于dev组,dev组所拥有的权限,user01同样拥有   可读 可写 权限 

jh01不属于dev组,对于此文件来说,就是一个陌生人  拥有匿名用户的权限  可读 



判断一个用户对一个文件拥有什么权限 

1. 系统会判断该用户是否为所有者,如果是,则按照属主的权限进行访问

2. 如果不是所有者,则判断该用户是否为所属组,如果是,则按照所属组的权限进行访问 

3. 如果此用户不是所有者,也不是所属组,则按照匿名用户进行访问



修改权限的两种方法:


字母进行修改

u   属主   

g	属组

o	匿名用户

a	所有用户

权限字母

r		可读

w		可写

x		可执行

-		没有权限


赋予的方式

+		#添加权限

-		#收回某个权限

=		#覆盖之前的权限 


#添加权限

[root@jh ~]# ll
total 4
-rw-r--r-- 1 root root 158 Jul 23 09:06 hosts
[root@jh ~]# chmod  u+x  hosts 
[root@jh ~]# ll
total 4
-rwxr--r-- 1 root root 158 Jul 23 09:06 hosts
[root@jh ~]# chmod g+wx hosts
[root@jh ~]# ll
total 4
-rwxrwxr-- 1 root root 158 Jul 23 09:06 hosts
[root@jh ~]# chmod  o+w  hosts 
[root@jh ~]# ll
total 4
-rwxrwxrw- 1 root root 158 Jul 23 09:06 hosts


[root@jh ~]# chmod a+x  hosts 
[root@jh ~]# ll
total 4
-rwxrwxrwx 1 root root 158 Jul 23 09:06 hosts


#收回权限

#a可以省略 

[root@jh ~]# chmod   -x  hosts 
[root@jh ~]# ll
total 4
-rw-rw-rw- 1 root root 158 Jul 23 09:06 hosts


[root@jh ~]# chmod u-w  hosts 
[root@jh ~]# ll
total 4
-r--rw-rw- 1 root root 158 Jul 23 09:06 hosts
[root@jh ~]# chmod  g-w,o-rw  hosts
[root@jh ~]# ll
total 4
-r--r----- 1 root root 158 Jul 23 09:06 hosts
[root@jh ~]# 

#覆盖之前的所有权限

[root@jh ~]# chmod a=rw  hosts 
[root@jh ~]# ll
total 4
-rw-rw-rw- 1 root root 158 Jul 23 09:06 hosts


[root@jh ~]# chmod  o=-  hosts
[root@jh ~]# ll
total 4
-rw-rw---- 1 root root 158 Jul 23 09:06 hosts



根据数字进行修改    会把原来的权限全部覆盖掉 

-R		#给目录的权限及目录以下的所有文件或者子目录都设置统一权限

[root@jh ~]# chmod 644  hosts 
[root@jh ~]# ll
total 4
-rw-r--r-- 1 root root 158 Jul 23 09:06 hosts

[root@jh ~]# mkdir  data
[root@jh ~]# ll
total 4
drwxr-xr-x 2 root root   6 Jul 23 09:35 data
-rw-r--r-- 1 root root 158 Jul 23 09:06 hosts
[root@jh ~]# cp /etc/hosts  data/
[root@jh ~]# ll data/
total 4
-rw-r--r-- 1 root root 158 Jul 23 09:35 hosts
[root@jh ~]# ll -d data/
drwxr-xr-x 2 root root 19 Jul 23 09:35 data/
[root@jh ~]# chmod 700  data/
[root@jh ~]# ll -d data/
drwx------ 2 root root 19 Jul 23 09:35 data/
[root@jh ~]# ll data/
total 4
-rw-r--r-- 1 root root 158 Jul 23 09:35 hosts
[root@jh ~]# chmod -R  755  data/
[root@jh ~]# ll -d data/
drwxr-xr-x 2 root root 19 Jul 23 09:35 data/
[root@jh ~]# ll data/
total 4
-rwxr-xr-x 1 root root 158 Jul 23 09:35 hosts


#权限设置案例

/opt/test   针对于此目录    

属主为root  属组为dev     dev01  dev02  

属主拥有所有权限

属组拥有可读 可写权限

其他人没有任何权限 

[root@jh ~]# mkdir  /opt/test
[root@jh ~]# ll /opt/
total 0
drwxr-xr-x 2 root root 6 Jul 23 09:40 test
[root@jh ~]# groupadd   dev
[root@jh ~]# chgrp  dev  /opt/test/
[root@jh ~]# ll /opt/
total 0
drwxr-xr-x 2 root dev 6 Jul 23 09:40 test
[root@jh ~]# chmod 760  /opt/test/
[root@jh ~]# ll /opt/
total 0
drwxrw---- 2 root dev 6 Jul 23 09:40 test

三、权限的文件或者目录的影响



权限对文件或者目录的影响


权限				文件								          目录

r		可以查看文件内容  cat head tail               浏览目录及子目录的列表  ls tree			


w		可以新增,修改文件内容的权利 vim echo > >>	  可以新建或者删除,移动目录中的文件的权利


x		可以执行文件的权利 脚本                         可以进入目录   cd  



四、文件权限设置案列



r权限

[root@jh ~]# echo  "hostname"  >> /opt/file.txt

[root@jh ~]# ll /opt/
total 4
-rw-r--r-- 1 root root 9 Jul 23 09:57 file.txt

[root@jh ~]# useradd   jh01
[root@jh ~]# 
[root@jh ~]# echo "1" | passwd  --stdin  jh01
Changing password for user jh01.
passwd: all authentication tokens updated successfully.


[root@jh ~]# su  -  jh01
Last login: Thu Jul 23 09:59:14 CST 2020 on pts/0
[jh01@jh ~]$ ll /opt/
total 4
-rw-r--r-- 1 root root 9 Jul 23 09:57 file.txt
drwxrw---- 2 root dev  6 Jul 23 09:40 test
[jh01@jh ~]$ cat /opt/file.txt 
hostname
[jh01@jh ~]$ head /opt/file.txt
hostname
[jh01@jh ~]$ tail /opt/file.txt
hostname


[jh01@jh ~]$ vim  /opt/file.txt
[jh01@jh ~]$ echo "123"  >> /opt/file.txt
-bash: /opt/file.txt: Permission denied
[jh01@jh ~]$ /opt/file.txt 
-bash: /opt/file.txt: Permission denied


#文件只有r权限时,是可以正常查看文件内容的,不可以修改或者执行文件的权限


w权限


[root@jh ~]# chmod  o=w  /opt/file.txt 
[root@jh ~]# ll /opt/file.txt
-rw-r---w- 1 root root 9 Jul 23 09:57 /opt/file.txt

[root@jh ~]# su - jh01
Last login: Thu Jul 23 10:00:14 CST 2020 on pts/0
[jh01@jh ~]$ cat /opt/file.txt 
cat: /opt/file.txt: Permission denied
[jh01@jh ~]$ vim /opt/file.txt
[jh01@jh ~]$ cat /opt/file.txt
cat: /opt/file.txt: Permission denied
[jh01@jh ~]$ /opt/file.txt
-bash: /opt/file.txt: Permission denied

[root@jh ~]# cat  /opt/file.txt 
uirethruie

[jh01@jh ~]$ echo "test"  >> /opt/file.txt 
[jh01@jh ~]$ echo "test"  > /opt/file.txt 

[root@jh ~]# cat  /opt/file.txt 
uirethruie
test
[root@jh ~]# cat  /opt/file.txt 
test


#只有w权限时, 无法查看和执行文件的权限  使用vim编辑文件文件时,无法查看里面的内容,可以进行编辑,但是需要强制保存,但是保存之后,原来的内容被覆盖了  可以使用echo命令进行追加或者重定向内容进去


x权限

[root@jh ~]# chmod o=x  /opt/file.txt 
[root@jh ~]# ll /opt/file.txt
-rw-r----x 1 root root 5 Jul 23 10:09 /opt/file.txt
[root@jh ~]# su - jh01
Last login: Thu Jul 23 10:08:38 CST 2020 on pts/0
[jh01@jh ~]$ ll /opt/file.txt 
-rw-r----x 1 root root 5 Jul 23 10:09 /opt/file.txt
[jh01@jh ~]$ cat /opt/file.txt
cat: /opt/file.txt: Permission denied
[jh01@jh ~]$ echo "123" >> /opt/file.txt
-bash: /opt/file.txt: Permission denied
[jh01@jh ~]$ /opt/file.txt
bash: /opt/file.txt: Permission denied

#文件只有x权限  什么都干不了 



rw权限 

[root@jh ~]# chmod   o=rw  /opt/file.txt 
[root@jh ~]# ll /opt/file.txt
-rw-r--rw- 1 root root 5 Jul 23 10:09 /opt/file.txt
[root@jh ~]# su - jh01
Last login: Thu Jul 23 10:11:27 CST 2020 on pts/0
[jh01@jh ~]$ cat /opt/file.txt 
test
[jh01@jh ~]$ echo "hostname"  > /opt/file.txt
[jh01@jh ~]$ vim /opt/file.txt
[jh01@jh ~]$ cat /opt/file.txt
hostname
pwd
[jh01@jh ~]$ /opt/file.txt
-bash: /opt/file.txt: Permission denied


#经过测试,文件w权限需要r权限的配合  才能正常的修改文件内容 



rx权限


[root@jh ~]# chmod  o=rx  /opt/file.txt 
[root@jh ~]# ll /opt/file.txt
-rw-r--r-x 1 root root 13 Jul 23 10:14 /opt/file.txt
[root@jh ~]# su - jh01
Last login: Thu Jul 23 10:14:16 CST 2020 on pts/0
[jh01@jh ~]$ cat /opt/file.txt 
hostname
pwd
[jh01@jh ~]$ echo "123" > /opt/file.txt
-bash: /opt/file.txt: Permission denied
[jh01@jh ~]$ vim /opt/file.txt
[jh01@jh ~]$ /opt/file.txt
jh
/home/jh01



#经过测试,文件的x权限需要r权限的配合  

wx权限  没有什么用处 


rwx权限  		权限太大 


Permission denied		#权限不足 没有权限 


总结:  权限对文件的影响 

1)#当文件只有r权限时,是可以正常查看文件内容的,不可以修改或者执行文件的权限
2)#只有w权限时, 无法查看和执行文件的权限  使用vim编辑文件文件时,无法查看里面的内容,可以进行编辑,但是需要强制保存,但是保存之后,原来的内容被覆盖了  可以使用echo命令进行追加或者重定向内容进去
3)#文件只有x权限  什么都干不了 
4)#经过测试,文件w权限需要r权限的配合  才能正常的修改文件内容 
5)#经过测试,文件的x权限需要r权限的配合 
6)#wx权限  没有什么用处 
6)#rwx权限  权限太大 

五、目录权限设置案列


权限对目录的影响 


r权限     具有可以浏览目录及其子目录下的列表  属性信息  


[root@jh ~]# chmod o=r  /opt/test/
[root@jh ~]# ll /opt/
total 4
-rw-r--r-x 1 root root 13 Jul 23 10:14 file.txt
drwxrw-r-- 2 root root  6 Jul 23 09:40 test
[root@jh ~]# touch  /opt/test/data.{txt,log,sh}
[root@jh ~]# mkdir  /opt/test/oldboy{01..03}
[root@jh ~]# ll /opt/test/
total 0
-rw-r--r-- 1 root root 0 Jul 23 10:51 data.log
-rw-r--r-- 1 root root 0 Jul 23 10:51 data.sh
-rw-r--r-- 1 root root 0 Jul 23 10:51 data.txt
drwxr-xr-x 2 root root 6 Jul 23 10:51 oldboy01
drwxr-xr-x 2 root root 6 Jul 23 10:51 oldboy02
drwxr-xr-x 2 root root 6 Jul 23 10:51 oldboy03

[root@jh ~]# su  -  jh01
Last login: Thu Jul 23 10:51:09 CST 2020 on pts/0

[jh01@jh ~]$ ls   /opt/test/
ls: cannot access /opt/test/data.txt: Permission denied
ls: cannot access /opt/test/data.log: Permission denied
ls: cannot access /opt/test/data.sh: Permission denied
ls: cannot access /opt/test/oldboy01: Permission denied
ls: cannot access /opt/test/oldboy02: Permission denied
ls: cannot access /opt/test/oldboy03: Permission denied
data.log  data.sh  data.txt  oldboy01  oldboy02  oldboy03


[jh01@jh ~]$ ls -l  /opt/test/
ls: cannot access /opt/test/data.txt: Permission denied
ls: cannot access /opt/test/data.log: Permission denied
ls: cannot access /opt/test/data.sh: Permission denied
ls: cannot access /opt/test/oldboy01: Permission denied
ls: cannot access /opt/test/oldboy02: Permission denied
ls: cannot access /opt/test/oldboy03: Permission denied
total 0
-????????? ? ? ? ?            ? data.log
-????????? ? ? ? ?            ? data.sh
-????????? ? ? ? ?            ? data.txt
d????????? ? ? ? ?            ? oldboy01
d????????? ? ? ? ?            ? oldboy02
d????????? ? ? ? ?            ? oldboy03

[jh01@jh ~]$ rm -f  /opt/test/data.log 
rm: cannot remove ‘/opt/test/data.log’: Permission denied
[jh01@jh ~]$ touch /opt/test/data.conf
touch: cannot touch ‘/opt/test/data.conf’: Permission denied
[jh01@jh ~]$ mv /opt/test/data.log  /tmp
mv: cannot stat ‘/opt/test/data.log’: Permission denied

[jh01@jh ~]$ cd  /opt/test/
-bash: cd: /opt/test/: Permission denied

[jh01@jh ~]$ tree  /opt/test/  #没有任何统计 
/opt/test/

0 directories, 0 files


#目录只有r权限,使用ls -l命令查看目录下的列表,会出现一堆的权限不足,但是文件名和文件类型显示出来了,其他的属性信息都是问号   不能对此目录下的文件进行新建或者删除及其移动的操作    也不能切换到这个目录 


w权限


[root@jh ~]# chmod  o=w  /opt/test/
[root@jh ~]# ll /opt/
total 4
-rw-r--r-x 1 root root  13 Jul 23 10:14 file.txt
drwxrw--w- 5 root root 101 Jul 23 10:51 test


[root@jh ~]# su  -  jh01
Last login: Thu Jul 23 10:52:22 CST 2020 on pts/0
[jh01@jh ~]$ ls /opt/test/
ls: cannot open directory /opt/test/: Permission denied
[jh01@jh ~]$ ls -l /opt/test/
ls: cannot open directory /opt/test/: Permission denied
[jh01@jh ~]$ cd /opt/test/
-bash: cd: /opt/test/: Permission denied
[jh01@jh ~]$ touch  /opt/test/123.txt
touch: cannot touch ‘/opt/test/123.txt’: Permission denied
[jh01@jh ~]$ rm -f  /opt/test/data.log
rm: cannot remove ‘/opt/test/data.log’: Permission denied
[jh01@jh ~]$ mv /opt/test/data.log  /tmp/
mv: cannot stat ‘/opt/test/data.log’: Permission denied
[jh01@jh ~]$ cp /opt/test/data.log /tmp
cp: cannot stat ‘/opt/test/data.log’: Permission denied
[jh01@jh ~]$ cp /opt/test/data.log /tmp
cp: cannot stat ‘/opt/test/data.log’: Permission denied
[jh01@jh ~]$ mv /opt/test/data.log  /tmp/
mv: cannot stat ‘/opt/test/data.log’: Permission denied
[jh01@jh ~]$ rm -f  /opt/test/data.log
rm: cannot remove ‘/opt/test/data.log’: Permission denied
[jh01@jh ~]$ ll -d /opt/
drwxrwxrwx 3 root root 34 Jul 23 09:57 /opt/

#只有w权限时,目录什么都做不了 


x权限		进入目录

[root@jh ~]# su - jh01
Last login: Thu Jul 23 10:57:51 CST 2020 on pts/0
[jh01@jh ~]$ cd  /opt/test/
[jh01@jh test]$ ls
ls: cannot open directory .: Permission denied
[jh01@jh test]$ ls -l
ls: cannot open directory .: Permission denied
[jh01@jh test]$ rm -f  data.log
rm: cannot remove ‘data.log’: Permission denied
[jh01@jh test]$ touch  data.conf
touch: cannot touch ‘data.conf’: Permission denied
[jh01@jh test]$ mv data.log /tmp/
mv: cannot move ‘data.log’ to ‘/tmp/data.log’: Permission denied
[jh01@jh test]$ cp data.log  /tmp/
[jh01@jh test]$ ll /tmp/
total 4
drwxr-xr-x. 2 root  root   51 Jul 17 17:59 data1
drwxr-xr-x. 2 root  root   51 Jul 17 17:59 data2
drwxr-xr-x. 2 root  root   51 Jul 17 17:59 data3
-rw-r--r--  1 jh01 jh01   0 Jul 23 11:03 data.log

#目录只有x权限时,可以切换到目录中,无法查看目录列表信息  也无法进行删除、新建、移动等操作   可以进行复制操作 


rw权限		


[root@jh ~]# chmod o=rw  /opt/test/
[root@jh ~]# ll /opt/
total 4
-rw-r--r-x 1 root root  13 Jul 23 10:14 file.txt
drwxrw-rw- 5 root root 101 Jul 23 10:51 test
[root@jh ~]# su - jh01
Last login: Thu Jul 23 11:06:21 CST 2020 on pts/0
[jh01@jh ~]$ cd /opt/test/
-bash: cd: /opt/test/: Permission denied
[jh01@jh ~]$ ls /opt/test/
ls: cannot access /opt/test/data.txt: Permission denied
ls: cannot access /opt/test/data.log: Permission denied
ls: cannot access /opt/test/data.sh: Permission denied
ls: cannot access /opt/test/oldboy01: Permission denied
ls: cannot access /opt/test/oldboy02: Permission denied
ls: cannot access /opt/test/oldboy03: Permission denied
data.log  data.sh  data.txt  oldboy01  oldboy02  oldboy03
[jh01@jh ~]$ ls -l /opt/test/
ls: cannot access /opt/test/data.txt: Permission denied
ls: cannot access /opt/test/data.log: Permission denied
ls: cannot access /opt/test/data.sh: Permission denied
ls: cannot access /opt/test/oldboy01: Permission denied
ls: cannot access /opt/test/oldboy02: Permission denied
ls: cannot access /opt/test/oldboy03: Permission denied
total 0
-????????? ? ? ? ?            ? data.log
-????????? ? ? ? ?            ? data.sh
-????????? ? ? ? ?            ? data.txt
d????????? ? ? ? ?            ? oldboy01
d????????? ? ? ? ?            ? oldboy02
d????????? ? ? ? ?            ? oldboy03
[jh01@jh ~]$ touch  /opt/test/data.conf
touch: cannot touch ‘/opt/test/data.conf’: Permission denied
[jh01@jh ~]$ rm -f /opt/test/data.log
rm: cannot remove ‘/opt/test/data.log’: Permission denied
[jh01@jh ~]$ mv /opt/test/data.log /tmp/
mv: cannot stat ‘/opt/test/data.log’: Permission denied
[jh01@jh ~]$ cp /opt/test/data.txt  /tmp/
cp: cannot stat ‘/opt/test/data.txt’: Permission denied


#rw权限 跟只有r权限作用是一样的  


rx权限   

[root@jh ~]# chmod o=rx  /opt/test/
[root@jh ~]# ll /opt/
total 4
-rw-r--r-x 1 root root  13 Jul 23 10:14 file.txt
drwxrw-r-x 5 root root 101 Jul 23 10:51 test
[root@jh ~]# su - jh01
Last login: Thu Jul 23 11:10:14 CST 2020 on pts/0
[jh01@jh ~]$ cd  /opt/test/
[jh01@jh test]$ ls
data.log  data.sh  data.txt  oldboy01  oldboy02  oldboy03
[jh01@jh test]$ ls -l
total 0
-rw-r--r-- 1 root root 0 Jul 23 10:51 data.log
-rw-r--r-- 1 root root 0 Jul 23 10:51 data.sh
-rw-r--r-- 1 root root 0 Jul 23 10:51 data.txt
drwxr-xr-x 2 root root 6 Jul 23 10:51 oldboy01
drwxr-xr-x 2 root root 6 Jul 23 10:51 oldboy02
drwxr-xr-x 2 root root 6 Jul 23 10:51 oldboy03
[jh01@jh test]$ touch  data.conf
touch: cannot touch ‘data.conf’: Permission denied
[jh01@jh test]$ rm -f data.log 
rm: cannot remove ‘data.log’: Permission denied
[jh01@jh test]$ mv data.txt /tmp/
mv: cannot move ‘data.txt’ to ‘/tmp/data.txt’: Permission denied
[jh01@jh test]$ cp  data.txt  /tmp/
[jh01@jh test]$ ll /tmp/
total 4
drwxr-xr-x. 2 root  root   51 Jul 17 17:59 data1
drwxr-xr-x. 2 root  root   51 Jul 17 17:59 data2
drwxr-xr-x. 2 root  root   51 Jul 17 17:59 data3
-rw-r--r--  1 jh01 jh01   0 Jul 23 11:03 data.log
-rw-r--r--  1 jh01 jh01   0 Jul 23 11:13 data.txt


#目录拥有rx权限时,可以正常的查看目录列表信息,属性信息,也可以进入目录,可以复制文件到其他目录,但是不能执行新建、删除、移动等操作 



wx权限

[root@jh ~]# chmod o=wx  /opt/test/
[root@jh ~]# ll /opt/
total 4
-rw-r--r-x 1 root root  13 Jul 23 10:14 file.txt
drwxrw--wx 5 root root 101 Jul 23 10:51 test
[root@jh ~]# su - jh01
Last login: Thu Jul 23 11:12:31 CST 2020 on pts/0
[jh01@jh ~]$ cd /opt/test/
[jh01@jh test]$ ls
ls: cannot open directory .: Permission denied
[jh01@jh test]$ touch  123.txt
[jh01@jh test]$ ls
ls: cannot open directory .: Permission denied
[jh01@jh test]$ rm -f data.log
[jh01@jh test]$ mv data.txt  /tmp/
[jh01@jh test]$ ls
ls: cannot open directory .: Permission denied


#目录拥有wx权限时,可以进入目录,可以新建,删除、移动文件的权利  但是查看不了目录的列表及属性信息 


总结: 权限对目录的影响

1)#r权限     具有可以浏览目录及其子目录下的列表  属性信息
2)#只有w权限时,目录什么都做不了 
3)#目录只有x权限时,可以切换到目录中,无法查看目录列表信息  也无法进行删除、新建、移动等操作   可以进行复制操作 
4)#rw权限 跟只有r权限作用是一样的 
5)#目录拥有rx权限时,可以正常的查看目录列表信息,属性信息,也可以进入目录,可以复制文件到其他目录,但是不能执行新建、删除、移动等操作 
6)#目录拥有wx权限时,可以进入目录,可以新建,删除、移动文件的权利  但是查看不了目录的列表及属性信息 

ps:对目录设置权限时,不能离开x权限 

   对文件设置权限时,不能离开r权限 

 

六、属主属组设置



chown  #设置属主属组   只有root管理员才可以进行设置    

选项:

	-R		#递归设置 设置目录及其目录以下的所有文件

[root@jh ~]# ll /opt/
total 4
-rw-r--r-x 1 root root 13 Jul 23 10:14 file.txt
drwxrw--wx 5 root root 84 Jul 23 11:17 test
[root@jh ~]# chown jh01   /opt/file.txt 		#默认设置的是属主  
[root@jh ~]# ll /opt/
total 4
-rw-r--r-x 1 jh01 root 13 Jul 23 10:14 file.txt
drwxrw--wx 5 root  root 84 Jul 23 11:17 test

[root@jh ~]# chown  .jh01  /opt/file.txt 		#设置属组 
[root@jh ~]# ll /opt/
total 4
-rw-r--r-x 1 jh01 jh01 13 Jul 23 10:14 file.txt
drwxrw--wx 5 root  root  84 Jul 23 11:17 test

[root@jh ~]# chown  root.root  /opt/file.txt 	#同时设置属主属组 
[root@jh ~]# ll /opt/
total 4
-rw-r--r-x 1 root root 13 Jul 23 10:14 file.txt
drwxrw--wx 5 root root 84 Jul 23 11:17 test

[root@jh ~]# chown  jh01.jh01  /opt/test/		#只设置目录
[root@jh ~]# ll -d /opt/test/
drwxrw--wx 5 jh01 jh01 84 Jul 23 11:17 /opt/test/
[root@jh ~]# ll /opt/test/
total 0
-rw-rw-r-- 1 jh01 jh01 0 Jul 23 11:17 123.txt
-rw-r--r-- 1 root  root  0 Jul 23 10:51 data.sh
drwxr-xr-x 2 root  root  6 Jul 23 10:51 oldboy01
drwxr-xr-x 2 root  root  6 Jul 23 10:51 oldboy02
drwxr-xr-x 2 root  root  6 Jul 23 10:51 oldboy03
[root@jh ~]# chown -R  jh01.jh01  /opt/test/		#递归设置 
[root@jh ~]# ll /opt/test/
total 0
-rw-rw-r-- 1 jh01 jh01 0 Jul 23 11:17 123.txt
-rw-r--r-- 1 jh01 jh01 0 Jul 23 10:51 data.sh
drwxr-xr-x 2 jh01 jh01 6 Jul 23 10:51 oldboy01
drwxr-xr-x 2 jh01 jh01 6 Jul 23 10:51 oldboy02
drwxr-xr-x 2 jh01 jh01 6 Jul 23 10:51 oldboy03


chgrp		#设置属组   


[root@jh ~]# chgrp   root  /opt/test/
[root@jh ~]# ll -d /opt/test/
drwxrw--wx 5 jh01 root 84 Jul 23 11:17 /opt/test/



七、Umask权限控制


[root@jh ~]# ll
total 4
drwxr-xr-x 2 root root   6 Jul 23 11:21 123
-rw-r--r-- 1 root root   0 Jul 23 11:21 123.txt

系统中为什么新创建的目录的权限为755,文件的权限为644

都是由系统的控制权限所控制的

umask		#控制权限的命令 

[root@jh ~]# umask
0022


系统中是如何计算权限 

系统新创建的目录的权限由最大权限777减去umask控制权限022得到的就是755,所以说新创建的目录的权限为755,新创建文件的权限由文件最大权限666减去umask控制权限022,得到644权限,所以说新创建的文件的权限为644,当文件权限遇到奇数时,在奇数为加一   


[root@jh ~]# umask
0022
[root@jh ~]# umask  033
[root@jh ~]# umask 
0033
[root@jh ~]# mkdir  oldboy
[root@jh ~]# ll
total 4
drwxr-xr-x 2 root root   6 Jul 23 11:21 123
-rw-r--r-- 1 root root   0 Jul 23 11:21 123.txt
drwxr--r-- 2 root root   6 Jul 23 12:02 oldboy
[root@jh ~]# touch oldboy.txt
[root@jh ~]# ll
total 4
drwxr-xr-x 2 root root   6 Jul 23 11:21 123
-rw-r--r-- 1 root root   0 Jul 23 11:21 123.txt
drwxr--r-- 2 root root   6 Jul 23 12:02 oldboy
-rw-r--r-- 1 root root   0 Jul 23 12:02 oldboy.txt


八、day14作业详解

1.删除用户基本组shanghai03。发现无法正常删除,怎样才能将其删除掉,不能删除用户。
把当前所属该基本组的用户转到另外基本组就可以删除了

2.打开多个xshell窗口连接登录同一虚拟机,使用不同的用户登录多次,分别使用w和who命令显示当前系统上的所有已经登录的用户,取出用户名这一列,注意:同一个用户登录多次,则只显示一次即可。
[root@BC ~]# who |awk \'{print $1}\' |sort |uniq
jhno1
root

[root@BC ~]# w |sed \'1,2d\' |awk \'{print $1}\' |sort|uniq
jhno1
root

3.创建用户olddir,其ID号为1005,基本组为old
[root@BC ~]# groupadd old
[root@BC ~]# useradd -u 1005 -g old olddir

4.显示当前登录的用户的UID号,你有几种方法实现?
[root@BC ~]# id 
uid=0(root) gid=0(root) groups=0(root)

[root@BC ~]# grep \'^root\' /etc/passwd
root:x:0:0:root:/root:/bin/bash

5.对于用户来说,组有几种类别?有什么区别?
基本组 	#一个用户只能拥有一个基本组  
附加组	#当基本组的权限不够用户使用的,就出现了附加组   一个用户允许拥有多个附加组  

6./etc/group文件以:为分隔符,分为四列,解释其每列的含义?
第一列:组的名称
第二列:组的密码占位符
第三列:组的GID
第四列:用户名,哪些用户名使用此组作为附属组

7./etc/gshadow文件以:为分隔符,分为四列,解释其每列的含义?
第一列:组的名称
第二列:用户组的密码信息
第三列:用户组的管理者
第四列:用户名,哪些用户名使用此组作为附属组

8.如果想从root用户切换到普通用户,使用什么命令?
[root@BC ~]# su - 用户名
[root@BC ~]# sudo su - 用户名


9.切换到普通用户后,想返回到root用户,怎么做?有几种方法,有什么区别?
[jhno1@BC ~]$ sudo su - 切换回root用户,所在位置为root的家目录

[jhno1@BC ~]$ su -	切换回root用户,所在位置为普通用户的家目录

10.Shell主要分为哪几类?
交互式shell	#终端操作  输入一条指令,需要等待系统的处理及返回结果 

非交互式shell	#脚本的执行方式就是  用户执行完指令 不需要跟系统进行交互 

登录式shell	#通过用户名和密码的方式进行登录的

非登录式shell	#不是通过用户名和密码的方式进行登录的    执行一个bash,就是一个非登录式shell

11.Bash Shell的个人及全局配置文件有哪些?哪个优先级别高?
个人配置文件:/etc/profile 、/etc/bashrc、/etc/profile.d/*.sh
全局配置文件:/root/.bashrc、/root/.bash_profile
个人配置文件优先级最高

12.登录式Shell配置文件执行顺序?
/etc/profile>/etc/profile.d/*.sh>.bash_profile>.bashrc>/etc/bashrc

13.非登录式shell配置文件执行顺序?
.bashrc >/etc/bashrc>/etc/profile.d/*.sh

14.在root用户下,以普通用户身份执行"pwd"命令。
[root@jh ~]# su  -  jh01  -c "pwd"
/home/jh01

15.什么是sudo?
用来提权  给普通用户提权

16.可以根据哪个文件对sudo提权?
/etc/sudoers

17.登录到普通用户,查看/etc/shadow文件的内容,发现查看不了,怎么办?
[root@BC ~]# visudo 
BC ALL=(ALL)       /bin/cat /etc/shadow
[root@BC ~]# visudo -c
/etc/sudoers: parsed OK
[root@BC ~]# su - BC
Last login: Wed Jul 22 16:10:13 CST 2020 on pts/2
[BC@BC ~]$ sudo cat /etc/shadow  就可以查看了

18.登录到普通用户,删除/opt目录,若无法删除,该怎么解决?
[root@BC ~]# visudo 
BC ALL=(ALL)       /bin//bin/rm
[root@BC ~]# visudo -c
/etc/sudoers: parsed OK
[root@BC ~]# su - BC
Last login: Wed Jul 22 16:10:13 CST 2020 on pts/2
[BC@BC ~]$sudo rm -rf /opt   就可以删除了

19.登录到普通用户,使用sudo命令时,不想输出密码,怎么解决?
[root@BC ~]# visudo 
BC ALL=(ALL)       NOPASSWD:/bin//bin/rm
[root@BC ~]# visudo -c
/etc/sudoers: parsed OK
[root@BC ~]# su - BC
Last login: Wed Jul 22 16:10:13 CST 2020 on pts/2
[BC@BC ~]$sudo rm -rf /opt  

20.怎样查看普通用户的sudo权限?
[BC@BC ~]$ sudo -l

21.配置好了sudo授权,怎么检查语法是否正确?
[root@BC ~]# visudo -c

22.禁止root用户远程登录,怎么实现?
[root@BC ~]# vim /etc/ssh/sshd_config 
38gg
进入编辑模式改成
PermitRootLogin no
:wq保存退出
[root@BC ~]# systemctl  restart sshd

23.修改远程连接端口号为2222,然后进行登录?
[root@BC ~]# vim /etc/ssh/sshd_config 
17gg
进入编辑模式改成
Port 2222
:wq保存退出
[root@BC ~]# systemctl  restart sshd

24.把对sshd的设置修改成原来的设置。
[root@BC ~]# vim /etc/ssh/sshd_config 
进入编辑模式改成
#PermitRootLogin yes
#Port 22
:wq保存退出
[root@BC ~]# systemctl  restart sshd

25.说出下面几个特殊符号的含义  * > >>  # .. . ^  $ `` ! 
*	#所有

>	#标准输出重定向  会清空文件的内容之后再将你的内容重定向进去

>>	#标准输出追加重定向 不会清空文件的内容,将文件内容追加到文件的底部 

#	#注释  管理员命令行提示符 

..	#当前目录的上一级目录

.	#当前目录 

^	#逻辑概念 开头     

$	#结尾 最后一行

``	#优先执行反引号里面的命令,把命令的执行结果交给外面的命令  里面必须是命令  跟  $()

!	#非  取反  


2020年07月24日上午(day16)

一、特殊权限



1. setuid


权限位作用于属主的位置   可执行的权限位    执行这条命令的时候,相当于这条命令的所有者  root

s 表示  

[root@BC ~]# ll /usr/bin/passwd 
-rwsr-xr-x. 1 root root 27832 Jun 10  2014 /usr/bin/passwd


[root@BC ~]# ll /usr/bin/rm
-rwxr-xr-x. 1 root root 62952 Oct 31  2018 /usr/bin/rm
[root@BC ~]# su - BC01
Last login: Thu Jul 23 12:24:52 CST 2020 from 10.0.0.1 on pts/4
[BC01@BC ~]$ rm -rf /opt/
rm: cannot remove ‘/opt/’: Permission denied
[BC01@BC ~]$ ll -d /
dr-xr-xr-x. 17 root root 224 Jul 22 10:21 /
[BC01@BC ~]$ logout
[root@BC ~]# rm -rf /opt/
[root@BC ~]# ll /opt/
ls: cannot access /opt/: No such file or directory
[root@BC ~]# mkdir  /opt/
[root@BC ~]# chmod  557   /
[root@BC ~]# ll -d /
dr-xr-xrwx. 17 root root 224 Jul 24 08:38 /
[root@BC ~]# su - BC01
Last login: Fri Jul 24 08:37:21 CST 2020 on pts/0
[BC01@BC ~]$ rm -rf /opt/
[BC01@BC ~]$ logout
[root@BC ~]# chmod  -w  /
chmod: /: new permissions are r-xr-xrwx, not r-xr-xr-x
[root@BC ~]# chmod  o-w  /
[root@BC ~]# ll -d /
dr-xr-xr-x. 16 root root 213 Jul 24 08:39 /


[root@BC ~]# ll /usr/bin/rm
-rwxr-xr-x. 1 root root 62952 Oct 31  2018 /usr/bin/rm
[root@BC ~]# chmod u+s  /usr/bin/rm
[root@BC ~]# ll /usr/bin/rm
-rwsr-xr-x. 1 root root 62952 Oct 31  2018 /usr/bin/rm
[root@BC ~]# mkdir  /opt
[root@BC ~]# su -  BC01
Last login: Fri Jul 24 08:39:42 CST 2020 on pts/0
[BC01@BC ~]$ rm -rf /opt/
[BC01@BC ~]$ logout
[root@BC ~]# mkdir  /opt

[root@BC ~]# chmod u-s  /usr/bin/rm


[root@BC ~]# ll /usr/bin/yum 
-rwxr-xr-x. 1 root root 801 Nov  5  2018 /usr/bin/yum
[root@BC ~]# su - BC01
Last login: Fri Jul 24 08:42:10 CST 2020 on pts/0
[BC01@BC ~]$ yum install -y  sl
Loaded plugins: fastestmirror
You need to be root to perform this command.
[BC01@BC ~]$ yum install -y  mysql-server
Loaded plugins: fastestmirror
You need to be root to perform this command.
[BC01@BC ~]$ logout
[root@BC ~]# ll /usr/bin/yum 
-rwxr-xr-x. 1 root root 801 Nov  5  2018 /usr/bin/yum
[root@BC ~]# chmod u+s  /usr/bin/yum
[root@BC ~]# ll /usr/bin/yum 
-rwsr-xr-x. 1 root root 801 Nov  5  2018 /usr/bin/yum
[root@BC ~]# su - BC01
Last login: Fri Jul 24 08:45:28 CST 2020 on pts/0
[BC01@BC ~]$ yum install -y  mysql-server
Loaded plugins: fastestmirror
You need to be root to perform this command.

#普通用户不能使用yum,命令,即使添加了setuid的权限也不行



#此权限不能乱给   知道就行 

[root@BC ~]# ll /usr/bin/cat
-rwxr-xr-x. 1 root root 54160 Oct 31  2018 /usr/bin/cat
[root@BC ~]# stat  /usr/bin/cat
  File: ‘/usr/bin/cat’
  Size: 54160     	Blocks: 112        IO Block: 4096   regular file
Device: 803h/2051d	Inode: 201349408   Links: 1
Access: (0755/-rwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-07-24 08:52:48.370831557 +0800
Modify: 2018-10-31 03:16:01.000000000 +0800
Change: 2020-07-24 08:52:58.961832157 +0800
 Birth: -
[root@BC ~]# stat /usr/bin/passwd
  File: ‘/usr/bin/passwd’
  Size: 27832     	Blocks: 56         IO Block: 4096   regular file
Device: 803h/2051d	Inode: 201636086   Links: 1
Access: (4755/-rwsr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-07-23 09:58:46.365163401 +0800
Modify: 2014-06-10 14:27:56.000000000 +0800
Change: 2020-07-06 02:14:21.159994247 +0800
 Birth: -


setuid的权限是4开头的


[root@BC ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10  2014 /usr/bin/passwd
[root@BC ~]# chmod  -x  /usr/bin/cat
[root@BC ~]# ll /usr/bin/cat
-rw-r--r--. 1 root root 54160 Oct 31  2018 /usr/bin/cat
[root@BC ~]# chmod u+s /usr/bin/cat
[root@BC ~]# ll /usr/bin/cat
-rwSr--r--. 1 root root 54160 Oct 31  2018 /usr/bin/cat
[root@BC ~]# chmod +x /usr/bin/cat
[root@BC ~]# ll /usr/bin/cat
-rwsr-xr-x. 1 root root 54160 Oct 31  2018 /usr/bin/cat
[root@BC ~]# chmod u-s /usr/bin/cat
[root@BC ~]# 


大S 和 小s的区别  

拥有执行权限,设置setuid之后是小s

没有执行权限,设置setuid之后是大S


2. setgid		

权限为作用在属组的x为    使用 s表示   有大S 和小s  

用户在某个目录下新创建的目录或者文件,默认的所属组是自己的基本组

当设置setgid之后,用户新创建的目录或者文件的默认所属组不在是自己的组了

默认的组就是这个目录的所属组       让多个用户能够共享一个目录  



[root@BC ~]# mkdir  /data
[root@BC ~]# ll -d /data
drwxr-xr-x 2 root root 6 Jul 24 09:06 /data
[root@BC ~]# chmod  770  /data
[root@BC ~]# ll -d /data
drwxrwx--- 2 root root 6 Jul 24 09:06 /data


[root@BC ~]# groupadd   ops_group
[root@BC ~]# chgrp   ops_group  /data/
[root@BC ~]# ll -d /data/
drwxrwx--- 2 root ops_group 6 Jul 24 09:06 /data/
[root@BC ~]# useradd  ops01
[root@BC ~]# useradd  ops02
[root@BC ~]# useradd  ops03
[root@BC ~]# id ops03
uid=1046(ops03) gid=1048(ops03) groups=1048(ops03)

[root@BC ~]# usermod   -aG  ops_group   ops01
[root@BC ~]# usermod   -aG  ops_group   ops02
[root@BC ~]# usermod   -aG  ops_group   ops03



[root@BC ~]# su -  ops01
[ops01@BC ~]$ touch  /data/ops01.txt
[ops01@BC ~]$ ll /data/ops01.txt
-rw-rw-r-- 1 ops01 ops01 0 Jul 24 09:10 /data/ops01.txt
[ops01@BC ~]$ logout
[root@BC ~]# su -  ops02
[ops02@BC ~]$ touch  /data/ops02.txt
[ops02@BC ~]$ ll /data/ops02.txt
-rw-rw-r-- 1 ops02 ops02 0 Jul 24 09:11 /data/ops02.txt
[ops02@BC ~]$ logout
[root@BC ~]# su -  ops03
[ops03@BC ~]$ touch  /data/ops03.txt
[ops03@BC ~]$ ll /data/ops03.txt
-rw-rw-r-- 1 ops03 ops03 0 Jul 24 09:11 /data/ops03.txt
[ops03@BC ~]$ logout
[root@BC ~]# ll /data/
total 0
-rw-rw-r-- 1 ops01 ops01 0 Jul 24 09:10 ops01.txt
-rw-rw-r-- 1 ops02 ops02 0 Jul 24 09:11 ops02.txt
-rw-rw-r-- 1 ops03 ops03 0 Jul 24 09:11 ops03.txt


[root@BC ~]# chmod g+s  /data/
[root@BC ~]# ll -d /data/
drwxrws--- 2 root ops_group 57 Jul 24 09:11 /data/
[root@BC ~]# stat /data/
  File: ‘/data/’
  Size: 57        	Blocks: 0          IO Block: 4096   directory
Device: 803h/2051d	Inode: 818813      Links: 2
Access: (2770/drwxrws---)  Uid: (    0/    root)   Gid: ( 1045/ops_group)
Access: 2020-07-24 09:11:26.981894897 +0800
Modify: 2020-07-24 09:11:17.173894341 +0800
Change: 2020-07-24 09:13:03.894900384 +0800
 Birth: -
[root@BC ~]# ll /data/
total 0
-rw-rw-r-- 1 ops01 ops01 0 Jul 24 09:10 ops01.txt
-rw-rw-r-- 1 ops02 ops02 0 Jul 24 09:11 ops02.txt
-rw-rw-r-- 1 ops03 ops03 0 Jul 24 09:11 ops03.txt


[root@BC ~]# echo "root" >  /data/root.log
[root@BC ~]# ll /data/
total 4
-rw-rw-r-- 1 ops01 ops01     0 Jul 24 09:10 ops01.txt
-rw-rw-r-- 1 ops02 ops02     0 Jul 24 09:11 ops02.txt
-rw-rw-r-- 1 ops03 ops03     0 Jul 24 09:11 ops03.txt
-rw-r--r-- 1 root  ops_group 5 Jul 24 09:14 root.log
[root@BC ~]# su  -  ops01
Last login: Fri Jul 24 09:10:22 CST 2020 on pts/0
[ops01@BC ~]$ echo "ops01" > /data/ops01.log
[ops01@BC ~]$ logout
[root@BC ~]# su  -  ops02
Last login: Fri Jul 24 09:10:52 CST 2020 on pts/0
[ops02@BC ~]$ echo "ops02" > /data/ops02.log
[ops02@BC ~]$ ll /data/
total 12
-rw-rw-r-- 1 ops01 ops_group 6 Jul 24 09:15 ops01.log
-rw-rw-r-- 1 ops01 ops01     0 Jul 24 09:10 ops01.txt
-rw-rw-r-- 1 ops02 ops_group 6 Jul 24 09:15 ops02.log
-rw-rw-r-- 1 ops02 ops02     0 Jul 24 09:11 ops02.txt
-rw-rw-r-- 1 ops03 ops03     0 Jul 24 09:11 ops03.txt
-rw-r--r-- 1 root  ops_group 5 Jul 24 09:14 root.log
[ops02@BC ~]$ vim /data/ops01.log
[ops02@BC ~]$ cat /data/ops01.log
ops01
ops02
[ops02@BC ~]$ umask 
0002


[ops02@BC ~]$ ll /data/
total 12
-rw-rw-r-- 1 ops01 ops_group 12 Jul 24 09:16 ops01.log
-rw-rw-r-- 1 ops01 ops01      0 Jul 24 09:10 ops01.txt
-rw-rw-r-- 1 ops02 ops_group  6 Jul 24 09:15 ops02.log
-rw-rw-r-- 1 ops02 ops02      0 Jul 24 09:11 ops02.txt
-rw-rw-r-- 1 ops03 ops03      0 Jul 24 09:11 ops03.txt
-rw-r--r-- 1 root  ops_group  5 Jul 24 09:14 root.log
[ops02@BC ~]$ rm -f /data/ops01.txt

[ops02@BC ~]$ ll -d  /data/
drwxrws--- 2 root ops_group 90 Jul 24 09:20 /data/
[ops02@BC ~]$ mkdir  /data/test
[ops02@BC ~]$ ll /data/test
total 0
[ops02@BC ~]$ ll /data/
total 12
-rw-rw-r-- 1 ops01 ops_group 12 Jul 24 09:16 ops01.log
-rw-rw-r-- 1 ops02 ops_group  6 Jul 24 09:15 ops02.log
-rw-rw-r-- 1 ops02 ops02      0 Jul 24 09:11 ops02.txt
-rw-rw-r-- 1 ops03 ops03      0 Jul 24 09:11 ops03.txt
-rw-r--r-- 1 root  ops_group  5 Jul 24 09:14 root.log
drwxrwsr-x 2 ops02 ops_group  6 Jul 24 09:21 test

3. sticky	粘滞位     

权限作用于 others 的x为    使用 t  表示    小t   大T 

给目录设置,  一个目录所有用户都拥有管理的权限   777    针对此目录设置一个粘滞位  

所有用户都可以在这个目录进行创建、删除文件的权利  但是只能管理自己的文件 或者管理员拥有管理所有文件的权限 root  


[root@BC ~]# ll -d  /tmp/
drwxrwxrwt. 15 root root 4096 Jul 24 09:02 /tmp/
[root@BC ~]# stat /tmp/
  File: ‘/tmp/’
  Size: 4096      	Blocks: 8          IO Block: 4096   directory
Device: 803h/2051d	Inode: 67108936    Links: 15
Access: (1777/drwxrwxrwt)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-07-24 09:49:40.026024737 +0800
Modify: 2020-07-24 09:02:34.229864730 +0800
Change: 2020-07-24 09:02:34.229864730 +0800
 Birth: -


[root@BC ~]# mkdir   /test
[root@BC ~]# chmod  777  /test
[root@BC ~]# ll  -d /test
drwxrwxrwx 2 root root 6 Jul 24 09:50 /test


[root@BC ~]# echo  "root"  /test/root.txt
root /test/root.txt
[root@BC ~]# echo  "root" > /test/root.txt
[root@BC ~]# su - ops01
Last login: Fri Jul 24 09:14:53 CST 2020 on pts/0
[ops01@BC ~]$ echo "ops01" > /test/ops01.txt
[ops01@BC ~]$ logout
[root@BC ~]# su - dev01
Last login: Wed Jul 22 10:49:56 CST 2020 from 10.0.0.1 on pts/1
[dev01@BC ~]$ echo "dev01" > /test/dev01.txt
[dev01@BC ~]$ logout
[root@BC ~]# ll /test/
total 12
-rw-rw-r-- 1 dev01 dev01 6 Jul 24 09:52 dev01.txt
-rw-rw-r-- 1 ops01 ops01 6 Jul 24 09:51 ops01.txt
-rw-r--r-- 1 root  root  5 Jul 24 09:51 root.txt


[root@BC ~]# su -  dev01 
Last login: Fri Jul 24 09:51:51 CST 2020 on pts/0
[dev01@BC ~]$ ll /test/
total 12
-rw-rw-r-- 1 dev01 dev01 6 Jul 24 09:52 dev01.txt
-rw-rw-r-- 1 ops01 ops01 6 Jul 24 09:51 ops01.txt
-rw-r--r-- 1 root  root  5 Jul 24 09:51 root.txt
[dev01@BC ~]$ rm -f /test/ops01.txt 
[dev01@BC ~]$ ll /test/
total 8
-rw-rw-r-- 1 dev01 dev01 6 Jul 24 09:52 dev01.txt
-rw-r--r-- 1 root  root  5 Jul 24 09:51 root.txt


[root@BC ~]# chmod o+t  /test/
[root@BC ~]# stat /test/
  File: ‘/test/’
  Size: 39        	Blocks: 0          IO Block: 4096   directory
Device: 803h/2051d	Inode: 67588796    Links: 2
Access: (1777/drwxrwxrwt)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-07-24 09:53:31.177037826 +0800
Modify: 2020-07-24 09:53:25.993037532 +0800
Change: 2020-07-24 09:55:02.412042992 +0800
 Birth: -


[root@BC ~]# su - ops01
Last login: Fri Jul 24 09:51:32 CST 2020 on pts/0
[ops01@BC ~]$ echo  "ops01"  > /test/ops.txt
[ops01@BC ~]$ ll /test/
total 12
-rw-rw-r-- 1 dev01 dev01 6 Jul 24 09:52 dev01.txt
-rw-rw-r-- 1 ops01 ops01 6 Jul 24 09:55 ops.txt
-rw-r--r-- 1 root  root  5 Jul 24 09:51 root.txt


[root@BC ~]# su - dev01
Last login: Fri Jul 24 09:52:59 CST 2020 on pts/0
[dev01@BC ~]$ ll /test/
total 12
-rw-rw-r-- 1 dev01 dev01 6 Jul 24 09:52 dev01.txt
-rw-rw-r-- 1 ops01 ops01 6 Jul 24 09:55 ops.txt
-rw-r--r-- 1 root  root  5 Jul 24 09:51 root.txt
[dev01@BC ~]$ rm -f /test/ops.txt 
rm: cannot remove ‘/test/ops.txt’: Operation not permitted
[dev01@BC ~]$ rm -f /test/dev01.txt 
[dev01@BC ~]$ ll /test/
total 8
-rw-rw-r-- 1 ops01 ops01 6 Jul 24 09:55 ops.txt
-rw-r--r-- 1 root  root  5 Jul 24 09:51 root.txt
[dev01@BC ~]$ logout
[root@BC ~]# rm -f  /test/ops.txt 
[root@BC ~]# 

二、特殊属性



特殊属性不受普通权限的限制  


lsattr		#显示特殊属性


chattr		#设置特殊属性 


a			#这个文件只能追加内容和查看   别的什么都做不了  删除  移动  复制可以 

i			#什么都操作不了 

[root@BC ~]# touch  test.txt
[root@BC ~]# touch  test.log
[root@BC ~]# ll
total 0
-rw-r--r-- 1 root root 0 Jul 24 10:08 test.log
-rw-r--r-- 1 root root 0 Jul 24 10:08 test.txt

[root@BC ~]# lsattr  test.log 
---------------- test.log
[root@BC ~]# lsattr  test.txt
---------------- test.txt

[root@BC ~]# echo  "test" > test.log
[root@BC ~]# echo  "test" > test.txt
[root@BC ~]# ll
total 8
-rw-r--r-- 1 root root 5 Jul 24 10:09 test.log
-rw-r--r-- 1 root root 5 Jul 24 10:09 test.txt


[root@BC ~]# chattr   +a test.log
[root@BC ~]# ll test.log
-rw-r--r-- 1 root root 5 Jul 24 10:09 test.log
[root@BC ~]# lsattr  test.log
-----a---------- test.log
[root@BC ~]# cat test.log
test
[root@BC ~]# vim test.log
[root@BC ~]# vim test.log
[root@BC ~]# echo "hello" > test.log
-bash: test.log: Operation not permitted
[root@BC ~]# echo "hello" >> test.log
[root@BC ~]# cat test.log
test
hello
[root@BC ~]# rm -f test.log
rm: cannot remove ‘test.log’: Operation not permitted
[root@BC ~]# mv test.log /tmp/
mv: cannot move ‘test.log’ to ‘/tmp/test.log’: Operation not permitted
[root@BC ~]# cp test.log  /tmp/



[root@BC ~]# chattr +i  test.txt 
[root@BC ~]# lsattr  test.txt
----i----------- test.txt
[root@BC ~]# cat test.txt
test
[root@BC ~]# rm -f test.txt
rm: cannot remove ‘test.txt’: Operation not permitted
[root@BC ~]# mv test.txt /tmp/
mv: cannot move ‘test.txt’ to ‘/tmp/test.txt’: Operation not permitted
[root@BC ~]# cp test.txt  /tmp/
[root@BC ~]# echo "hello" > test.txt 
-bash: test.txt: Permission denied
[root@BC ~]# echo "hello" >> test.txt 
-bash: test.txt: Permission denied


三、重定向概述


将原本要输出到屏幕上面的内容,重定向到一个指定的文件中 

将原本从键盘上面输入的内容,改为从命令或者文件当中读取 


为什么要用重定向 

1. 数据非常重要,需要保存  

2. 后台程序的输出重定向到一个文件中 

3. 定时任务的执行结果 

4. 把一些错误的输出定向到空  

5. 把正确和错误的信息都需要保存 



stdin		#标准输入		0		#从键盘上面读取输入的内容,或者从命令及文件中读取输入的内容 

stdout		#标准输出		1		#默认将正确的信息标准输出到屏幕上方  

stderr		#错误输出		2		#默认将错误的信息标准输出到屏幕上方 


[root@BC ~]# ll /dev/std*
lrwxrwxrwx 1 root root 15 Jul 20 19:44 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx 1 root root 15 Jul 20 19:44 /dev/stdin -> /proc/self/fd/0
lrwxrwxrwx 1 root root 15 Jul 20 19:44 /dev/stdout -> /proc/self/fd/1



[root@BC ~]# cat 
hello		#标准输入
hello		#标准输出



[root@BC ~]# tail  -f passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
^Z
[1]+  Stopped                 tail -f passwd
[root@BC ~]# ps
   PID TTY          TIME CMD
 10861 pts/0    00:00:00 bash
 10879 pts/0    00:00:00 bash
 10958 pts/0    00:00:00 su
 10980 pts/0    00:00:00 su
 10981 pts/0    00:00:00 bash
 10998 pts/0    00:00:00 su
 11020 pts/0    00:00:00 su
 11021 pts/0    00:00:00 bash
 11039 pts/0    00:00:00 su
 11040 pts/0    00:00:00 bash
 14928 pts/0    00:00:00 tail
 14930 pts/0    00:00:00 ps
[root@BC ~]# ll /proc/14928/fd
total 0
lrwx------ 1 root root 64 Jul 24 10:51 0 -> /dev/pts/0
lrwx------ 1 root root 64 Jul 24 10:51 1 -> /dev/pts/0
lrwx------ 1 root root 64 Jul 24 10:51 2 -> /dev/pts/0
lr-x------ 1 root root 64 Jul 24 10:51 3 -> /root/passwd
lr-x------ 1 root root 64 Jul 24 10:51 4 -> anon_inode:inotify


[root@BC ~]# jobs
[1]+  Stopped                 tail -f passwd
[root@BC ~]# fg %1
tail -f passwd
^C
[root@BC ~]# jobs
[root@BC ~]# ll /proc/14928/fd
ls: cannot access /proc/14928/fd: No such file or directory
[root@BC ~]# ps
   PID TTY          TIME CMD
 10861 pts/0    00:00:00 bash
 10879 pts/0    00:00:00 bash
 10958 pts/0    00:00:00 su
 10980 pts/0    00:00:00 su
 10981 pts/0    00:00:00 bash
 10998 pts/0    00:00:00 su
 11020 pts/0    00:00:00 su
 11021 pts/0    00:00:00 bash
 11039 pts/0    00:00:00 su
 11040 pts/0    00:00:00 bash
 14933 pts/0    00:00:00 ps


四、输出重定向


将原本要输出到屏幕上面的内容,重定向到一个指定的文件中 

符号


>	#标准覆盖正确输出重定向 		#将正确的内容覆盖源文件的   当文件不存在时,会自动创建 

>>	#标准追加正确输出重定向		#将正确的内容追加到指定文件的底部  当文件不存在时,会自动创建

2>	#标准覆盖错误输出重定向		#将错误的信息覆盖到指定的文件中 

2>>	#标准追加错误输出重定向		#将错误的信息追加到文件的底部  


案例:

[root@BC ~]# echo  "hello"  > 123.txt


[root@BC ~]# ip a s eth0 > ip.txt
[root@BC ~]# cat ip.txt
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:eb:ea:8d brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.100/24 brd 10.0.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::3310:9d15:9ee4:43e8/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

#合并文件
[root@BC ~]# cat /etc/hosts  /etc/resolv.conf   > new.txt
[root@BC ~]# cat new.txt
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
# Generated by NetworkManager
nameserver 223.5.5.5

[root@BC ~]# cat 123.txt 
hello
[root@BC ~]# echo "test"  >>  123.txt
[root@BC ~]# cat 123.txt
hello
test



[root@BC ~]# ls  /roott
ls: cannot access /roott: No such file or directory
[root@BC ~]# ls  /roott  2>err.txt
[root@BC ~]# cat err.txt
ls: cannot access /roott: No such file or directory



[root@BC ~]# ls  /roott  2>>err.txt
[root@BC ~]# ls  /roott  2>>err.txt
[root@BC ~]# ls  /roott  2>>err.txt
[root@BC ~]# cat err.txt
ls: cannot access /roott: No such file or directory
ls: cannot access /roott: No such file or directory
ls: cannot access /roott: No such file or directory
ls: cannot access /roott: No such file or directory



#把正确的和错误的信息都保存到一个文件中


[root@BC ~]# ls  /roott   > file.txt  2>&1 		#不推荐
[root@BC ~]# cat file.txt 
ls: cannot access /roott: No such file or directory
[root@BC ~]# mkdir  /roott
[root@BC ~]# ls  /roott   > file.txt  2>&1 
[root@BC ~]# cat file.txt 


[root@BC ~]# ls  /roott   &>file.txt
[root@BC ~]# ls  /roottt   &>file.txt
[root@BC ~]# cat file.txt
ls: cannot access /roottt: No such file or directory

#将正确的信息和错误的信息重定向到空

[root@BC ~]# ls  /roottt   &> /dev/null


#把正确的和错误的放在不同的文件中

[root@BC ~]# ls  /rooot  >> file1.txt  2>> file2.txt
[root@BC ~]# ll
total 4
-rw-r--r-- 1 root root  0 Jul 24 11:14 file1.txt
-rw-r--r-- 1 root root 52 Jul 24 11:14 file2.txt
[root@BC ~]# cat file1.txt 
[root@BC ~]# cat file2.txt 
ls: cannot access /rooot: No such file or directory
[root@BC ~]# ls  /root  >> file1.txt  2>> file2.txt
[root@BC ~]# ll
total 8
-rw-r--r-- 1 root root 20 Jul 24 11:15 file1.txt
-rw-r--r-- 1 root root 52 Jul 24 11:14 file2.txt
[root@BC ~]# cat file1.txt 
file1.txt
file2.txt
[root@BC ~]# cat file2.txt 
ls: cannot access /rooot: No such file or directory

五、输入重定向


将原本从键盘上面输入的内容,改为从命令或者文件当中读取 

符号

<	#标准输入重定向 		#将原本从默认的键盘中读取数据改为由命令或者文件中读取 


<<	#标识符限定输入重定向 	#从键盘中读取内容,直到遇到标识符的分解符为止



案例:

[root@BC ~]# grep  \'root\'   /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@BC ~]# grep  \'root\'  <  /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@BC ~]# grep  root
oldboy
root
root
rottttroot
rottttroot



[root@BC ~]# dd  if=/dev/zero  of=/root/test.log  bs=1M  count=50
50+0 records in
50+0 records out
52428800 bytes (52 MB) copied, 0.0362247 s, 1.4 GB/s
[root@BC ~]# ll
total 51208
-rw-r--r-- 1 root root       20 Jul 24 11:15 file1.txt
-rw-r--r-- 1 root root       52 Jul 24 11:14 file2.txt
-rw-r--r-- 1 root root 52428800 Jul 24 11:45 test.log
[root@BC ~]# ll -h
total 51M
-rw-r--r-- 1 root root  20 Jul 24 11:15 file1.txt
-rw-r--r-- 1 root root  52 Jul 24 11:14 file2.txt
-rw-r--r-- 1 root root 50M Jul 24 11:45 test.log


[root@BC ~]# dd  </dev/zero   >/root/oldboy.log  bs=10M  count=100
100+0 records in
100+0 records out
1048576000 bytes (1.0 GB) copied, 21.3836 s, 49.0 MB/s
[root@BC ~]# ll -h
total 1.1G
-rw-r--r-- 1 root root    20 Jul 24 11:15 file1.txt
-rw-r--r-- 1 root root    52 Jul 24 11:14 file2.txt
-rw-r--r-- 1 root root 1000M Jul 24 11:48 oldboy.log
-rw-r--r-- 1 root root   50M Jul 24 11:45 test.log

[root@BC ~]# cat file1.txt 
file1.txt
file2.txt
[root@BC ~]# tr  \'t\' \'T\'  < file1.txt
file1.TxT
file2.TxT




数据库导入表  

[root@BC ~]# mysql  -uroot  -p123  < all.sql


[root@BC ~]# cat >>file3.txt
123
345
678
456
EOF
123
^C
[root@BC ~]# cat file3.txt
123
345
678
456
EOF
123
[root@BC ~]# cat >>file4.txt<<EOF
> 123
> dfer
> rghrt
> gergrtg
> EOF
[root@BC ~]# cat file4.txt 
123
dfer
rghrt
gergrtg



[root@BC ~]# cat 123.sh
cat<<EOF
1. rge
2. fgo
3. jfrio
4. hfoih
EOF
[root@BC ~]# sh 123.sh
1. rge
2. fgo
3. jfrio
4. hfoih

六、管道技术


|	管道  	

连接左右两个命令的使用     把前面的命令作为标准输出通过管道交给后面的命令 作为标准输入 


只能把正确的信息交给后面的命令,错误的信息的不会传递 


[root@BC ~]# head passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@BC ~]# head passwd  | cat -n 
     1	root:x:0:0:root:/root:/bin/bash
     2	bin:x:1:1:bin:/bin:/sbin/nologin
     3	daemon:x:2:2:daemon:/sbin:/sbin/nologin
     4	adm:x:3:4:adm:/var/adm:/sbin/nologin
     5	lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
     6	sync:x:5:0:sync:/sbin:/bin/sync
     7	shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
     8	halt:x:7:0:halt:/sbin:/sbin/halt
     9	mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    10	operator:x:11:0:operator:/root:/sbin/nologin


[root@BC ~]# ifconfig  eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.100  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::3310:9d15:9ee4:43e8  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:eb:ea:8d  txqueuelen 1000  (Ethernet)
        RX packets 99054  bytes 61039138 (58.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 55989  bytes 5452694 (5.2 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@BC ~]# ifconfig  eth0 | awk \'NR==2\'
        inet 10.0.0.100  netmask 255.255.255.0  broadcast 10.0.0.255
[root@BC ~]# ifconfig  eth0 | awk \'NR==2\' | awk \'{print $2}\'
10.0.0.100


[root@BC ~]# awk  -F:  \'{print $3}\'  passwd  | sort -rn | head
1046
1045
1044
1043
1042
1041
1040
1039
1038
1037


#管道技术中的tee技术 

需要保存一些标准输出的内容 

[root@BC ~]# echo $RANDOM | md5sum | cut -c 1-8 | tee  pass.txt    |passwd  --stdin  BC01
Changing password for user BC01.
passwd: all authentication tokens updated successfully.
[root@BC ~]# cat pass.txt 
100ada15


-a		#追加 


tee 和 重定向的区别  



重定向		#把要输出到屏幕上面的内容重定向到指定的文件中


tee			#把要输出到屏幕上面的内容重定向到指定的文件中 ,并且可以继续输出一份到屏幕上面   



#管道中xargs技术 


让一些不支持管道的命令支持管道    把前面命令的执行结果以文件的参数传递方式传递给后面的命令 


[root@BC ~]# ls  | xargs  sed -i  \'s#root#oldboy#g\'


[root@BC ~]# find  /var/log/  -type f -name "*.log"  |xargs  cp  -t  /opt


[root@BC ~]# find  /var/log/  -type f -name "*.log"  |xargs  -I  {}   cp  {}  /mnt/


2020年07月27日上午(day17)

一、find概述


可以根据文件的名称、文件大小、文件的修改时间、文件的类型、文件的权限、文件的属主属组、文件的目录层级进行查找 


Find的语法:


命令		路径       选项       表达式       动作  


查找		地区		 妹子		  18-25       约


二、根据文件名称查找



选项:

	-name		#根据名称查找 
	
	-i			#忽略大小写    -iname
	
	通配符  
	
	*		#所有
	
	?		#匹配任意一个字符  只能匹配一个 
	
	[]		#匹配中括号中的任意一个字符 
	
	[^]		#排除中括号中的字符
	
	
#精确查找	

[root@BC ~]# find  /  -name  "hostnamectl"  
/usr/bin/hostnamectl
/usr/share/bash-completion/completions/hostnamectl

#查找以什么开头的

[root@BC ~]# find  /  -name  "hostnamectl*"
/usr/bin/hostnamectl
/usr/share/man/man1/hostnamectl.1.gz
/usr/share/bash-completion/completions/hostnamectl

#以什么为结尾的

[root@BC ~]# find  /  -name "*hostnamectl"
/usr/bin/hostnamectl
/usr/share/bash-completion/completions/hostnamectl
/usr/share/zsh/site-functions/_hostnamectl

#查找包含某个字符串的查找

[root@BC ~]# touch  /tmp/rrhostnamectlfg
[root@BC ~]# find  /  -name  "*hostnamectl*"
/tmp/rrhostnamectlfg
/usr/bin/hostnamectl
/usr/share/man/man1/hostnamectl.1.gz
/usr/share/bash-completion/completions/hostnamectl
/usr/share/zsh/site-functions/_hostnamectl

#忽略大小写

[root@BC ~]# touch  Hostnamectl
[root@BC ~]# find  /  -name  "*hostnamectl*"
/tmp/rrhostnamectlfg
/usr/bin/hostnamectl
/usr/share/man/man1/hostnamectl.1.gz
/usr/share/bash-completion/completions/hostnamectl
/usr/share/zsh/site-functions/_hostnamectl
[root@BC ~]# find  /  -iname  "*hostnamectl*"
/root/Hostnamectl
/tmp/rrhostnamectlfg
/usr/bin/hostnamectl
/usr/share/man/man1/hostnamectl.1.gz
/usr/share/bash-completion/completions/hostnamectl
/usr/share/zsh/site-functions/_hostnamectl



[root@BC ~]# mkdir  test
[root@BC ~]# touch  test/hostnamectl{a..g}
[root@BC ~]# touch  test/hostnamectl{o..t}
[root@BC ~]# touch  test/hostnamectl{o..t}123
[root@BC ~]# ll test/
total 0
-rw-r--r-- 1 root root 0 Jul 27 17:02 hostnamectla
-rw-r--r-- 1 root root 0 Jul 27 17:02 hostnamectlb
-rw-r--r-- 1 root root 0 Jul 27 17:02 hostnamectlc
-rw-r--r-- 1 root root 0 Jul 27 17:02 hostnamectld
-rw-r--r-- 1 root root 0 Jul 27 17:02 hostnamectle
-rw-r--r-- 1 root root 0 Jul 27 17:02 hostnamectlf
-rw-r--r-- 1 root root 0 Jul 27 17:02 hostnamectlg
-rw-r--r-- 1 root root 0 Jul 27 17:02 hostnamectlo
-rw-r--r-- 1 root root 0 Jul 27 17:03 hostnamectlo123
-rw-r--r-- 1 root root 0 Jul 27 17:02 hostnamectlp
-rw-r--r-- 1 root root 0 Jul 27 17:03 hostnamectlp123
-rw-r--r-- 1 root root 0 Jul 27 17:02 hostnamectlq
-rw-r--r-- 1 root root 0 Jul 27 17:03 hostnamectlq123
-rw-r--r-- 1 root root 0 Jul 27 17:02 hostnamectlr
-rw-r--r-- 1 root root 0 Jul 27 17:03 hostnamectlr123
-rw-r--r-- 1 root root 0 Jul 27 17:02 hostnamectls
-rw-r--r-- 1 root root 0 Jul 27 17:03 hostnamectls123
-rw-r--r-- 1 root root 0 Jul 27 17:02 hostnamectlt
-rw-r--r-- 1 root root 0 Jul 27 17:03 hostnamectlt123



[root@BC ~]# find  /root  -name "hostnamectl*"
/root/test/hostnamectla
/root/test/hostnamectlb
/root/test/hostnamectlc
/root/test/hostnamectld
/root/test/hostnamectle
/root/test/hostnamectlf
/root/test/hostnamectlg
/root/test/hostnamectlo
/root/test/hostnamectlp
/root/test/hostnamectlq
/root/test/hostnamectlr
/root/test/hostnamectls
/root/test/hostnamectlt
/root/test/hostnamectlo123
/root/test/hostnamectlp123
/root/test/hostnamectlq123
/root/test/hostnamectlr123
/root/test/hostnamectls123
/root/test/hostnamectlt123
[root@BC ~]# find  /root  -name "hostnamectl?"
/root/test/hostnamectla
/root/test/hostnamectlb
/root/test/hostnamectlc
/root/test/hostnamectld
/root/test/hostnamectle
/root/test/hostnamectlf
/root/test/hostnamectlg
/root/test/hostnamectlo
/root/test/hostnamectlp
/root/test/hostnamectlq
/root/test/hostnamectlr
/root/test/hostnamectls
/root/test/hostnamectlt


[root@BC ~]# find  /root  -name "hostnamectl[abcd]"
/root/test/hostnamectla
/root/test/hostnamectlb
/root/test/hostnamectlc
/root/test/hostnamectld


[root@BC ~]# find  /root  -name "hostnamectl[^b]"
/root/test/hostnamectla
/root/test/hostnamectlc
/root/test/hostnamectld
/root/test/hostnamectle
/root/test/hostnamectlf
/root/test/hostnamectlg
/root/test/hostnamectlo
/root/test/hostnamectlp
/root/test/hostnamectlq
/root/test/hostnamectlr
/root/test/hostnamectls
/root/test/hostnamectlt

三、根据文件类型查找



选项:

	-type		#根据类型进行查找 
	
		f		#普通文件  
		
		d		#目录
		
		l		#软链接
		
		s		#套接字 socket文件
		
		p		#管道文件
		
		b		#块设备  硬盘 硬盘分区  镜像光盘
		
		c		#字符设备 
		
#查找所有的普通文件,包括隐藏文件  

    
[root@BC ~]# find  /root    -type  f   
/root/.bash_logout
/root/.bash_profile
/root/.cshrc
/root/.tcshrc
/root/.bash_history
/root/.lesshst
/root/.viminfo
/root/Hostname
/root/Hostnamectl
/root/test/hostnamectla
/root/test/hostnamectlb
/root/test/hostnamectlc
/root/test/hostnamectld

#所有的目录 包括隐藏目录  也包含自己的本身

[root@BC ~]# find  /root    -type  d
/root
/root/test
/root/.pki
/root/.pki/nssdb

#tree命令会把软链接也统计成目录  软链接的源文件是目录   find不会 

[root@BC ~]# tree  -ad  /root
/root
├── opt -> /opt/
├── .pki
│   └── nssdb
└── test

4 directories


[root@BC ~]# find  /dev    -type   s
/dev/log

[root@BC ~]# find  /run    -type   p
/run/systemd/inhibit/1.ref
/run/systemd/sessions/1.ref
/run/systemd/initctl/fifo


[root@BC ~]# find  /root    -type  l
/root/opt

[root@BC ~]# find  /dev    -type   b
/dev/sda3
/dev/sda2
/dev/sda1
/dev/sda
/dev/sr0

[root@BC ~]# find  /dev    -type   c
/dev/vsock
/dev/vcsa6
/dev/vcs6
/dev/vcsa5


[root@BC ~]# find  / -type d   -name  "hostnamectl"
/root/hostnamectl

四、根据文件大小查找


选项:

	-size		#根据文件大小查找 
	
	+n		#大于
	
	-n		#小于
	
	n		#精确匹配 
	
	
	b  k  M  G		#单位 
	
	
#查找空文件

[root@BC ~]# find  /var/log/   -size  0b  
/var/log/tallylog
/var/log/anaconda/ks-script-3PCKae.log
/var/log/boot.log
/var/log/firewalld
/var/log/maillog-20200726
/var/log/spooler-20200726
/var/log/spooler
/var/log/spooler-20200716
/var/log/nginx/error.log
/var/log/nginx/access.log
/var/log/spooler-20200723
[root@BC ~]# ll /var/log/tallylog
-rw-------. 1 root root 0 Jul  6 02:13 /var/log/tallylog


[root@BC ~]# find  /var/log/   -size  -1k  -ls
67159586    0 -rw-------   1 root     root            0 Jul  6 02:13 /var/log/tallylog
67563450    0 -rw-------   1 root     root            0 Jul  6 02:17 /var/log/anaconda/ks-script-3PCKae.log
67563454    0 -rw-------   1 root     root            0 Jul 27 17:35 /var/log/boot.log
67563460    0 -rw-r--r--   1 root     root            0 Jul  6 02:17 /var/log/firewalld
67588777    0 -rw-------   1 root     root            0 Jul 23 03:13 /var/log/maillog-20200726
67588781    0 -rw-------   1 root     root            0 Jul 23 03:13 /var/log/spooler-20200726
67588808    0 -rw-------   1 root     root            0 Jul 26 03:33 /var/log/spooler
67528019    0 -rw-------   1 root     root            0 Jul  6 02:14 /var/log/spooler-20200716
134348936    0 -rw-r--r--   1 root     root            0 Jul 20 19:50 /var/log/nginx/error.log
134348938    0 -rw-r--r--   1 root     root            0 Jul 20 19:50 /var/log/nginx/access.log
67113674    0 -rw-------   1 root     root            0 Jul 16 03:25 /var/log/spooler-20200723
[root@BC ~]# find  /var/log/   -size  1k  -ls		#字节的大小在find中四舍五入  

67160720    4 -rw-r--r--   1 root     root          193 Jul  6 02:13 /var/log/grubby_prune_debug
681834    0 drwxr-xr-x   2 root     root           23 Jul  6 02:17 /var/log/tuned
714023    0 drwx------   2 root     root           23 Jul  6 02:17 /var/log/audit
67284924    0 drwxr-xr-x   2 root     root          176 Jul  6 02:17 /var/log/anaconda
134317666    0 drwxr-xr-x   2 root     root            6 Jul  6 02:17 /var/log/rhsm
67112876    4 -rw-r--r--   1 root     root          696 Jul  6 09:06 /var/log/vmware-network.5.log
67112867    4 -rw-r--r--   1 root     root          678 Jul 13 16:29 /var/log/vmware-network.2.log
67112878    4 -rw-r--r--   1 root     root          674 Jul  6 17:07 /var/log/vmware-network.4.log
67112882    4 -rw-r--r--   1 root     root          678 Jul 20 19:45 /var/log/vmware-network.1.log
67528018    4 -rw-------   1 root     root          558 Jul 13 16:29 /var/log/maillog-20200716
134348871    0 drwxrwx---   2 nginx    root           41 Jul 20 19:50 /var/log/nginx
67588805    4 -rw-------   1 root     root          186 Jul 27 16:30 /var/log/maillog
67588807    4 -rw-------   1 root     root          679 Jul 27 16:30 /var/log/secure
67112916    4 -rw-r--r--   1 root     root          678 Jul 27 16:29 /var/log/vmware-network.log


[root@BC ~]# find  /var/log/  -type f   -size  20k
/var/log/cron-20200726
[root@BC ~]# find  /var/log/  -type f   -size  20k -ls
67588776   20 -rw-------   1 root     root        19815 Jul 26 03:33 /var/log/cron-20200726

[root@BC ~]# find  /var/log/  -type f   -size  6k -ls
    75    8 -rw-r--r--   1 root     root         6085 Jul 27 16:29 /var/log/tuned/tuned.log
67113677    8 -rw-------   1 root     root         6005 Jul 27 18:01 /var/log/cron
67528017    8 -rw-------   1 root     root         5865 Jul 13 16:29 /var/log/secure-20200716
67112870    8 -rw-r--r--   1 root     root         5650 Jul  6 08:52 /var/log/vmware-network.9.log
67112865    8 -rw-r--r--   1 root     root         5650 Jul  9 10:36 /var/log/vmware-network.3.log


#根据范围进行查找

[root@BC ~]# find  /var/log/  -type  f  -size  +100k  -size   -1000k
/var/log/anaconda/syslog
/var/log/anaconda/packaging.log
/var/log/anaconda/storage.log
/var/log/dmesg.old
/var/log/messages-20200716
/var/log/messages-20200723
/var/log/messages
/var/log/dmesg
[root@BC ~]# find  /var/log/  -type  f  -size  +100k  -size   -1000k -ls
67496291  276 -rw-------   1 root     root       281510 Jul  6 02:17 /var/log/anaconda/syslog
67563447  112 -rw-------   1 root     root       110647 Jul  6 02:17 /var/log/anaconda/packaging.log
67563448  124 -rw-------   1 root     root       124184 Jul  6 02:17 /var/log/anaconda/storage.log
67112877  120 -rw-r--r--   1 root     root       122832 Jul 20 19:45 /var/log/dmesg.old
67528016  388 -rw-------   1 root     root       395555 Jul 16 03:25 /var/log/messages-20200716
67113672  148 -rw-------   1 root     root       148158 Jul 23 03:13 /var/log/messages-20200723
67588806  120 -rw-------   1 root     root       122869 Jul 27 18:01 /var/log/messages
67112864  120 -rw-r--r--   1 root     root       122838 Jul 27 16:29 /var/log/dmesg


#四舍五入  1k

[root@BC ~]# find  /var/log/  -type  f  -size  5k
/var/log/vmware-network.8.log
[root@BC ~]# find  /var/log/  -type  f  -size  5k -ls
67112873    8 -rw-r--r--   1 root     root         4127 Jul  6 09:05 /var/log/vmware-network.8.log


#以M为单位查找时,所有小于1M的文件都四舍五入到1M

[root@BC ~]# find  /var/log/  -type  f  -size  1M  -ls
67160720    4 -rw-r--r--   1 root     root          193 Jul  6 02:13 /var/log/grubby_prune_debug
67284922   48 -rw-rw-r--   1 root     utmp        45696 Jul 27 16:30 /var/log/wtmp
67284923    8 -rw-------   1 root     utmp         6912 Jul 23 12:09 /var/log/btmp
    75    8 -rw-r--r--   1 root     root         6085 Jul 27 16:29 /var/log/tuned/tuned.log
67495714   28 -rw-------   1 root     root        26591 Jul  6 02:17 /var/log/anaconda/anaconda.log
67496291  276 -rw-------   1 root     root       281510 Jul  6 02:17 /var/log/anaconda/syslog
67563444   24 -rw-------   1 root     root        21872 Jul  6 02:17 /var/log/anaconda/X.log
67563445   32 -rw-------   1 root     root        29721 Jul  6 02:17 /var/log/anaconda/program.log
67563447  112 -rw-------   1 root     root       110647 Jul  6 02:17 /var/log/anaconda/packaging.log
67563448  124 -rw-------   1 root     root       124184 Jul  6 02:17 /var/log/anaconda/storage.log
67563449    4 -rw-------   1 root     root         4017 Jul  6 02:17 /var/log/anaconda/ifcfg.log
67563456   12 -rw-r--r--   1 root     root        10054 Jul 27 16:29 /var/log/vmware-vmsvc.log
67563457    8 -rw-r--r--   1 root     root         6934 Jul 27 16:29 /var/log/vmware-vgauthsvc.log.0
67113677    8 -rw-------   1 root     root         6005 Jul 27 18:01 /var/log/cron
67588778   12 -rw-------   1 root     root         9327 Jul 26 03:33 /var/log/messages-20200726
67588779   16 -rw-------   1 root     root        13606 Jul 24 12:11 /var/log/secure-20200726
67112873    8 -rw-r--r--   1 root     root         4127 Jul  6 09:05 /var/log/vmware-network.8.log
67112876    4 -rw-r--r--   1 root     root          696 Jul  6 09:06 /var/log/vmware-network.5.log
67112867    4 -rw-r--r--   1 root     root          678 Jul 13 16:29 /var/log/vmware-network.2.log
67588799    8 -rw-------   1 root     root         8015 Jul 27 17:35 /var/log/boot.log-20200727
67112877  120 -rw-r--r--   1 root     root       122832 Jul 20 19:45 /var/log/dmesg.old
67112871    4 -rw-r--r--   1 root     root         3986 Jul  6 09:05 /var/log/vmware-network.7.log
67112878    4 -rw-r--r--   1 root     root          674 Jul  6 17:07 /var/log/vmware-network.4.log
67112882    4 -rw-r--r--   1 root     root          678 Jul 20 19:45 /var/log/vmware-network.1.log
67112913   20 -rw-------   1 root     root        16395 Jul 10 03:20 /var/log/boot.log-20200710
67112924    4 -rw-------   1 root     root         3925 Jul 22 08:51 /var/log/yum.log
67112866    8 -rw-------   1 root     root         7969 Jul 13 17:29 /var/log/boot.log-20200713
67112869   32 -rw-------   1 root     root        32040 Jul 16 03:25 /var/log/cron-20200716
67528018    4 -rw-------   1 root     root          558 Jul 13 16:29 /var/log/maillog-20200716
67528016  388 -rw-------   1 root     root       395555 Jul 16 03:25 /var/log/messages-20200716
67528017    8 -rw-------   1 root     root         5865 Jul 13 16:29 /var/log/secure-20200716
67112870    8 -rw-r--r--   1 root     root         5650 Jul  6 08:52 /var/log/vmware-network.9.log
67491686    8 -rw-------   1 root     root         8015 Jul 20 20:25 /var/log/boot.log-20200720
67113669   40 -rw-------   1 root     root        37990 Jul 23 03:13 /var/log/cron-20200723
67113670    4 -rw-------   1 root     root         1856 Jul 22 11:11 /var/log/maillog-20200723
67113672  148 -rw-------   1 root     root       148158 Jul 23 03:13 /var/log/messages-20200723
67113673   48 -rw-------   1 root     root        48914 Jul 22 12:22 /var/log/secure-20200723
67588776   20 -rw-------   1 root     root        19815 Jul 26 03:33 /var/log/cron-20200726
67588805    4 -rw-------   1 root     root          186 Jul 27 16:30 /var/log/maillog
67588806  120 -rw-------   1 root     root       122869 Jul 27 18:01 /var/log/messages
67588807    4 -rw-------   1 root     root          679 Jul 27 16:30 /var/log/secure
67112864  120 -rw-r--r--   1 root     root       122838 Jul 27 16:29 /var/log/dmesg
67112875    4 -rw-r--r--   1 root     root         3986 Jul  6 09:06 /var/log/vmware-network.6.log
67112865    8 -rw-r--r--   1 root     root         5650 Jul  9 10:36 /var/log/vmware-network.3.log
67112916    4 -rw-r--r--   1 root     root          678 Jul 27 16:29 /var/log/vmware-network.log
[root@BC ~]# find  /var/log/  -type  f  -size  -1M  -ls
67159586    0 -rw-------   1 root     root            0 Jul  6 02:13 /var/log/tallylog
67563450    0 -rw-------   1 root     root            0 Jul  6 02:17 /var/log/anaconda/ks-script-3PCKae.log
67563454    0 -rw-------   1 root     root            0 Jul 27 17:35 /var/log/boot.log
67563460    0 -rw-r--r--   1 root     root            0 Jul  6 02:17 /var/log/firewalld
67588777    0 -rw-------   1 root     root            0 Jul 23 03:13 /var/log/maillog-20200726
67588781    0 -rw-------   1 root     root            0 Jul 23 03:13 /var/log/spooler-20200726
67588808    0 -rw-------   1 root     root            0 Jul 26 03:33 /var/log/spooler
67528019    0 -rw-------   1 root     root            0 Jul  6 02:14 /var/log/spooler-20200716
134348936    0 -rw-r--r--   1 root     root            0 Jul 20 19:50 /var/log/nginx/error.log
134348938    0 -rw-r--r--   1 root     root            0 Jul 20 19:50 /var/log/nginx/access.log
67113674    0 -rw-------   1 root     root            0 Jul 16 03:25 /var/log/spooler-20200723


[root@BC ~]# find  /var/log/  -type  f  -size  2M  -ls
67263633   40 -rw-r--r--   1 root     root      1946764 Jul 27 16:30 /var/log/lastlog
714345 1436 -rw-------   1 root     root      1468869 Jul 27 18:01 /var/log/audit/audit.log
67563451 1520 -rw-------   1 root     root      1552657 Jul  6 02:17 /var/log/anaconda/journal.log
[root@BC ~]# ll -h /var/log/lastlog
-rw-r--r--. 1 root root 1.9M Jul 27 16:30 /var/log/lastlog
[root@BC ~]# ll -h /var/log/audit/audit.log
-rw-------. 1 root root 1.5M Jul 27 18:01 /var/log/audit/audit.log


[root@BC ~]# find  /var/log/  -type  f  -size  +2M  -ls
67113676 5704 -rw-r--r--   1 root     root      5840292 Jul 27 17:56 /var/log/test.log


[root@BC ~]# find  /var/log/  -type  f  -size  6M  -ls
67113676 5704 -rw-r--r--   1 root     root      5840292 Jul 27 17:56 /var/log/test.log



[root@BC ~]# find  /var/log/  -type  f  -size  +2M  -size -7M  
/var/log/test.log


[root@BC ~]# dd  </dev/zero  >/var/log/123.log  bs=100M  count=13
13+0 records in
13+0 records out
1363148800 bytes (1.4 GB) copied, 28.178 s, 48.4 MB/s
[root@BC ~]# ll /var/log/123.log 
-rw-r--r-- 1 root root 1363148800 Jul 27 18:17 /var/log/123.log
[root@BC ~]# ll /var/log/123.log  -h
-rw-r--r-- 1 root root 1.3G Jul 27 18:17 /var/log/123.log
[root@BC ~]# find  /var/log/  -type  f  -size  +1G  -ls
67588811 1331200 -rw-r--r--   1 root     root     1363148800 Jul 27 18:17 /var/log/123.log
[root@BC ~]# find  /var/log/  -type  f  -size  2G  -ls
67588811 1331200 -rw-r--r--   1 root     root     1363148800 Jul 27 18:17 /var/log/123.log

五、根据文件时间查找



选项:

	-mtime  		#最后修改时间 
	
	+n			#多少天以前 
	
	-n			#多少天以内
	
	n			#具体某一天 
	
	
[root@BC ~]# for i in {01..27};do  date  -s  2020/07/$i  &&  touch  data/file-${i}.txt;done	

[root@BC ~]# 
[root@BC ~]# ntpdate  ntp.aliyun.com

[root@BC ~]# ll data/
total 0
-rw-r--r-- 1 root root 0 Jul 10 00:00 file-10.txt
-rw-r--r-- 1 root root 0 Jul 11 00:00 file-11.txt
-rw-r--r-- 1 root root 0 Jul 12 00:00 file-12.txt
-rw-r--r-- 1 root root 0 Jul 13 00:00 file-13.txt
-rw-r--r-- 1 root root 0 Jul 14 00:00 file-14.txt
-rw-r--r-- 1 root root 0 Jul 15 00:00 file-15.txt
-rw-r--r-- 1 root root 0 Jul 16 00:00 file-16.txt
-rw-r--r-- 1 root root 0 Jul 17 00:00 file-17.txt
-rw-r--r-- 1 root root 0 Jul 18 00:00 file-18.txt
-rw-r--r-- 1 root root 0 Jul 19 00:00 file-19.txt
-rw-r--r-- 1 root root 0 Jul  1 00:00 file-1.txt
-rw-r--r-- 1 root root 0 Jul 20 00:00 file-20.txt
-rw-r--r-- 1 root root 0 Jul 21 00:00 file-21.txt
-rw-r--r-- 1 root root 0 Jul 22 00:00 file-22.txt
-rw-r--r-- 1 root root 0 Jul 23 00:00 file-23.txt
-rw-r--r-- 1 root root 0 Jul 24 00:00 file-24.txt
-rw-r--r-- 1 root root 0 Jul 25 00:00 file-25.txt
-rw-r--r-- 1 root root 0 Jul 26 00:00 file-26.txt
-rw-r--r-- 1 root root 0 Jul 27 00:00 file-27.txt
-rw-r--r-- 1 root root 0 Jul  2 00:00 file-2.txt
-rw-r--r-- 1 root root 0 Jul  3 00:00 file-3.txt
-rw-r--r-- 1 root root 0 Jul  4 00:00 file-4.txt
-rw-r--r-- 1 root root 0 Jul  5 00:00 file-5.txt
-rw-r--r-- 1 root root 0 Jul  6 00:00 file-6.txt
-rw-r--r-- 1 root root 0 Jul  7 00:00 file-7.txt
-rw-r--r-- 1 root root 0 Jul  8 00:00 file-8.txt
-rw-r--r-- 1 root root 0 Jul  9 00:00 file-9.txt
[root@BC ~]# 
[root@BC ~]# find  /root  -type  f   -mtime  +7  		#查找7天以前的
/root/.bash_logout
/root/.cshrc
/root/.tcshrc
/root/.lesshst
/root/.vimrc
/root/data/file-1.txt
/root/data/file-2.txt
/root/data/file-3.txt
/root/data/file-4.txt
/root/data/file-5.txt
/root/data/file-6.txt
/root/data/file-7.txt
/root/data/file-8.txt
/root/data/file-9.txt
/root/data/file-10.txt
/root/data/file-11.txt
/root/data/file-12.txt
/root/data/file-13.txt
/root/data/file-14.txt
/root/data/file-15.txt
/root/data/file-16.txt
/root/data/file-17.txt
/root/data/file-18.txt
/root/data/file-19.txt
[root@BC ~]# find  /root  -type  f   -mtime  7  		#查找第七天
/root/data/file-20.txt


[root@BC ~]# find  /root  -type  f   -mtime  -7  		#查找七天以内 
/root/.bash_profile
/root/.bash_history
/root/.viminfo
/root/.bashrc
/root/data/file-21.txt
/root/data/file-22.txt
/root/data/file-23.txt
/root/data/file-24.txt
/root/data/file-25.txt
/root/data/file-26.txt
/root/data/file-27.txt


[root@BC ~]# find  /root  -type  f   -mtime  +3  |xargs   rm -f


[root@BC ~]# find  /var/log/   -type  f   -size  +1G  -mtime  -1 | xargs  rm -f


六、根据文件权限查找


选项:

	-perm		#根据权限查找 
	
	-421		#包含这些权限 
	
	421			#精确匹配  
	
	/421		#包含其中的某个权限   三个身份中满足一个则匹配
	
	!			#取反  
	

[root@BC ~]# find   /root  -type  f
/root/.bash_history
/root/.viminfo
/root/data/file-24.txt
/root/data/file-25.txt
/root/data/file-26.txt
/root/data/file-27.txt
[root@BC ~]# find   /root ! -type  f		#排除普通的文件的其他所有类型文件  
/root
/root/.pki
/root/.pki/nssdb
/root/data



#精确匹配

[root@BC ~]# chmod  633  data/file-24.txt 
[root@BC ~]# ll data/
total 0
-rw--wx-wx 1 root root 0 Jul 24 00:00 file-24.txt
-rw-r--r-- 1 root root 0 Jul 25 00:00 file-25.txt
-rw-r--r-- 1 root root 0 Jul 26 00:00 file-26.txt
-rw-r--r-- 1 root root 0 Jul 27 00:00 file-27.txt
[root@BC ~]# find   data/  -type f  -perm  644  
data/file-25.txt
data/file-26.txt
data/file-27.txt
[root@BC ~]# find   data/  -type f  -perm  633
data/file-24.txt


#满足查找最低权限  每个身份都有满足   

[root@BC ~]# find   data/  -type f  -perm  -644
data/file-26.txt
data/file-27.txt
[root@BC ~]# ll data/
total 0
-rw--wx-wx 1 root root 0 Jul 24 00:00 file-24.txt
-r--r--r-- 1 root root 0 Jul 25 00:00 file-25.txt
-rw-r--r-- 1 root root 0 Jul 26 00:00 file-26.txt
-rw-r--r-- 1 root root 0 Jul 27 00:00 file-27.txt
[root@BC ~]# chmod  666  data/file-25.txt 
[root@BC ~]# find   data/  -type f  -perm  -644
data/file-25.txt
data/file-26.txt
data/file-27.txt

[root@BC ~]# chmod  744  data/file-26.txt 
[root@BC ~]# find   data/  -type f  -perm  -644
data/file-25.txt
data/file-26.txt
data/file-27.txt


#满足一个身份的某个权限就可以

[root@BC ~]# ll  data/
total 0
-rw--wx-wx 1 root root 0 Jul 24 00:00 file-24.txt
-rw-rw-rw- 1 root root 0 Jul 25 00:00 file-25.txt
-rwxr--r-- 1 root root 0 Jul 26 00:00 file-26.txt
-rw-r--r-- 1 root root 0 Jul 27 00:00 file-27.txt
[root@BC ~]# find   data/  -type f  -perm  /644
data/file-24.txt
data/file-25.txt
data/file-26.txt
data/file-27.txt


[root@BC ~]# chmod  333  data/file-24.txt 
[root@BC ~]# find   data/  -type f  -perm  /644
data/file-24.txt
data/file-25.txt
data/file-26.txt
data/file-27.txt
[root@BC ~]# ll data/
total 0
--wx-wx-wx 1 root root 0 Jul 24 00:00 file-24.txt
-rw-rw-rw- 1 root root 0 Jul 25 00:00 file-25.txt
-rwxr--r-- 1 root root 0 Jul 26 00:00 file-26.txt
-rw-r--r-- 1 root root 0 Jul 27 00:00 file-27.txt
[root@BC ~]# find   data/  -type f  -perm  /444
data/file-25.txt
data/file-26.txt
data/file-27.txt


[root@BC ~]# find  /    -perm  -4000  -ls
201418870   24 -rws--x--x   1 root     root        24048 Oct 31  2018 /usr/bin/chfn
201418873   24 -rws--x--x   1 root     root        23960 Oct 31  2018 /usr/bin/chsh
201369302   32 -rwsr-xr-x   1 root     root        32096 Oct 31  2018 /usr/bin/fusermount
201418745   80 -rwsr-xr-x   1 root     root        78272 Oct 31  2018 /usr/bin/gpasswd


[root@BC ~]# find  /    -perm  -2000  -ls
201368725   16 -r-xr-sr-x   1 root     tty         15344 Jun 10  2014 /usr/bin/wall
201418931   20 -rwxr-sr-x   1 root     tty         19624 Oct 31  2018 /usr/bin/write
201614897  376 ---x--s--x   1 root     nobody     382240 Apr 11  2018 /usr/bin/ssh-agent
201682585   40 -rwx--s--x   1 root     slocate     40520 Apr 11  2018 /usr/bin/locate
682454  216 -rwxr-sr-x   1 root     postdrop   218632 Oct 31  2018 /usr/sbin/postdrop


[root@BC ~]# find  /    -perm  -1000  -ls
67108936    4 drwxrwxrwt  16 root     root         4096 Jul 27  2020 /tmp
187047    0 drwxrwxrwt   2 root     root            6 Jul  6 02:14 /tmp/.font-unix
67284921    0 drwxrwxrwt   2 root     root            6 Jul  6 02:14 /tmp/.XIM-unix
134469085    0 drwxrwxrwt   2 root     root            6 Jul  6 02:14 /tmp/.ICE-unix
201458049    0 drwxrwxrwt   2 root     root            6 Jul  6 02:14 /tmp/.X11-unix

七、根据文件属主属组查找


选项:

	-user		#根据属主
	
	-group		#根据属组
	
	-nouser		#没有属主
	
	-nogroup	#没有属组
	

#查找属主为ops01

[root@BC ~]# find  /   -user  ops01  -ls 
201696842    0 -rw-rw----   1 ops01    mail            0 Jul 24 09:08 /var/spool/mail/ops01
67588770    0 drwx------   2 ops01    ops01          83 Jul 24 09:10 /home/ops01
67588774    4 -rw-r--r--   1 ops01    ops01          18 Oct 31  2018 /home/ops01/.bash_logout
67588780    4 -rw-r--r--   1 ops01    ops01         193 Oct 31  2018 /home/ops01/.bash_profile
67588782    4 -rw-r--r--   1 ops01    ops01         231 Oct 31  2018 /home/ops01/.bashrc
67588795    4 -rw-------   1 ops01    ops01         145 Jul 24 09:55 /home/ops01/.bash_history
820161    4 -rw-rw-r--   1 ops01    ops_group       12 Jul 24 09:16 /data/ops01.log

#查找属主为ops01并且 属组为ops01


[root@BC ~]# find  /   -user  ops01  -group  ops01   -ls 
67588770    0 drwx------   2 ops01    ops01          83 Jul 24 09:10 /home/ops01
67588774    4 -rw-r--r--   1 ops01    ops01          18 Oct 31  2018 /home/ops01/.bash_logout
67588780    4 -rw-r--r--   1 ops01    ops01         193 Oct 31  2018 /home/ops01/.bash_profile
67588782    4 -rw-r--r--   1 ops01    ops01         231 Oct 31  2018 /home/ops01/.bashrc
67588795    4 -rw-------   1 ops01    ops01         145 Jul 24 09:55 /home/ops01/.bash_history

# -a  并且

[root@BC ~]# find  /   -user  ops01  -a -group  ops01   -ls 
67588770    0 drwx------   2 ops01    ops01          83 Jul 24 09:10 /home/ops01
67588774    4 -rw-r--r--   1 ops01    ops01          18 Oct 31  2018 /home/ops01/.bash_logout
67588780    4 -rw-r--r--   1 ops01    ops01         193 Oct 31  2018 /home/ops01/.bash_profile
67588782    4 -rw-r--r--   1 ops01    ops01         231 Oct 31  2018 /home/ops01/.bashrc
67588795    4 -rw-------   1 ops01    ops01         145 Jul 24 09:55 /home/ops01/.bash_history


[root@BC ~]# find  /   -user  ops01  -a -group  ops_group   -ls 
67495942    0 --wx-wx-wx   1 ops01    ops_group        0 Jul 24 00:00 /root/data/file-24.txt
820161    4 -rw-rw-r--   1 ops01    ops_group       12 Jul 24 09:16 /data/ops01.log

#括号前后要有空格  也需要使用转义字符进行转义    -o		或者 

[root@BC ~]# find  /   \( -user  ops01  -o  -group  ops_group \)   -ls 
67495942    0 --wx-wx-wx   1 ops01    ops_group        0 Jul 24 00:00 /root/data/file-24.txt
201696842    0 -rw-rw----   1 ops01    mail            0 Jul 24 09:08 /var/spool/mail/ops01
67588770    0 drwx------   2 ops01    ops01          83 Jul 24 09:10 /home/ops01
67588774    4 -rw-r--r--   1 ops01    ops01          18 Oct 31  2018 /home/ops01/.bash_logout
67588780    4 -rw-r--r--   1 ops01    ops01         193 Oct 31  2018 /home/ops01/.bash_profile
67588782    4 -rw-r--r--   1 ops01    ops01         231 Oct 31  2018 /home/ops01/.bashrc
67588795    4 -rw-------   1 ops01    ops01         145 Jul 24 09:55 /home/ops01/.bash_history
818813    0 drwxrws---   3 root     ops_group      121 Jul 20 10:48 /data
820160    4 -rw-r--r--   1 root     ops_group        5 Jul 24 09:14 /data/root.log
820161    4 -rw-rw-r--   1 ops01    ops_group       12 Jul 24 09:16 /data/ops01.log
820162    4 -rw-rw-r--   1 ops02    ops_group        6 Jul 24 09:15 /data/ops02.log
818814    0 drwxrwsr-x   2 ops02    ops_group        6 Jul 24 09:21 /data/test
820215    0 -rw-r--r--   1 root     ops_group        0 Jul 20 10:48 /data/file-20.log

#没有属主

[root@BC ~]# find  /   -nouser    -ls 
201729427    0 -rw-rw----   1 666      mail            0 Jul 21 16:47 /var/spool/mail/user02
201685422    0 -rw-rw----   1 6666     mail            0 Jul 21 16:40 /var/spool/mail/user123

#没有属组的

[root@BC ~]# find  /   -nogroup    -ls 
134355712    0 -rw-------   1 root     1013            0 Jul 22 11:11 /var/db/sudo/lectured/qiudao


#没有属主也没有属组的

[root@BC ~]# userdel  ops02
[root@BC ~]# ll data/file-26.txt 
67255910    0 -rwxr--r--   1 1045     1047            0 Jul 26 00:00 /root/data/file-26.txt
134356976    0 drwx------   2 1045     1047           99 Jul 24 09:16 /home/ops02
134356977    4 -rw-r--r--   1 1045     1047           18 Oct 31  2018 /home/ops02/.bash_logout
134356978    4 -rw-r--r--   1 1045     1047          193 Oct 31  2018 /home/ops02/.bash_profile
134356979    4 -rw-r--r--   1 1045     1047          231 Oct 31  2018 /home/ops02/.bashrc
134356980    4 -rw-------   1 1045     1047          276 Jul 24 09:49 /home/ops02/.bash_history
134356968    4 -rw-------   1 1045     1047          637 Jul 24 09:16 /home/ops02/.viminfo
818815    0 -rw-rw-r--   1 1045     1047            0 Jul 24 09:11 /data/ops02.txt

[root@BC ~]# find  /  \( -nouser  -o  -nogroup \)   -ls 
67255910    0 -rwxr--r--   1 1045     1047            0 Jul 26 00:00 /root/data/file-26.txt
134355712    0 -rw-------   1 root     1013            0 Jul 22 11:11 /var/db/sudo/lectured/qiudao
201729427    0 -rw-rw----   1 666      mail            0 Jul 21 16:47 /var/spool/mail/user02
201685422    0 -rw-rw----   1 6666     mail            0 Jul 21 16:40 /var/spool/mail/user123
201696843    0 -rw-rw----   1 1045     mail            0 Jul 24 09:08 /var/spool/mail/ops02
134356976    0 drwx------   2 1045     1047           99 Jul 24 09:16 /home/ops02
134356977    4 -rw-r--r--   1 1045     1047           18 Oct 31  2018 /home/ops02/.bash_logout
134356978    4 -rw-r--r--   1 1045     1047          193 Oct 31  2018 /home/ops02/.bash_profile
134356979    4 -rw-r--r--   1 1045     1047          231 Oct 31  2018 /home/ops02/.bashrc
134356980    4 -rw-------   1 1045     1047          276 Jul 24 09:49 /home/ops02/.bash_history
134356968    4 -rw-------   1 1045     1047          637 Jul 24 09:16 /home/ops02/.viminfo
818815    0 -rw-rw-r--   1 1045     1047            0 Jul 24 09:11 /data/ops02.txt
820162    4 -rw-rw-r--   1 1045     ops_group        6 Jul 24 09:15 /data/ops02.log
818814    0 drwxrwsr-x   2 1045     ops_group        6 Jul 24 09:21 /data/test


基础很重要

八、根据目录层级查找


选项:

	-maxdepth		#最大的目录层级    tree  -L
	
	
[root@BC ~]# find  /   -maxdepth  2  \( -nouser  -o  -nogroup \)   -ls 
134356976    0 drwx------   2 1045     1047           99 Jul 24 09:16 /home/ops02
818815    0 -rw-rw-r--   1 1045     1047            0 Jul 24 09:11 /data/ops02.txt
820162    4 -rw-rw-r--   1 1045     ops_group        6 Jul 24 09:15 /data/ops02.log
818814    0 drwxrwsr-x   2 1045     ops_group        6 Jul 24 09:21 /data/test
[root@BC ~]# find  /   -maxdepth  3  \( -nouser  -o  -nogroup \)   -ls 
67255910    0 -rwxr--r--   1 1045     1047            0 Jul 26 00:00 /root/data/file-26.txt
134356976    0 drwx------   2 1045     1047           99 Jul 24 09:16 /home/ops02
134356977    4 -rw-r--r--   1 1045     1047           18 Oct 31  2018 /home/ops02/.bash_logout
134356978    4 -rw-r--r--   1 1045     1047          193 Oct 31  2018 /home/ops02/.bash_profile
134356979    4 -rw-r--r--   1 1045     1047          231 Oct 31  2018 /home/ops02/.bashrc
134356980    4 -rw-------   1 1045     1047          276 Jul 24 09:49 /home/ops02/.bash_history
134356968    4 -rw-------   1 1045     1047          637 Jul 24 09:16 /home/ops02/.viminfo
818815    0 -rw-rw-r--   1 1045     1047            0 Jul 24 09:11 /data/ops02.txt
820162    4 -rw-rw-r--   1 1045     ops_group        6 Jul 24 09:15 /data/ops02.log
818814    0 drwxrwsr-x   2 1045     ops_group        6 Jul 24 09:21 /data/test
	

九、find执行的动作


-print		#默认的动作 打印你所查找出来的文件的名称 


-ls			#把查找出来的文件以长格形式显示出来文件的详细信息  


-delete		#把查找出来的文件进行删除  只能删除空目录 


-exec		#后面加自定义的shell命令



[root@BC ~]# find  /   -maxdepth  2  \( -nouser  -o  -nogroup \)   
/home/ops02
/data/ops02.txt
/data/ops02.log
/data/test
[root@BC ~]# find  /   -maxdepth  2  \( -nouser  -o  -nogroup \)    -print 
/home/ops02
/data/ops02.txt
/data/ops02.log
/data/test


[root@BC ~]# find  /   -maxdepth  2  \( -nouser  -o  -nogroup \)    -ls
134356976    0 drwx------   2 1045     1047           99 Jul 24 09:16 /home/ops02
818815    0 -rw-rw-r--   1 1045     1047            0 Jul 24 09:11 /data/ops02.txt
820162    4 -rw-rw-r--   1 1045     ops_group        6 Jul 24 09:15 /data/ops02.log
818814    0 drwxrwsr-x   2 1045     ops_group        6 Jul 24 09:21 /data/test



[root@BC ~]# find  /opt/   -type  d  -name "opt"
/opt/
[root@BC ~]# ll /opt/
total 0
[root@BC ~]# cp /etc/hosts  /opt/
[root@BC ~]# find  /opt/   -type  d  -name "opt"  -delete
find: cannot delete ‘/opt/’: Directory not empty
[root@BC ~]# ll /opt/
total 4
-rw-r--r-- 1 root root 158 Jul 27 12:11 hosts

[root@BC ~]# find  /opt/   -type  f  -name "hosts"  -delete
[root@BC ~]# ll /opt/
total 0
[root@BC ~]# find  /opt/   -type  d  -name "opt"  -delete


[root@BC ~]# find  /root/data/     -type  f    
/root/data/file-24.txt
/root/data/file-25.txt
/root/data/file-26.txt
/root/data/file-27.txt
[root@BC ~]# find  /root/data/     -type  f     -delete
[root@BC ~]# ll data/
total 0

#把某个目录下七天以前的数据删除

[root@BC ~]# find  /backup   -type f  -mtime  +7  -delete


[root@BC ~]# find  /var/log/  -type f  -name "*.log"  -exec  cp  {}  /opt/  \;  
[root@BC ~]# ll /opt/
total 9076
-rw-r--r-- 1 root root       0 Jul 27 12:17 access.log
-rw------- 1 root root   26591 Jul 27 12:17 anaconda.log
-rw------- 1 root root 1485709 Jul 27 12:17 audit.log
-rw------- 1 root root       0 Jul 27 12:17 boot.log
-rw-r--r-- 1 root root       0 Jul 27 12:17 error.log
-rw------- 1 root root    4017 Jul 27 12:17 ifcfg.log
-rw------- 1 root root 1552657 Jul 27 12:17 journal.log
-rw------- 1 root root       0 Jul 27 12:17 ks-script-3PCKae.log
-rw------- 1 root root  110647 Jul 27 12:17 packaging.log
-rw------- 1 root root   29721 Jul 27 12:17 program.log
-rw------- 1 root root  124184 Jul 27 12:17 storage.log
-rw-r--r-- 1 root root 5840292 Jul 27 12:17 test.log


十、find和xargs命令的配合


[root@BC ~]# find  /var/log/  -type f  -name "*.log" | xargs  cp  -t  /opt/a  
[root@BC ~]# ll /opt/a
total 9076
-rw-r--r-- 1 root root       0 Jul 27 12:22 access.log
-rw------- 1 root root   26591 Jul 27 12:22 anaconda.log
-rw------- 1 root root 1485709 Jul 27 12:22 audit.log
-rw------- 1 root root       0 Jul 27 12:22 boot.log
-rw-r--r-- 1 root root       0 Jul 27 12:22 error.log
-rw------- 1 root root    4017 Jul 27 12:22 ifcfg.log
-rw------- 1 root root 1552657 Jul 27 12:22 journal.log


[root@BC ~]# find  /var/log/  -type f  -name "*.log" | xargs  -I  {}  cp {}  /opt/b  
[root@BC ~]# ll /opt/b
total 9076
-rw-r--r-- 1 root root       0 Jul 27 12:23 access.log
-rw------- 1 root root   26591 Jul 27 12:23 anaconda.log
-rw------- 1 root root 1485709 Jul 27 12:23 audit.log
-rw------- 1 root root       0 Jul 27 12:23 boot.log
-rw-r--r-- 1 root root       0 Jul 27 12:23 error.log
-rw------- 1 root root    4017 Jul 27 12:23 ifcfg.log


[root@BC ~]# cp  `find  /var/log/  -type f  -name "*.log"`  /opt/c
[root@BC ~]# ll /opt/c
total 9076
-rw-r--r-- 1 root root       0 Jul 27 12:24 access.log
-rw------- 1 root root   26591 Jul 27 12:24 anaconda.log
-rw------- 1 root root 1485709 Jul 27 12:24 audit.log
-rw------- 1 root root       0 Jul 27 12:24 boot.log
-rw-r--r-- 1 root root       0 Jul 27 12:24 error.log
-rw------- 1 root root    4017 Jul 27 12:24 ifcfg.log
-rw------- 1 root root 1552657 Jul 27 12:24 journal.log


[root@BC ~]# \cp  $(find  /var/log/  -type f  -name "*.log")  /opt/c


$()   ==  ``     #优先执行里面的命令  把命令执行的结果交给外面的命令



[root@BC ~]# find  /var/log/  -type f  -name "*.log" |xargs  ls -l
-rw-------. 1 root root   26591 Jul  6 02:17 /var/log/anaconda/anaconda.log
-rw-------. 1 root root    4017 Jul  6 02:17 /var/log/anaconda/ifcfg.log
-rw-------. 1 root root 1552657 Jul  6 02:17 /var/log/anaconda/journal.log
-rw-------. 1 root root       0 Jul  6 02:17 /var/log/anaconda/ks-script-3PCKae.log
-rw-------. 1 root root  110647 Jul  6 02:17 /var/log/anaconda/packaging.log
-rw-------. 1 root root   29721 Jul  6 02:17 /var/log/anaconda/program.log



[root@BC ~]# find  /opt/a   -type f  -name "*.log" |xargs  rm -f  
[root@BC ~]# ll /opt/a
total 0


场景1:服务器磁盘满,一般由大的日志文件导致,需找到大文件并删除。
解决1: find / -size +500M -print0|xargs -0 du -m|sort -nr
find指令为找出500M以上的文件,print0和xargs -0配合使用,用来解决文件名中有空格或特殊字符问题。du -m是查看这些文件的大小,并以m为单位显示。最后sort -nr是按照数字反向排序(大的文件在前)
解决2:上述方法从根路径查找,可能列出一些系统文件。可以在这个查找之前先进行一下过滤。
使用du -m -d 1 /|sort -nr  先看看根路径下,哪个文件夹比较大,并且有嫌疑是导致磁盘满的罪魁祸首。然后再基于那个目录进行find。

场景2: 记得写过一个xxx.c的文件,但是忘了放哪里了
解决: find / -name *xxx*.c 模糊查找下这个文件

2020年07月28日上午(day18)

一、day15作业


1.用户基础权限为9位,每三位为一组,每组代表着谁的权限?

属主    属组    其他用户



2.权限中的rwx-,每个字符所代表什么意思?对应的数字是什么?

r		可读		4

w		可写		2

x		可执行		1

-		没有权限	0


3.-rwxr-xr-x,写出对应数字权限

755

4.-rwxr--r--,写出对应数字权限

744


5.-r-xr-x--x,写出对应数字权限

551

6.-rw-r-xr-x,写出对应数字权限

655

7.-r--r--r--,写出对应数字权限

444

8.-r-xr-----,写出对应数字权限

540

9.---x-w-r--,写出对应数字权限

124

10.-rwxr--rw-,写出对应数字权限

746


11.-rw-r--r--,写出对应数字权限

644

12.---xr--rwx,写出对应数字权限

147

13.777,写出对应字母权限

-rwxrwxrwx

14.545,写出对应字母权限

-r-xr--r-x


15.744,写出对应字母权限

-rwxr--r--

16.600,写出对应字母权限

-rw-------

17.641,写出对应字母权限

-rw-r----x

18.711,写出对应字母权限

-rwx--x--x

19.700,写出对应字母权限

-rwx------

20.555,写出对应字母权限

-r-xr-xr-x

21.733,写出对应字母权限

-rwx-wx-wx

22.713,写出对应字母权限

-rwx--x-wx

23.建一个目录/test,查看这个目录的默认权限是?

755


24.进入/test目录中,建一个文件abc,查看其默认的权限为?

644


25.创建一个文件test.txt,并其将权限改为600.

[root@BC ~]#chmod   600    test.txt

26.将test.txt文件的权限改为755.

[root@BC ~]#chmod  755  test.txt

27.将test.txt文件的权限改为000.

[root@BC ~]#chmod  000   test.txt

28.修改test.txt文件的权限为644.

[root@BC ~]#chmod  644   test.txt

29.给test.txt文件的属主加上x权限。


[root@BC ~]#chmod  u+x  test.txt

30.给test.txt文件的其他用户加上x权限。

[root@BC ~]#chmod  o+x  test.txt

31.去除test.txt文件的所有执行权限。

[root@BC ~]#chmod   -x  test.txt

32.给/test目录及目录下的所有文件或目录的权限统一改为744。

[root@BC ~]#chmod  -R  744  /test


33.给/test目录及目录下的所有文件或目录加上x权限(属主、属组、其他用户都执行权限)。

[root@BC ~]#chmod -R  +x  /test

34.使用stat命令查看test.txt文件的权限,并使用awk将权限取出来,比如:755

[root@BC ~]# stat  /etc/hosts
  File: ‘/etc/hosts’
  Size: 158       	Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d	Inode: 67125348    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-07-27 16:29:57.708000982 +0800
Modify: 2013-06-07 22:31:32.000000000 +0800
Change: 2020-07-06 02:13:36.028996182 +0800
 Birth: -
[root@BC ~]# stat  /etc/hosts | awk -F \'[(/]\' \'NR==4{print  $2}\'
0644


35.使用stat命令查看test.txt文件的权限,并使用sed将权限取出来,比如:755

[root@BC ~]# stat  /etc/hosts | sed  -nr  \'4s#(^.*\()(.*)(/[-d].*$)#\2#gp\'
0644

[root@BC ~]# stat  /etc | sed  -nr  \'4s#(^.*\()(.*)(/[-d].*$)#\2#gp\'
0755

二、day16作业


1.创建目录/web01,所有者是user01,所属组是user02;创建目录/web02,所有者是user02,所属组是user01。

[root@BC ~]#useradd   user01

[root@BC ~]#useradd   user02

[root@BC ~]#mkdir   /web01   /web02

[root@BC ~]#chown  user01.user02   /web01

[root@BC ~]#chown  user02.user01  /web02


2.复制/etc/fstab文件到/opt下,设置文件所有者为tomcat读写权限,所属组为apps组有读写权限,其他人无权限


[root@BC ~]#cp   /etc/fstab   /opt

[root@BC ~]#groupadd  apps

[root@BC ~]#useradd  tomcat 

[root@BC ~]#chown  tomcat.apps   /opt/fstab 

[root@BC ~]#chmod  660  /opt/fstab


3.将以下权限翻译成数字,将数字权限用字母表示

rw-r-xr--	654
rw-r--r--	644
rwx--x--x	711
rw-------	600
rwxr--r--	744
rw-rw-r--	664
rwxrwxrwx	777
751		 rwxr-x--x	
771		rwxrwx--x	
632		rw--wx-w-	
551		r-xr-x--x	
622		rw--w--w-	
746		rwxr--rw-	
644		rw-r--r--		
755		rwxr-xr-x


4.假设公司研发部的用户david和peter属于组A,财务部的用户life和laowang属于组B,根据要求创建用户及组。

[root@BC ~]#groupadd  A 

[root@BC ~]#groupadd  B

[root@BC ~]#useradd  -g A david

[root@BC ~]#useradd  -g A peter

[root@BC ~]#useradd  -g  B  life

[root@BC ~]#useradd  -g  B  laowang


5.接第4题,建立目录file1,该目录里面的文件只能由研发部人员读取、增加、删除、修改以及执行,其他用户不能对该目录进行任何操作

[root@BC ~]#mkdir -m  770   file1

[root@BC ~]#chown  .A  file1
或
[root@BC ~]#chgrp  A  file1

6.接第4题,建立目录file2,该目录里面的文件只能由财务部人员读取、增加、删除、修改以及执行,其他用户不能对该目录进行任何操作

[root@BC ~]#mkdir file2  

[root@BC ~]#chown  .B  file2  

[root@BC ~]#chmod  770  file2

7.接第4题,建立目录file3,该目录里面的文件研发部人员可以读取、增加、删除、修改以及执行,其他部门只能做查看操作

[root@BC ~]#mkdir  -m   775   file3

[root@BC ~]#chgrp  A  file3


8.接第4题,建立目录file4,该目录里面的文件只有研发部的经理David拥有所有操作权限,研发部的其他人只有查看权限,其他部门不能进行任何操作


[root@BC ~]#mkdir  -m  750  file4

[root@BC ~]#chown  David.A    file4


9.新建用户组,shengchan,demo,要求如下:
	01、tom是shengchan组的附加成员
	02、leo是demo组的附加成员
	03、新建用户admin不属于以上任何一个组
	
[root@BC ~]#groupadd  shengchan

[root@BC ~]#groupadd  demo

[root@BC ~]#useradd  -g  shengchan  tom

[root@BC ~]#useradd   -g  demo   leo

[root@BC ~]#useradd  admin
	
	
10.新建目录要求如下:
	01、/pub/目录为公共存储目录,所有用户可以读写执行
	02、/sc目录是生产部的目录,生产部的成员读写执行,并且生产部人员建立的文件自动归属到
		shengchan组中
	03、admin用户可以在/sc目录中可以读

[root@BC ~]#mkdir -m 777	/pub

[root@BC ~]#mkdir  -m	2770  /sc

[root@BC ~]#chgrp  shengchan  /sc

[root@BC ~]#chmod  o=rx  /sc

	
11.新建目录/www01,/www02,/www03

[root@BC ~]#mkdir  /www{01..03}

12.接第11题,更改/www01目录的权限,使其他用户对它没有任何权限;

[root@BC ~]#chmod  o=-   /www01


13.接第11题,更改/www02目录的权限,使所属组对它拥有读写执行权限;

[root@BC ~]#chmod  g=rwx  /www02


14.接第11题,更改/www03目录的权限,任何用户都可以读写,但是在/www03目录中创建的任何文件都属于grp1组

[root@BC ~]#chmod   2777  /www03  

[root@BC ~]#groupadd  grp1

[root@BC ~]#chgrp  -R  grp1  /www03


15.新建用户zhangsan,lisi,wangergou,三个用户都属于同一个用户组f4,密码都为oldboy

[root@BC ~]#groupadd  f4 

[root@BC ~]#useradd  -g f4  zhangsan

[root@BC ~]#useradd  -g f4  lisi

[root@BC ~]#useradd  -g f4  wangergou  

[root@BC ~]#echo "oldboy" |passwd  --stdin  zhangsan

[root@BC ~]#echo "oldboy" |passwd  --stdin  lisi

[root@BC ~]#echo "oldboy" |passwd  --stdin  wangergou

16.接15题,上述用户和组都能在/data/code目录,访问,创建,删除文件,其他用户无法访问该目录

[root@BC ~]#mkdir  -p  -m  770  /data/code

[root@BC ~]#chown  -R  .f4  /data/code


17.接15题,/data/code目录下创建的所有文件自动归属于f4组所有

[root@BC ~]#chmod  g+s   /data/code


18.接15题,现在新增了一批用户,属于默认组,需要开放其他用户在code目录的读权限

[root@BC ~]#chmod  o=rx  /data/code


19.接15题,新增的所有其他用户在code目录下创建的文件自动归属f4组

[root@BC ~]#chmod  o=rwx   /data/code


20.有两个用户组,分别为python组、linux组,python组的人可以修改读取python组的文件,但不能让linux组的人读取;linux组的人可以修改读取linux组的文件,但不能让python组的人读取。

[root@BC ~]#groupadd   linux

[root@BC ~]#grouadd   python  

[root@BC ~]#touch   python.txt  

[root@BC ~]#chmod  770  python.txt

[root@BC ~]#chgrp  python  python.txt


[root@BC ~]#touch   linux.txt  

[root@BC ~]#chmod  770  linux.txt

[root@BC ~]#chgrp  python  linux.txt



21.在当前目录中新建文件text,假设该文件的权限为614。现要求设置该文件属主(u)增加执行权限,属组(g)增加写权限,其他用户(o)删除读权限,应该如何操作,另外修改后的权限用字母应该如何表示

[root@BC ~]#touch  text  

[root@BC ~]#chmod  614  text

[root@BC ~]#chmod 730  text 

-rwx-wx--- 


22.在当前目录中创建目录aaa,并把该目录的权限设置为只有文件主有读、写和执行权限

[root@BC ~]#mkdir  -m 700  aaa

23.设某文件myfile的权限为-rw-r--r--,若要增加所有人可执行的权限,应该怎么做

[root@BC ~]#chmod +x  myfile


24.登录到普通用户user01,删除/opt这个目录,提示权限不足,如果要删除/opt这个目录,不使用root用户删除的话,你该怎么解决?

sudo提权 

[root@BC ~]#chmod  u+s   /usr/bin/rm




25.创建目录/test,要求所有用户对这个目录有所有权限,现在只想让每个用户在这个目录只能对属于自己的文件进行操作,怎么实现?

[root@BC ~]#mkdir  -m  1777  /test  


26.创建一个文件/opt/file.txt,这个文件很重要,现要求所有人只能查看和追加内容进去,不允许有其他的操作,怎么实现?

[root@BC ~]#chattr  +a  /opt/file.txt


27.取消上题的设置,现要求所有人只能查看此文件,不允许有其他的操作,怎么实现?

[root@BC ~]#chattr  -a  /opt/file.txt

[root@BC ~]#chattr  -i  /opt/file.txt



28.请问在当前系统中新创建的目录和文件,权限各是多少,为什么?

目录755

文件644

因umask  控制权限  


29.如果我想要在系统中新创建的目录权限为555,文件为444,怎么实现?

umask   222


30.umask怎么计算目录及文件权限的?

目录最大777  减去umask权限 

文件最大666  减去umask    文件权限遇到奇数时,在奇数为加1  


31.在你修改了test.txt文件之后,如何知道在你下次要修改这个文件时,这个文件有没有被别人修改过?

[root@BC ~]# cp  /etc/hosts  ./
[root@BC ~]# ll
total 4
drwxr-xr-x 2 root root   6 Jul 27 12:12 data
-rw-r--r-- 1 root root 158 Jul 28 10:29 hosts
[root@BC ~]# md5sum  hosts   > figer.txt
[root@BC ~]# cat figer.txt
54fb6627dbaa37721048e4549db3224d  hosts
[root@BC ~]# md5sum  -c  figer.txt 
hosts: OK
[root@BC ~]# echo "1" >> hosts 
[root@BC ~]# md5sum  -c  figer.txt 
hosts: FAILED
md5sum: WARNING: 1 computed checksum did NOT match



32.输入时间命令"date"将当前系统时间输出到/data/1.txt


[root@BC ~]# date
Tue Jul 28 10:31:47 CST 2020
[root@BC ~]# mkdir  -p /data
[root@BC ~]# date > /data/1.txt
[root@BC ~]# cat /data/1.txt
Tue Jul 28 10:32:22 CST 2020



33.输入时间命令"date"将当前系统时间追加到/data/1.txt

[root@BC ~]# date >> /data/1.txt

34.在当前系统能ping通百度的情况下,使用" ping -c3 baidu.com "将返回的信息输出到/data/1.txt

[root@BC ~]# ping -c3 baidu.com  >/data/1.txt
[root@BC ~]# cat /data/1.txt
PING baidu.com (39.156.69.79) 56(84) bytes of data.
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=1 ttl=128 time=31.7 ms
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=2 ttl=128 time=33.6 ms
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=3 ttl=128 time=30.9 ms

--- baidu.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 30.939/32.112/33.623/1.140 ms


35.使用“ls /ta”将错误的信息输出到/data/1.txt

[root@BC ~]# ls /ta  2>/data/1.txt
[root@BC ~]# cat /data/1.txt
ls: cannot access /ta: No such file or directory


36.将/data/1.txt的文件内容,标准输出到/data/2.txt

[root@BC ~]# cat /data/1.txt  >  /data/2.txt
[root@BC ~]# cat /data/2.txt
ls: cannot access /ta: No such file or directory


37.使用"seq 10 50"将以0结尾的行标准输出到3.txt

[root@BC ~]# seq  10 50 | grep  \'0$\'  > 3.txt
[root@BC ~]# cat 3.txt
10
20
30
40
50
[root@BC ~]# seq  10 50 | sed -n \'/0$/p\'  
10
20
30
40
50
[root@BC ~]# seq  10 50 | awk  \'/0$/\'
10
20
30
40
50


38.把/etc/fstab文件内容重定向到/tmp目录下文件名为fstab.out

[root@BC ~]# cat  /etc/fstab   > /tmp/fstab.out
[root@BC ~]# cat /tmp/fstab.out

#
# /etc/fstab
# Created by anaconda on Mon Jul  6 02:13:15 2020
#
# Accessible filesystems, by reference, are maintained under \'/dev/disk\'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=4aa02e85-ffe1-4783-9886-a328f923bee8 /                       xfs     defaults        0 0
UUID=70df4a5b-091c-4aaa-9cc7-d745201ec394 /boot                   xfs     defaults        0 0
UUID=6aefd444-30dc-4c0e-9a8d-75a8b1d9856b swap                    swap    defaults        0 0



39.把字符"hello world"追加到/tmp/fstab.out文件尾部


[root@BC ~]# echo  "hello world" >> /tmp/fstab.out 

40.输入df -h,取出当前系统根分区已用磁盘空间的百分比,并将取出来的数值输出到/data/1.txt

[root@BC ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        98G  1.4G   97G   2% /
devtmpfs        980M     0  980M   0% /dev
tmpfs           991M     0  991M   0% /dev/shm
tmpfs           991M  9.6M  981M   1% /run
tmpfs           991M     0  991M   0% /sys/fs/cgroup
/dev/sda1       497M  120M  378M  25% /boot
tmpfs           199M     0  199M   0% /run/user/0
[root@BC ~]# df -h | awk  \'/\/$/\'
/dev/sda3        98G  1.4G   97G   2% /
[root@BC ~]# df -h | awk  \'/\/$/{print $5}\' 
2%
[root@BC ~]# df -h | awk  \'/\/$/{print $(NF-1)}\'   >/data/1.txt



41.使用命令ping测试10.0.0.100是否通畅,把输出的结果不管是正确的还是错误的都追加到/data/1.txt

[root@BC ~]# ping  -c4  10.0.0.100  &> /data/1.txt 
[root@BC ~]# cat /data/1.txt
PING 10.0.0.100 (10.0.0.100) 56(84) bytes of data.
64 bytes from 10.0.0.100: icmp_seq=1 ttl=64 time=0.134 ms
64 bytes from 10.0.0.100: icmp_seq=2 ttl=64 time=0.038 ms
64 bytes from 10.0.0.100: icmp_seq=3 ttl=64 time=0.038 ms
64 bytes from 10.0.0.100: icmp_seq=4 ttl=64 time=0.034 ms

--- 10.0.0.100 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.034/0.061/0.134/0.042 ms


42.使用重定向从文件/etc/passwd中读取数据。

[root@BC ~]# cat < /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

43.用 << 举个命令的使用例子。

[root@BC ~]# cat >123.txt<<EOF
> 12
> EOF
[root@BC ~]# cat 123.txt 
12


44.改变文件所有者的命令是?

[root@BC ~]#chown

45.新建用户oldboy,oldgirl,属同一用户组edu

[root@BC ~]#groupadd   edu

[root@BC ~]#useradd  -g edu  oldboy

[root@BC ~]#useradd  -g edu  oldgirl


46.修改文件1.txt的所有者为oldboy,属组为edu

[root@BC ~]#chown  oldboy.edu  1.txt


47.除所有者以外,属组和其他用户均没有任何权限(要求普通用户进行验证)
[root@BC ~]# ll -d 1.txt 
-rwx------ 1 oldboy edu 422 Jul 24 18:44 1.txt
[root@BC ~]# cp -a 1.txt  /
[root@BC ~]# su - jh
Last login: Fri Jul 24 18:45:08 CST 2020 on pts/2
[jh@BC ~]$ cd /
[jh@BC /]$ echo  \'1\' >1.txt 
-bash: 1.txt: Permission denied


48.复制/etc/fstab文件到/var/tmp下,设置文件所有者为wangcai读写权限,所属组为sysadmins组有读写权限,其他人无权限

[root@BC ~]#cp  /etc/fstab  /var/tmp

[root@BC ~]#useradd  wangcai

[root@BC ~]#groupadd   sysadmins  

[root@BC ~]#chmod  660  /var/tmp/fstab

49.创建下面的用户、组和组成员关系,用户natasha,使用admins作为附属组,用户harry,也使用admins作为附属组,用户sh,不可以登录系统,natasha,harry,sh密码都是centos

[root@BC ~]#groupadd   admins

[root@BC ~]#useradd    -G  admins   natasha

[root@BC ~]#useradd    -G  admins   harry  

[root@BC ~]#useradd  -M  -s  /sbin/nologin 

[root@BC ~]#echo "centos" | passwd   --stdin  natasha

[root@BC ~]#echo "centos" | passwd   --stdin  harry

[root@BC ~]#echo "centos" | passwd   --stdin  sh


50.新建一个用户rose,uid为555,gid为500,注释信息为:linux,家目录在/rose

[root@BC ~]#groupadd  -g  500  rose

[root@BC ~]#useradd  -u 555  -g 500  -c "linux"  -d  /rose   rose  


51.翻译题
01).command not found  				#没有这个命令			   
02).No such file or directory  		#没有这个文件或者目录			   
03).Permission denied  				#权限不足			   
04).overwrite						#覆盖				
05).File exists  					#文件已存在							
06).Is a directory  				#这是个目录						
07).Not a directory  	 			#这不是个目录                  	
08).Warning: Changing a readonly file  	#警告:改变了一个只读文件    
09).Found a swap file by the name ".1.swp" 	#找到一个交换文件,他的名字是.1.swp
10).unrecognized option \'--oldboy\'  		#未知的选项  --oldboy
11).Operation not permitted					#操作不允许 
12).invalid option  						#无效的选项 	                       	  


三、day17作业


1.找出/tmp目录下,属主不是root,且文件名不以f开头的文件 

[root@BC ~]#find  /tmp  -type f   !  -user  root  -name "[^f]*"


2.查找/etc/目录下,所有.conf后缀的文件

[root@BC ~]#find  /etc/   -type f  -name "*.conf"

3.查找/var目录下属主为root,且属组为mail的所有文件

[root@BC ~]#find  /var  -user  root  -a  -group  mail   

[root@BC ~]# find  /var  -user  root  -a  -group  mail    -ls
201345345    4 drwxrwxr-x   2 root     mail         4096 Jul 24 09:08 /var/spool/mail
201696091    4 -rw-------   1 root     mail         1857 Jul 22 11:11 /var/spool/mail/root


4.查找/var目录下7天以前,同时属主不为root,也不是postfix的文件 

[root@BC ~]#find  /var  -type  f  -mtime +7 ! -user  root  -a  ! -user postfix

[root@BC ~]# find  /var  -type  f  -mtime +7  ! \( -user  root  -o -user postfix  \) -ls  

5.查找/etc目录下大于1M且类型为普通文件的所有文件

[root@BC ~]#find  /etc   -type  f  -size +1M  


6.查找/etc目录下所有用户都没有写权限的文件 

[root@BC ~]#find  /etc/   !  -perm    /222  -ls  

7.查找/目录下最后创建时间是3天前,后缀是*.log的文件

[root@BC ~]#find  /  -type  f   -mtime  +3   -name "*.log"

8.查找/目录下文件名包含txt的文件


[root@BC ~]#find  /  -type   -name  "*txt*"

9.查找/目录下属主是oldboy并且属组是oldboy的文件

[root@BC ~]#find   /    -user  oldboy  -group  oldboy  


10.查找/目录下属主是oldboy但是属组不是oldboy的文件

[root@BC ~]#find  /  -user oldboy  ! -group  oldboy

11.查找/目录下属主是oldboy或者属主是oldgirl的文件

[root@BC ~]#find  /   \(  -user  oldboy  -o  -user  oldgirl  \)


12.查找/tmp目录下属主既不是oldboy,也不是oldgirl的文件

[root@BC ~]#find  /tmp  -type  f   ! -user oldboy -a  ! -user oldgirl

[root@BC ~]# find  /tmp  -type  f    ! \( -user  oldboy  -o -user oldgirl  \) -ls  

13.查找/var/log目录下7天以前的文件

[root@BC ~]#find  /var/log  -type  f    -mtime  +7  


14.查找/tmp目录下15天以前的文件删除

[root@BC ~]#find  /tmp   -type  f   -mtime  +15  -delete

[root@BC ~]#find  /tmp   -type  f   -mtime  +15  | xargs  rm -f 

[root@BC ~]#find  /tmp   -type  f   -mtime  +15  -exec  rm -f  {}  \;

[root@BC ~]#rm -f  $(find  /tmp   -type  f   -mtime  +15 )

[root@BC ~]#rm -f `find  /tmp   -type  f   -mtime  +15 `

15.查找/home目录下,类型是目录的,并且属主是oldboy的目录

[root@BC ~]#find  /home  -type  d  -user  oldboy


16.查找/var/log下大于100kb且以log结尾的所有文件

[root@BC ~]#find  /var/log  -type f  -size +100k  -name "*log"


17.查找tmp目录下所属组group1,所属主user1的目录

[root@BC ~]#find  /tmp -type  d  -user user1  -a  -group  group1  

18.同时查找根目录下名为1.txt,2.txt的文件和名字带a的目录

[root@BC ~]# find  /data  -type  f  -name "[12].txt"  -o -type  d  -name "*a*"
/data
/data/1.txt
/data/2.txt

[root@BC ~]# find  /data \( -type  f  -name "[12].txt"  -o -type  d  -name "*a*" \) -ls
818813    0 drwxrws---   3 root     ops_group      147 Jul 28 10:35 /data
818804    4 -rw-r--r--   1 root     ops_group      432 Jul 28 10:44 /data/1.txt
818807    4 -rw-r--r--   1 root     ops_group       49 Jul 28 10:35 /data/2.txt


19.查找/tmp目录下所有文件并删除

[root@BC ~]#find  /tmp  -type f  -delete  

20.查找/etc目录下至少有一类用户没有写权限的文件

[root@BC ~]#find  /etc -type  f   ! -perm   -222

[root@BC ~]# find  /etc  -type  f   ! -perm   -222  -ls

21.查找/var目录下不属于root、lp、gdm的所有文件

[root@BC ~]#find   /var  -type  f  ! \(  -user root -o -user lp  -o -user gdm  \)

[root@BC ~]# find   /var  -type  f  ! \(  -user root -o -user lp  -o -user gdm  \)  -ls



22.将/etc/中的所有目录(仅目录)复制到/tmp下,目录结构不变

[root@BC ~]# find  /etc -type  d  |  xargs -I  {}  mkdir  -p  /tmp/{}


[root@BC ~]# find  /etc/ -type  d   -exec  mkdir  -p  /opt/{}  \;




23.将/etc目录复制到/var/tmp/,/var/tmp/etc的所有目录权限777  /var/tmp/etc目录中所有文件权限666

[root@BC ~]#cp  -a  /etc  /var/tmp/

[root@BC ~]#find  /var/tmp/etc/   -type  d  -exec  chmod 777  {}  \;

[root@BC ~]#find  /var/tmp/etc/   -type  f  -exec  chmod  666  {} \;


24.保留/var/log/下最近7天的日志文件,其他全部删除

[root@BC ~]#find  /var/log   ! -mtime  -7  -delete 


25.创建touch file{1..10}10个文件, 保留file9,其他一次全部删除

[root@BC opt]# find  ./  -type f   !  -name  "file9"  -delete



[root@BC opt]# find  ./  -type f  -name  "file[^9]*"  -delete

26.解释如下每条命令含义


mkdir /root/dir1		#创建目录


touch /root/dir1/file{1..10}	#创建文件


find /root/dir1 -type f -name "file5"	#查找文件名为file5的文件


find /root/dir1 ! -name "file5"		#查找文件名不是file5的文件


find /root/dir1 -name "file5" -o -name "file9"	#查找文件名是file5或者是file9的文件


#错误写法
find /root/dir1 -name "file5" -o -name "file9" -ls	#查找文件名是file5或者是file9的文件并显示详细信息


find /root/dir1 \( -name "file5" -o -name "file9" \) -ls #查找文件名是file5或者是file9的文件并显示详细信息



find /root/dir1 \( -name "file5" -o -name "file9" \) -exec rm -rvf {} \;

#删除file5或者file9

find /root/dir1 ! \( -name "file4" -o -name "file8" \) -exec rm -vf {} \;

#删除文件名不叫file4或者file8的文件  


2020年07月29日上午(day19)

一、压缩的概念


什么是压缩包?


就是一个特殊的文件,将多个文件或者目录压缩成一个特殊的文件  


为什么要用压缩包?

	减少占用的空间  
	
	加快传输的速度


windows:

	.zip      .rar
	
linux:

	.zip	.gz    .tar.gz  	


如果要想Windows和linux中的压缩包互相使用,建议使用.zip种类的压缩包 


在Linux中压缩包的类型


.zip		#根据zip命令进行打包压缩的

.gz			#通过gzip命令进行压缩  只压缩文件,也会删除源文件 

.bz2		#通过bzip进行压缩, 只压缩文件,也会删除源文件

.tar.gz		#使用tar命令归档打包,然后使用gzip命令进行压缩 

.tar.bz2		#使用tar命令归档打包,然后使用bzip命令进行压缩  

二、zip命令



可以对文件和目录进行打包,需要指定压缩包的名称 

[root@BC ~]# yum install  -y  zip  unzip

zip		#压缩的命令

选项:

		-r		#压缩目录 
		
		-q		#静默输出,不显示压缩的过程 
		
		
unzip	#解压zip格式的压缩包

选项:

		-l		#查看压缩包中的列表信息 
		
		-q		#静默输出,不显示解压的过程
		
		-d		#指定解压的目录





[root@BC ~]# ll
total 656
-rw-r--r-- 1 root root 670293 Jul 29 08:45 services

#针对文件进行压缩打包 

[root@BC ~]# zip  services.zip   services 
  adding: services (deflated 80%)
[root@BC ~]# ll
total 792
-rw-r--r-- 1 root root 670293 Jul 29 08:45 services
-rw-r--r-- 1 root root 136227 Jul 29 09:06 services.zip


#压缩目录时不加选项,只压缩目录本身 

[root@BC ~]# zip  etc.zip  /etc
  adding: etc/ (stored 0%)
[root@BC ~]# ll
total 796
-rw-r--r-- 1 root root    158 Jul 29 09:07 etc.zip
-rw-r--r-- 1 root root 670293 Jul 29 08:45 services
-rw-r--r-- 1 root root 136227 Jul 29 09:06 services.zip
[root@BC ~]# unzip  -l  etc.zip 
Archive:  etc.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  07-29-2020 08:56   etc/
---------                     -------
        0                     1 file
[root@BC ~]# unzip  etc.zip 
Archive:  etc.zip
   creating: etc/
[root@BC ~]# ll
total 796
drwxr-xr-x 2 root root      6 Jul 29 08:56 etc
-rw-r--r-- 1 root root    158 Jul 29 09:07 etc.zip
-rw-r--r-- 1 root root 670293 Jul 29 08:45 services
-rw-r--r-- 1 root root 136227 Jul 29 09:06 services.zip
[root@BC ~]# ll etc
total 0

[root@BC ~]# zip  -r  etc.zip  /etc


[root@BC ~]# ll -h
total 13M
-rw-r--r-- 1 root root  12M Jul 29 09:10 etc.zip
-rw-r--r-- 1 root root 655K Jul 29 08:45 services
-rw-r--r-- 1 root root 134K Jul 29 09:06 services.zip
[root@BC ~]# du -sh  /etc
31M	/etc


#查看压缩包里面的文件

[root@BC ~]# unzip -l  etc.zip

#静默输出 

[root@BC ~]# zip  -rq    etc1.zip  /etc
[root@BC ~]# ll
total 24976
-rw-r--r-- 1 root root 12380952 Jul 29 09:13 etc1.zip
-rw-r--r-- 1 root root 12380952 Jul 29 09:10 etc.zip
-rw-r--r-- 1 root root   670293 Jul 29 08:45 services
-rw-r--r-- 1 root root   136227 Jul 29 09:06 services.zip


#解压
[root@BC ~]# unzip   etc.zip

#静默解压文件,将文件解压到指定的目录下面

[root@BC ~]# unzip  -q  etc.zip   -d  /opt/
[root@BC ~]# ll /opt/
total 12
drwxr-xr-x 85 root root 8192 Jul 29 08:56 etc
-rw-r--r--  1 root root    0 Jul 28 12:09 file9

三、gzip命令




gzip	#只能压缩文件,压缩文件的同时,会删除源文件,解压的时候,会删除压缩文件

选项:

	-d		#解压
	
	-r		#递归操作 
	
	
[root@BC ~]# ll
total 656
-rw-r--r-- 1 root root 670293 Jul 29 08:45 services

[root@BC ~]# gzip   services 
[root@BC ~]# ll
total 136
-rw-r--r-- 1 root root 136088 Jul 29 08:45 services.gz

#使用zcat命令查看gzip压缩的文件

[root@BC ~]# zcat  services.gz

#解压 

[root@BC ~]# gzip  -d  services.gz 
[root@BC ~]# ll
total 656
-rw-r--r-- 1 root root 670293 Jul 29 08:45 services

#将目录下的所有都进行压缩处理

[root@BC ~]# gzip  -r   /etc

#解压目录下的所有压缩包 

[root@BC ~]# gzip  -rd  /etc


[root@BC ~]# yum  install  -y  bzip2

#压缩
[root@BC ~]# bzip2  services 
[root@BC ~]# ll
total 124
-rw-r--r-- 1 root root 123932 Jul 29 08:45 services.bz2

#解压 
[root@BC ~]# bzip2  -d  services.bz2 
[root@BC ~]# ll
total 656
-rw-r--r-- 1 root root 670293 Jul 29 08:45 services

#查看bzip2压缩的文件

[root@BC ~]# bzcat   services.bz2 

四、tar命令


不负责压缩,只负责归档打包


选项:

	z		#使用gzip格式进行压缩
	
	j		# 使用bzip2格式进行压缩    了解
	
	J		#使用xz格式进行压缩       了解 
	
	c		#创建压缩包 
	
	v		#显示过程 
	
	f		#指定压缩包的名称 
	
	
	czf		#打包压缩  tar.gz格式的压缩包 
	
	cjf		#打包压缩 tar.bz2格式的压缩包 		了解
	
	cJf		#打包压缩 tar.xz格式的压缩包 			了解 
	
	t		#查看压缩中的内容 
	
	tf		#指定要查看的压缩包名称 
	
	x		#解压
	
	xf		#解压指定的压缩包 
	
	-C		#解压到指定的目录 
	
	h		#打包软连接的真实路径
	
	P		#使用绝对路径打包 
	
	X		#指定排除文件的列表文件
	
	--exclude=		#指定排除的文件
	
	--exclude-from=		#指定排除文件的列表
	
	
	
[root@BC ~]# ll
total 656
-rw-r--r-- 1 root root 670293 Jul 29 09:47 services
[root@BC ~]# tar  czf  services.tar.gz   services 
[root@BC ~]# ll
total 792
-rw-r--r-- 1 root root 670293 Jul 29 09:47 services
-rw-r--r-- 1 root root 136200 Jul 29 09:48 services.tar.gz

[root@BC ~]# tar  cjf  services.tar.bz2  services
[root@BC ~]# ll
total 916
-rw-r--r-- 1 root root 670293 Jul 29 09:47 services
-rw-r--r-- 1 root root 124166 Jul 29 09:48 services.tar.bz2
-rw-r--r-- 1 root root 136200 Jul 29 09:48 services.tar.gz
[root@BC ~]# tar  cJf  services.tar.xz  services
[root@BC ~]# ll
total 1016
-rw-r--r-- 1 root root 670293 Jul 29 09:47 services
-rw-r--r-- 1 root root 124166 Jul 29 09:48 services.tar.bz2
-rw-r--r-- 1 root root 136200 Jul 29 09:48 services.tar.gz
-rw-r--r-- 1 root root 100640 Jul 29 09:49 services.tar.xz

[root@BC ~]# tar  czf  etc.tar.gz   /etc
tar: Removing leading `/\' from member names		#删根的操作是正常的
[root@BC ~]# ll
total 10952
-rw-r--r-- 1 root root 10171684 Jul 29 09:56 etc.tar.gz



[root@BC ~]# tar  tf  services.tar.gz 
services



[root@BC ~]# tar  xf  services.tar.gz 
[root@BC ~]# ll
total 10952
-rw-r--r-- 1 root root 10171684 Jul 29 09:56 etc.tar.gz
-rw-r--r-- 1 root root   670293 Jul 29 09:47 services
-rw-r--r-- 1 root root   124166 Jul 29 09:48 services.tar.bz2
-rw-r--r-- 1 root root   136200 Jul 29 09:48 services.tar.gz
-rw-r--r-- 1 root root   100640 Jul 29 09:49 services.tar.xz
[root@BC ~]# tar xf  etc.tar.gz 
[root@BC ~]# ll
total 10964
drwxr-xr-x 77 root root     8192 Jul 29 08:56 etc
-rw-r--r--  1 root root 10171684 Jul 29 09:56 etc.tar.gz
-rw-r--r--  1 root root   670293 Jul 29 09:47 services
-rw-r--r--  1 root root   124166 Jul 29 09:48 services.tar.bz2
-rw-r--r--  1 root root   136200 Jul 29 09:48 services.tar.gz
-rw-r--r--  1 root root   100640 Jul 29 09:49 services.tar.xz


[root@BC ~]# tar  cjf  etc.tar.bz2   /etc
tar: Removing leading `/\' from member names
[root@BC ~]# tar  cJf  etc.tar.xz   /etc
tar: Removing leading `/\' from member names
[root@BC ~]# ll
total 26808
-rw-r--r-- 1 root root  8994047 Jul 29 10:01 etc.tar.bz2
-rw-r--r-- 1 root root 10171684 Jul 29 09:56 etc.tar.gz
-rw-r--r-- 1 root root  7238084 Jul 29 10:01 etc.tar.xz
-rw-r--r-- 1 root root   670293 Jul 29 09:47 services
-rw-r--r-- 1 root root   124166 Jul 29 09:48 services.tar.bz2
-rw-r--r-- 1 root root   136200 Jul 29 09:48 services.tar.gz
-rw-r--r-- 1 root root   100640 Jul 29 09:49 services.tar.xz
[root@BC ~]# tar  xf  etc.tar.bz2 		#解压的时候,自动识别压缩包的格式 
[root@BC ~]# ll
total 26820
drwxr-xr-x 77 root root     8192 Jul 29 08:56 etc
-rw-r--r--  1 root root  8994047 Jul 29 10:01 etc.tar.bz2
-rw-r--r--  1 root root 10171684 Jul 29 09:56 etc.tar.gz
-rw-r--r--  1 root root  7238084 Jul 29 10:01 etc.tar.xz


[root@BC ~]# tar  xf  etc.tar.gz   -C  /opt/
[root@BC ~]# ll /opt/
total 668
drwxr-xr-x 77 root root   8192 Jul 29 08:56 etc
-rw-r--r--  1 root root 670293 Jul 29 09:47 services


[root@BC ~]# tar czvf  etc.tar.gz   /etc


[root@BC ~]# tar  xvf  etc.tar.gz 


[root@BC ~]# ll  /bin  -d
lrwxrwxrwx. 1 root root 7 Jul  6 02:13 /bin -> usr/bin
[root@BC ~]# tar  czf  bin.tar.gz  /bin
tar: Removing leading `/\' from member names
[root@BC ~]# ll
total 9952
-rw-r--r--  1 root root      110 Jul 29 10:14 bin.tar.gz
drwxr-xr-x 77 root root     8192 Jul 29 08:56 etc
-rw-r--r--  1 root root 10171684 Jul 29 10:04 etc.tar.gz
[root@BC ~]# tar xf  bin.tar.gz 
[root@BC ~]# ll
total 9952
lrwxrwxrwx  1 root root        7 Jul  6 02:13 bin -> usr/bin
-rw-r--r--  1 root root      110 Jul 29 10:14 bin.tar.gz
drwxr-xr-x 77 root root     8192 Jul 29 08:56 etc
-rw-r--r--  1 root root 10171684 Jul 29 10:04 etc.tar.gz



[root@BC ~]# tar  czhf  bin1.tar.gz  /bin
tar: Removing leading `/\' from member names
tar: Removing leading `/\' from hard link targets
[root@BC ~]# ll
total 36880
lrwxrwxrwx  1 root root        7 Jul  6 02:13 bin -> usr/bin
-rw-r--r--  1 root root 27573768 Jul 29 10:16 bin1.tar.gz
-rw-r--r--  1 root root      110 Jul 29 10:14 bin.tar.gz
drwxr-xr-x 77 root root     8192 Jul 29 08:56 etc
-rw-r--r--  1 root root 10171684 Jul 29 10:04 etc.tar.gz



#打包的时候有个删根的操作   怎么避免这个删根的操作 

#第一种   使用相对路径打包 

[root@BC ~]# cd  /  
[root@BC /]# tar  czf  /root/etc1.tar.gz    etc
[root@BC /]# ll /root
total 46852
dr-xr-xr-x  2 root root    20480 Jul 29 08:58 bin
-rw-r--r--  1 root root 27573768 Jul 29 10:16 bin1.tar.gz
-rw-r--r--  1 root root      110 Jul 29 10:14 bin.tar.gz
drwxr-xr-x 77 root root     8192 Jul 29 08:56 etc
-rw-r--r--  1 root root 10171684 Jul 29 10:19 etc1.tar.gz
-rw-r--r--  1 root root 10171684 Jul 29 10:04 etc.tar.gz

#真实打包场景 

[root@BC ~]# cd  /  &&  tar  czf  /root/etc3.tar.gz   etc  &&  cd  -
/root
[root@BC ~]# ll
total 581012
dr-xr-xr-x  2 root root     20480 Jul 29 08:58 bin
-rw-r--r--  1 root root  27573768 Jul 29 10:16 bin1.tar.gz
-rw-r--r--  1 root root       110 Jul 29 10:14 bin.tar.gz
drwxr-xr-x 77 root root      8192 Jul 29 08:56 etc
-rw-r--r--  1 root root  10171684 Jul 29 10:19 etc1.tar.gz
-rw-r--r--  1 root root 347209728 Jul 29 10:22 etc2.tar.gz
-rw-r--r--  1 root root  10171684 Jul 29 10:22 etc3.tar.gz


#第二种方法   使用绝对路径打包    告诉系统不要删根 


#使用绝对路径打包 

[root@BC ~]# tar  czPf  etc4.tar.gz   /etc

#使用绝对路经解压 

[root@BC ~]# tar xPf  etc4.tar.gz


[root@BC ~]# cat  /etc/services  >> /opt/services 
[root@BC ~]# ll /opt/
total 1744
drwxr-xr-x 77 root root    8192 Jul 29 08:56 etc
-rw-r--r--  1 root root     158 Jul 29 10:28 hosts
-rw-r--r--  1 root root 1340586 Jul 29 10:29 services
[root@BC ~]# tar xPf  opt.tar.gz 
[root@BC ~]# ll /opt/
total 672
drwxr-xr-x 77 root root   8192 Jul 29 08:56 etc
-rw-r--r--  1 root root    158 Jul 29 10:28 hosts
-rw-r--r--  1 root root 670293 Jul 29 09:47 services


#排除不需要打包的文件

[root@BC ~]# tar czf  etc1.tar.gz  /etc
tar: Removing leading `/\' from member names
[root@BC ~]# ll
total 9936
-rw-r--r-- 1 root root 10171949 Jul 29 10:51 etc1.tar.gz
[root@BC ~]# ll /etc/services 
-rw-r--r-- 1 root root 670293 Jun  7  2013 /etc/services
[root@BC ~]# tar  czf  etc2.tar.gz   --exclude=/etc/services   /etc
tar: Removing leading `/\' from member names
[root@BC ~]# ll
total 19740
-rw-r--r-- 1 root root 10171949 Jul 29 10:51 etc1.tar.gz
-rw-r--r-- 1 root root 10036635 Jul 29 10:52 etc2.tar.gz
[root@BC ~]# tar tf  etc2.tar.gz  |  grep  services
etc/firewalld/services/


#排除多个文件

[root@BC ~]# tar czf  etc3.tar.gz  --exclude=/etc/services  --exclude=/etc/passwd  /etc
tar: Removing leading `/\' from member names
[root@BC ~]# ll
total 29544
-rw-r--r-- 1 root root 10171949 Jul 29 10:51 etc1.tar.gz
-rw-r--r-- 1 root root 10036635 Jul 29 10:52 etc2.tar.gz
-rw-r--r-- 1 root root 10035297 Jul 29 10:54 etc3.tar.gz
[root@BC ~]# tar tf  etc3.tar.gz  | grep  -E  \'services|passwd\'
etc/security/opasswd
etc/passwd-
etc/pam.d/passwd
etc/firewalld/services/


[root@BC ~]# tar czf  etc4.tar.gz  --exclude=/etc/{services,passwd}   /etc
tar: Removing leading `/\' from member names
[root@BC ~]# ll
total 39348
-rw-r--r-- 1 root root 10171949 Jul 29 10:51 etc1.tar.gz
-rw-r--r-- 1 root root 10036635 Jul 29 10:52 etc2.tar.gz
-rw-r--r-- 1 root root 10035297 Jul 29 10:54 etc3.tar.gz
-rw-r--r-- 1 root root 10035297 Jul 29 10:55 etc4.tar.gz


[root@BC ~]# cat paichu.list
/etc/fstab
/etc/group
/etc/hosts
/etc/passwd
/etc/services
[root@BC ~]# tar czfX   etc5.tar.gz   paichu.list    /etc
tar: Removing leading `/\' from member names
[root@BC ~]# ll 
total 49152
-rw-r--r-- 1 root root 10171949 Jul 29 10:51 etc1.tar.gz
-rw-r--r-- 1 root root 10036635 Jul 29 10:52 etc2.tar.gz
-rw-r--r-- 1 root root 10035297 Jul 29 10:54 etc3.tar.gz
-rw-r--r-- 1 root root 10035297 Jul 29 10:55 etc4.tar.gz
-rw-r--r-- 1 root root 10033927 Jul 29 10:58 etc5.tar.gz
-rw-r--r-- 1 root root       59 Jul 29 10:57 paichu.list




[root@BC ~]# tar tf etc5.tar.gz  | grep  -Ew  \'fstab|group|hosts|passwd|services\'
etc/security/group.conf
etc/group-
etc/passwd-
etc/hosts.allow
etc/hosts.deny
etc/pam.d/passwd
etc/iproute2/group
etc/firewalld/services/



[root@BC ~]# tar  czf  etc6.tar.gz   --exclude-from=paichu.list   /etc
tar: Removing leading `/\' from member names
[root@BC ~]# ll
total 58952
-rw-r--r-- 1 root root 10171949 Jul 29 10:51 etc1.tar.gz
-rw-r--r-- 1 root root 10036635 Jul 29 10:52 etc2.tar.gz
-rw-r--r-- 1 root root 10035297 Jul 29 10:54 etc3.tar.gz
-rw-r--r-- 1 root root 10035297 Jul 29 10:55 etc4.tar.gz
-rw-r--r-- 1 root root 10033927 Jul 29 10:58 etc5.tar.gz
-rw-r--r-- 1 root root 10033927 Jul 29 11:01 etc6.tar.gz
-rw-r--r-- 1 root root       59 Jul 29 10:57 paichu.list

五、tar命令与find命令结合



[root@BC ~]# tar  czf  log1.tar.gz   `find  /var/log/  -type f  -name "*.log"`
tar: Removing leading `/\' from member names
[root@BC ~]# tar  czf  log2.tar.gz   $(find  /var/log/  -type f  -name "*.log")
tar: Removing leading `/\' from member names
[root@BC ~]# find  /var/log/  -type f  -name "*.log"  -exec  tar czf  log3.tar.gz  {}  \;
tar: Removing leading `/\' from member names
tar: Removing leading `/\' from member names
tar: Removing leading `/\' from member names
tar: Removing leading `/\' from member names
tar: Removing leading `/\' from member names
tar: Removing leading `/\' from member names
tar: Removing leading `/\' from member names
tar: Removing leading `/\' from member names
tar: Removing leading `/\' from member names
tar: Removing leading `/\' from member names
tar: Removing leading `/\' from member names
tar: Removing leading `/\' from member names
tar: Removing leading `/\' from member names
tar: Removing leading `/\' from member names
tar: Removing leading `/\' from member names
tar: Removing leading `/\' from member names
tar: Removing leading `/\' from member names
tar: Removing leading `/\' from member names
tar: Removing leading `/\' from member names
tar: Removing leading `/\' from member names
tar: Removing leading `/\' from member names
tar: Removing leading `/\' from member names
tar: Removing leading `/\' from member names
tar: Removing leading `/\' from member names
tar: Removing leading `/\' from member names
tar: Removing leading `/\' from member names
[root@BC ~]# 
[root@BC ~]# find  /var/log/  -type f  -name "*.log"  | xargs  tar czf   log4.tar.gz  
tar: Removing leading `/\' from member names



[root@BC ~]# ll
total 916
-rw-r--r-- 1 root root 309155 Jul 29 11:09 log1.tar.gz
-rw-r--r-- 1 root root 309155 Jul 29 11:09 log2.tar.gz
-rw-r--r-- 1 root root    356 Jul 29 11:10 log3.tar.gz
-rw-r--r-- 1 root root 309155 Jul 29 11:10 log4.tar.gz

[root@BC ~]# tar tf  log1.tar.gz   
var/log/tuned/tuned.log
var/log/audit/audit.log
var/log/anaconda/anaconda.log
var/log/anaconda/X.log
var/log/anaconda/program.log
var/log/anaconda/packaging.log
var/log/anaconda/storage.log
var/log/anaconda/ifcfg.log
var/log/anaconda/ks-script-3PCKae.log
var/log/anaconda/journal.log
var/log/boot.log
var/log/vmware-vmsvc.log
var/log/vmware-network.8.log
var/log/vmware-network.5.log
var/log/vmware-network.2.log
var/log/vmware-network.7.log
var/log/vmware-network.4.log
var/log/vmware-network.1.log
var/log/test.log
var/log/yum.log
var/log/vmware-network.9.log
var/log/nginx/error.log
var/log/nginx/access.log
var/log/vmware-network.6.log
var/log/vmware-network.3.log
var/log/vmware-network.log
[root@BC ~]# tar tf  log3.tar.gz   
var/log/vmware-network.log



当使用-exec时,  把find查找的文件是进行一个个赋值给{}的  

xargs   把find命令查找出来的文件统一的赋值给了后面 


六、date命令



#显示系统时间 


[root@BC ~]# date
Wed Jul 29 11:19:19 CST 2020


[root@BC ~]# date  +%Y		#世纪
2020
[root@BC ~]# date  +%y		#年代
20
[root@BC ~]# date  +%m		#月份
07
[root@BC ~]# date  +%d		#日期 
29

[root@BC ~]# date  +%Y-%m-%d
2020-07-29


[root@BC ~]# date +%F		#显示日期 
2020-07-29


[root@BC ~]# date  +%y-%m-%d
20-07-29


[root@BC ~]# date +%H		#时
11
[root@BC ~]# date +%M		#分
23
[root@BC ~]# date +%S		#秒
24
[root@BC ~]# date
Wed Jul 29 11:23:28 CST 2020
[root@BC ~]# date +%H:%M:%S
11:23:43

[root@BC ~]# date +%T		#显示时间 
11:24:08

[root@BC ~]# date +%F-%T
2020-07-29-11:24:34

[root@BC ~]# date +%w		#周几
3
[root@BC ~]# date +%W		#今年第几周 
30


[root@BC ~]# date +%s		#距离1970年1月1日0分0秒过来多少秒 
1595993167


选项:

	-d		#自定义日期 
	
	
	-s		#修改日期   时间 
	
	
	
[root@BC ~]# date +%F
2020-07-29
[root@BC ~]# date  -d  "-1 day"  +%F
2020-07-28

[root@BC ~]# date  -d  "+1 day"  +%F
2020-07-30
[root@BC ~]# date  -d  "+1 month"  +%F
2020-08-29
[root@BC ~]# date  -d  "-1 month"  +%F
2020-06-29
[root@BC ~]# date  -d  "-1 year"  +%F
2019-07-29
[root@BC ~]# date  -d  "+1 year"  +%F
2021-07-29


[root@BC ~]# date
Wed Jul 29 11:31:42 CST 2020
[root@BC ~]# date  -s  20200730
Thu Jul 30 00:00:00 CST 2020
[root@BC ~]# date
Thu Jul 30 00:00:08 CST 2020
[root@BC ~]# date  -s  2020/07/29
Wed Jul 29 00:00:00 CST 2020
[root@BC ~]# date
Wed Jul 29 00:00:02 CST 2020
[root@BC ~]# date  -s  11:32:30
Wed Jul 29 11:32:30 CST 2020
[root@BC ~]# date
Wed Jul 29 11:32:31 CST 2020
[root@BC ~]# date  -s  "20200730  11:00:00"
Thu Jul 30 11:00:00 CST 2020


#时间同步

ntpdate

[root@BC ~]# yum install ntpdate  -y 


向时间服务器进行同步时间 

ntp.aliyun.com   

ntp1.aliyun.com   ....   ntp7.aliyun.com  

[root@BC ~]# ntpdate   ntp.aliyun.com
29 Jul 11:36:33 ntpdate[31370]: step time server 203.107.6.88 offset -84415.000442 sec
[root@BC ~]# date
Wed Jul 29 11:36:35 CST 2020
[root@BC ~]# date  -s  20200730
Thu Jul 30 00:00:00 CST 2020
[root@BC ~]# ntpdate   ntp.aliyun.com
29 Jul 11:36:56 ntpdate[31392]: step time server 203.107.6.88 offset -44591.413933 sec
[root@BC ~]# date
Wed Jul 29 11:37:02 CST 2020

七、第一次考试题讲解

基础阶段-第一次考试题

1.  创建/root/user /root/logs  /root/conf  /root/html目录,请用一条命令实现。

[root@BC ~]#mkdir /root/{user,logs,conf,html}

2. Linux关机重启及注销的命令有哪些 (每种至少两个)?
关机:
shutdown -h now
poweroff 

重启:
reboot
shutdown -r

注销:
logout
exit

3. Linux中系统网卡的配置文件路径什么?
[root@BC ~]#vi /etc/sysconfig/network-scripts/ifcfg-eth0

4. 你知道哪些bash的快捷键呢?请把他写出来,并解释一下他的作用?(至少8个)

ctrl+a    	从当前光标位置跳到行首
ctrl+e		从当前光标位置跳到行尾	
ctrl+u		删除从当前光标位置到行首的内容
ctrl+k		删除从当前光标位置到行首的内容
ctrl+l		清屏
ctrl+w		删除当前光标往前的一串字符
ctrl+方向键   光标从当前位置向左或者向右移动一串字符

5. 网络类型都有哪几种?这几种模式,每个的含义你是怎么理解的?
(1)NAT 网络地址转换  

	NAT模式中的虚拟机是通过宿主机(物理电脑)进行上网和交换数据的  
	
	使用到网卡是VMnet8      VMware NAT Service服务就充当了一个路由器,虚拟机上网的时候首先会找到这个路由器,进行了一个地址转换,伪装了一个跟宿主机一样的IP地址   进行上网,  网络上的数据将返回给VMnet8这个网卡,VMnet8这块网卡会把数据返回给虚拟机  

	好处: 外面的网络可以随便更换,虚拟机的网络不变,IP地址也不会跟宿主机的IP地址冲突,IP的地址范围也广,设置一个网段  
	
	坏处: 上网需要经过一个中介  代理  

(2)桥接模式  Bridge  

	通过宿主机网卡架设了一座桥 网桥    直接进入到了实际的网络环境中    
	
	虚拟机的IP地址跟宿主机的IP地址在一个网段范围之内,容易跟宿主机IP发生冲突 

	IP地址会随着外面网络的改变而改变,不能使用一个固定的IP地址,IP少 

	优点: 上网不需要经过宿主机,只需要通过VMnet0 网卡 
	
	桥接模式中的虚拟机跟宿主机的层级是一样的
	

(3)仅主机模式  Host-only

	仅能跟宿主机进行连接,没有办法上网的   VMnet1


6. 找出系统中文件名以oldboy开头的所有文件,要求只能查找到/目录的前三级目录。

[root@BC ~]#find  / -type f  -maxdepth  3  -name  "oldboy*"

7. Linux的发行版本都有哪些?(至少6个)

  Redhat    红帽   开源但是收费         
  
  CentOS    学习使用      去掉了Redhat的收费和logo部分编译而成的系统    开源 免费  企业 首选      
              
  Fedora    新功能    想使用新功能  是Redhat的测试版本  预发布版         
    
  Ubuntu    乌班图    桌面系统   开发人员使用的多        
    
  SUSE     数据库高级服务及电子邮件    德国使用的多    收费     OpenSUSE       
    
  Debian、FreeBSD    对安全性要求比较高           中文      麒麟  红旗          

8. 怎样清除你所执行过的命令记录?

[root@BC~]#history  -c

[root@BC~]#history  -w

9. 说明下面这几个文件的作用: 

/etc/resolv.conf、		#本地DNS配置文件

/etc/hosts、				#域名跟IP地址的映射关系

/var/log/messages、		#系统日志

/var/log/secure。		#用户登录日志

10. 如何快速返回上一次所在的目录?

[root@BC~]#cd -

11. 欲把当前目录下的file1.txt复制为file2.txt 命令是,如果已存在该名称的文件名,怎么执行不会提示是否覆盖?

[root@BC~]#\cp file1.txt file2.txt

12. 假设超级用户root当前所在目录为:/usr/local,键入cd命令后,用户当前所在目录为?

/root

13. 创建/data/test目录,已知/data目录不存在,请给出命令?

[root@BC~]#mkdir -p /data/test

14. 在/root/目录下创建文件test.txt  test.log  test.sh  test.conf  请用一条命令创建。

[root@BC~]#touch test{txt,log,sh,conf}

15.将/etc/passwd文件中的第一列和第七列的位置进行调换,以:号为分隔符。
[root@web01 ~]# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash

[root@BC ~]# awk  -F:  \'{a=$1;$1=$NF;$NF=a;print}\'  passwd  | tr  \' \'  ":"
/bin/bash:x:0:0:root:/root:root
/sbin/nologin:x:1:1:bin:/bin:bin

[root@BC ~]# sed  -r  \'s#(.*)(:x.*:)(.*)#\3\2\1#g\'  passwd 
/bin/bash:x:0:0:root:/root:root
/sbin/nologin:x:1:1:bin:/bin:bin
/sbin/nologin:x:2:2:daemon:/sbin:daemon
/sbin/nologin:x:3:4:adm:/var/adm:adm
/sbin/nologin:x:4:7:lp:/var/spool/lpd:lp

16. 如果我在当前在/目录下,之后执行了以下操作,请告诉我,最后我所在的目录位置?
cd /etc/sysconfig/   
cd ..
cd ..
cd -
cd ~
cd ..   /   /home
cd -

/home/xx   /root  当前用户的家目录  



17. 查看oldboy.txt文件中的内容,并显示行号。(至少两种方法)
[root@BC~]#cat -n oldboy.txt

[root@BC~]#grep -n \'.*\' oldboy.xt

18. 显示/etc/services文件的第11行到第20行的内容(至少两种方法)?

[root@BC~]#head 20 /etc/services |tail 

[root@BC~]#grep -n \'.*\' /etc/services |grep -wA 9 \'^11\'

19. 已知文件123.txt内容如下,请过滤出不包含oldboy字符串的命令
test
OLDBOY
online
oldboy
online
oldboyoldboy

[root@BC~]#grep -v \'oldboy\' 123.txt

20. 接上题,要求过滤出文件123.txt中包含online字符串的行,并统计过滤出来的内容共有多少行。

[root@BC~]#grep   -c   \'online\'   123.txt


21. 调试系统服务时,希望能实时查看系统日志/var/log/messages的更新,如何做?

[root@BC~]#tail -f /var/log/messages

22. 如何删除一个非空目录/opt?

[root@BC~]#rm -rf /opt

23. 统计/etc/passwd文件一共有多少行?(两种方法)

[root@BC~]#grep -c \'.*\' /etc/passswd

[root@BC~]#wc -l /etc/passwd

24. 已知软件包的链接地址为http://nginx.org/download/nginx-1.16.0.tar.gz,要求将其下载且下载之后的软件包名为nginx.tar.gz,如何执行命令。

[root@BC~]#wget -O  nginx.tar.gz  http://nginx.org/download/nginx-1.16.0.tar.gz

[root@BC~]#curl  -o  nginx.tar.gz  http://nginx.org/download/nginx-1.16.0.tar.gz


25. 查找ifconfig命令的绝对路径在哪里?(两种方法)

[root@BC~]#which ifconfig

[root@BC~]#type -ap ifconfig

26. 统计文件/etc/services的字节数?(两种方法)

[root@BC~]#wc -c /etc/services

[root@BC~]#ll /etc/services

[root@BC~]#du -sh /etc/services

27. 执行下面的命令echo "Im qiuzengjia , is QQ 1176494252" >file.txt,要求取出该文件中的姓名和QQ号。(注意逗号前面有一个空格)(两种方法)。

[root@BC~]#cut  -d " "  -f2,6   file.txt

28.执行如下命令,要求去除重复的行,并统计出现的次数?
cat > file.txt <<EOF
abc
123
abc
123
def
EOF

[root@BC~]#sort  file.txt  | uniq  -c  

29. 过滤出/etc/passwd以nologin结尾的内容,并统计行数。

[root@BC~]#grep  -c  \'nologin$\'  /etc/passwd  

[root@BC~]#sed  -n  \'/nologin$/p\'  /etc/passwd | wc  -l

30. 使用cat和echo命令把oldboy oldgirl student三行内容(每个字符串是一行内容)写入到test.txt文件中

[root@BC~]#echo  -e  "oldboy\noldgirl\nstudent"  >>test.txt

31. 以“:”为分隔符,取出/etc/passwd第一行的最后一列的内容?(两种方法)

[root@BC~]#awk  -F:  \'NR==1{print $NF}\'  /etc/passwd

32.已知执行ifconfig  eth0 结果如下:要求取出IP地址
[root@qiudao ~]# ifconfig  eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.19.186.20  netmask 255.255.240.0  broadcast 172.19.191.255	#前面有8个空格
        ether 00:16:3e:1a:18:44  txqueuelen 1000  (Ethernet)
        
[root@BC~]#ifconfig  eth0  | awk  \'NR==2{print $2}\'       
        
33. 删除test.txt文件中的第10行到20行的内容。(两种方法)

[root@BC~]#sed  \'10,20d\'		test.txt

[root@BC~]#awk  \'NR < 10  ||  NR > 20 \'  test.txt

34. 取出test.txt文件中的第9行和第11行的内容(两种方法)

[root@BC~]#sed  -n  \'9p;11p\'  test.txt

[root@BC~]#awk    \'NR==9;NR=11\'  test.txt

35.统计nginx访问日志access.log中每个访问ip出现次数,显示最多的10个。(已知ip在第一列)

[root@BC~]#awk  \'{print $1}\'  access.log | sort  | uniq  -c  | sort -rn  | head 

36.过滤出/etc/services 文件包含3306或1521两数字所在的行的内容。(两种方法)

[root@BC~]#grep  -E  \'3306|1521\'   /etc/services

[root@BC~]#sed  -nr  \'/3306|1521/p\'  /etc/services

[root@BC~]#awk  \'/3306|1521/\'  /etc/services

37. 排除/etc/ssh/sshd_config文件中的空行和注释行(以#开头的就是注释行)(两种方法)

[root@BC~]#grep  -Ev  \'^$|^#\'  /etc/ssh/sshd_config

[root@BC~]#sed  -r  \'/^$|^#/d\'   /etc/ssh/sshd_config

[root@BC~]#awk  \'!/^$|^#/\'   /etc/ssh/sshd_config

38. 将/etc/passwd文件中第一行到第五行的root替换为admin?

[root@BC~]#sed   -i  \'1,5s#root#admin#g\'   /etc/passwd

39. 在test.txt文件末尾插入test。(两种方法)

[root@BC~]#echo "test"  >>  test.txt

[root@BC~]#sed  \'$atest\'  test.txt

40. 写出redhat 中,配置网卡及dns 的配置文件是什么?并说明区别?
配置文件:
网卡   /etc/sysconfig/network-scripts/ifcfg-eth0
dns	  /etc/resolv.conf 

区别:配置网卡文件可以配置dns,但dns配置文件不可以配置网卡
配置网卡配置dns需要重启网卡,dns配置完成立即生效。

41. 已知sort.log文件内容如下,请根据文件内容的第二列进行倒序排序。?
cat >>sort.log<<\'EOF\'
218.65.30.25 68652
218.65.30.53 34326
218.87.109.154 21201
112.85.42.103 18065
112.85.42.99 17164
218.87.109.151 17163
218.87.109.150 17163
218.65.30.61 17163
218.65.30.126 17163
218.65.30.124 17163
EOF

[root@BC~]#sort  -rnk2  sort.log

42. 已知文件test.txt内容如下,请给出输出test.txt文件内容时,不包含oldboy字符串的命令。
test
qiudao
oldboy

[root@BC~]#grep -v \'oldboy\' test.txt
 
43. 找到/backup目录下所有后缀名为.txt的文件?

[root@BC~]#find  /backup   -type f  -name "*.txt"

44. 把/etc/passwd文件中的:替换成# (两种方法)

[root@BC~]#tr  \':\'  \'#\'   < /etc/passwd

[root@BC~]#sed  \'s/:/#/g\'  /etc/passwd

45. rm是个危险的命令,要求使用命令rm删除文件时提示“rm command no bny”,怎么实现?

[root@BC~]#alias  rm=\'echo  rm command no bny\'

46. 取出下列文件的权限如:0644 ?(两种方法)
[root@BC ~]# stat  123.txt 
  File: ‘123.txt’
  Size: 44        	Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d	Inode: 67160518    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-07-27 16:55:57.055131412 +0800
Modify: 2019-07-27 16:55:50.098131214 +0800
Change: 2019-07-27 16:55:50.101131214 +0800

[root@BC~]#stat -c %a 123.txt

[root@BC~]#stat 123.txt |sed -nr \'4s#(.*: \()(.*)(/-.*$)#\2#gp\'

[root@BC~]#stat 123.txt | awk -F \'[(/]\' \'NR==4{print $2}\' 
 
47. 分别写出GNU和GPL是什么?

GPL 
    
    通用公共许可协议   开源许可协议            
    
    *的,可任意传播的
    
    可任意修改的,但是必须将修改之后的源代码发布出来  
GNU
    
    是FSF下面的一个项目    全称  GNU is  not Unix       
    
    优秀的软件: Emacs编辑器    gcc编译软件   bash命令解释器    gawk开发语言    hurd内核 还在研发

48. 把/etc/passwd文件中的oldboy替换成oldgirl。

[root@BC~]#sed  \'s#oldboy#oldgirl#g\'   /etc/passwd
  
49.显示/proc/meminfo文件中以s开头的行(忽略大小写)(两种方法)

[root@BC~]#grep  -i  \'^s\'    /proc/meminfo

[root@BC~]#sed  -nr  \'/^s|^S/p\'   /proc/meminfo

[root@BC~]#awk  \'/^s|^S/\'  /proc/meminfo

50.翻译题
01).command not found  				#命令找不到			  
02).No such file or directory  		 #没有这个文件或者目录			   
03).File exists  					#文件已经存在					
04).Is a directory					#这是个目录


2020年07月30日上午(day20)

一、RPM软件包概述


Redhat  Package  Manager   软件包管理  


windows     .exe

Linux		.rpm


软件包的含义 

ant-antunit-1.2-10.el7.noarch.rpm     

antlr-C++-2.7.7-30.el7.x86_64.rpm


ant-antunit			#软件包名称  

1.2					#软件的版本 

10					#软件包编译发布的次数 

el7					#适用于7系列的操作系统 

el6					#适用于6系列操作系统

noarch				#适用于任何cpu架构  


x86_64				#硬件平台  位数  

.rpm				#包的后缀名 


软件包的安装方式 


rpm包		预先编译好的,安装简单  		版本过低  

源码包		   手动编译,安装繁琐		   版本随意 

二进制包	   绿色软件 解压即用           无法修改源代码   


软件包的获取方式 

本地的ISO镜像     需要挂载使用 

联网下载  		

仓库获取 yum源  


二、rpm软件包管理工具


命令   管理软件包   

#挂载镜像


[root@BC ~]# ll /dev/sr0 
brw-rw---- 1 root cdrom 11, 0 Jul 27 16:29 /dev/sr0
[root@BC ~]# ll /dev/cdrom 
lrwxrwxrwx 1 root root 3 Jul 27 16:29 /dev/cdrom -> sr0
[root@BC ~]# mount   /dev/sr0   /mnt/
mount: /dev/sr0 is write-protected, mounting read-only
[root@BC ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        98G  1.5G   97G   2% /
devtmpfs        980M     0  980M   0% /dev
tmpfs           991M     0  991M   0% /dev/shm
tmpfs           991M  9.6M  981M   1% /run
tmpfs           991M     0  991M   0% /sys/fs/cgroup
/dev/sda1       497M  120M  378M  25% /boot
tmpfs           199M     0  199M   0% /run/user/0
/dev/sr0        4.3G  4.3G     0 100% /mnt

[root@BC ~]# ll  /mnt/Packages/  | wc -l
4023


#安装

	-i		#安装 
	
	-v		#显示安装的过程
	
	-h		#显示安装的进度条 
	
	-ivh

[root@BC ~]# rpm  -ivh  /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:tree-1.6.0-10.el7                ################################# [100%]


#删除 移除一个软件包

[root@BC ~]# rpm  -e  tree


#rpm安装太需要依赖了,不会自动寻找依赖,需要手动下载依赖    不建议使用  

#安装httpd  报错
[root@BC ~]# rpm  -ivh  /mnt/Packages/httpd-2.4.6-88.el7.centos.x86_64.rpm 
error: Failed dependencies:
	/etc/mime.types is needed by httpd-2.4.6-88.el7.centos.x86_64
	httpd-tools = 2.4.6-88.el7.centos is needed by httpd-2.4.6-88.el7.centos.x86_64
	libapr-1.so.0()(64bit) is needed by httpd-2.4.6-88.el7.centos.x86_64
	libaprutil-1.so.0()(64bit) is needed by httpd-2.4.6-88.el7.centos.x86_64
	
#根据提示安装相关依赖  报错
[root@BC ~]# rpm  -ivh  /mnt/Packages/httpd-tools-2.4.6-88.el7.centos.x86_64.rpm 
error: Failed dependencies:
	libapr-1.so.0()(64bit) is needed by httpd-tools-2.4.6-88.el7.centos.x86_64
	libaprutil-1.so.0()(64bit) is needed by httpd-tools-2.4.6-88.el7.centos.x86_64
	
#查找相关依赖包

[root@BC ~]# ll  /mnt/Packages/  | grep  apr
-rw-rw-r-- 1 root root   105728 Nov 29  2017 apr-1.4.8-3.el7_4.1.x86_64.rpm
-rw-rw-r-- 1 root root   192652 Nov 29  2017 apr-devel-1.4.8-3.el7_4.1.x86_64.rpm
-rw-rw-r-- 1 root root    94132 Jul  4  2014 apr-util-1.5.2-6.el7.x86_64.rpm
-rw-rw-r-- 1 root root    78072 Jul  4  2014 apr-util-devel-1.5.2-6.el7.x86_64.rpm
-rw-rw-r-- 1 root root   854420 Nov 12  2018 haproxy-1.5.18-8.el7.x86_64.rpm

#安装相关依赖
[root@BC ~]# rpm -ivh  /mnt/Packages/apr-1.4.8-3.el7_4.1.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:apr-1.4.8-3.el7_4.1              ################################# [100%]
[root@BC ~]# rpm -ivh  /mnt/Packages/apr-util-1.5.2-6.el7.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:apr-util-1.5.2-6.el7             ################################# [100%]
   
#尝试安装httpd-tools

[root@BC ~]# rpm  -ivh  /mnt/Packages/httpd-tools-2.4.6-88.el7.centos.x86_64.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:httpd-tools-2.4.6-88.el7.centos  ################################# [100%]
   
#再次安装httpd  报错 
[root@BC ~]# rpm  -ivh  /mnt/Packages/httpd-2.4.6-88.el7.centos.x86_64.rpm 
error: Failed dependencies:
	/etc/mime.types is needed by httpd-2.4.6-88.el7.centos.x86_64


#搜索相关文件的依赖包
[root@BC ~]# yum  provides  /etc/mime.types
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.ustc.edu.cn
 * epel: fedora.cs.nctu.edu.tw
 * extras: mirrors.aliyun.com
 * updates: mirrors.ustc.edu.cn
mailcap-2.1.41-2.el7.noarch : Helper application and MIME type associations for file types
Repo        : base
Matched from:
Filename    : /etc/mime.types

#安装依赖包
[root@BC ~]# rpm  -ivh  /mnt/Packages/mailcap-2.1.41-2.el7.noarch.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:mailcap-2.1.41-2.el7             ################################# [100%]
   
#最终安装成功 

[root@BC ~]# rpm  -ivh  /mnt/Packages/httpd-2.4.6-88.el7.centos.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:httpd-2.4.6-88.el7.centos        ################################# [100%]
[root@BC ~]# 



#联网安装软件包 

[root@BC ~]# rpm  -ivh  https://mirrors.aliyun.com/centos/7.8.2003/os/x86_64/Packages/tree-1.6.0-10.el7.x86_64.rpm
Retrieving https://mirrors.aliyun.com/centos/7.8.2003/os/x86_64/Packages/tree-1.6.0-10.el7.x86_64.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:tree-1.6.0-10.el7                ################################# [100%]


#升级安装 

-U		#升级  

[root@BC ~]# rpm  -ivh  https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.0-2.el7.x86_64.rpm
Retrieving https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.0-2.el7.x86_64.rpm
warning: /var/tmp/rpm-tmp.jseg5b: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:zabbix-agent-4.0.0-2.el7         ################################# [100%]

[root@BC ~]# zabbix_agentd -V
zabbix_agentd (daemon) (Zabbix) 4.0.0
Revision 85308 1 October 2018, compilation time: Oct  1 2018 08:41:36

Copyright (C) 2018 Zabbix SIA
License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it according to
the license. There is NO WARRANTY, to the extent permitted by law.

#升级安装
[root@BC ~]# rpm  -Uvh  https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/x86_64/zabbix-agent-4.4.0-1.el7.x86_64.rpm
Retrieving https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/x86_64/zabbix-agent-4.4.0-1.el7.x86_64.rpm
warning: /var/tmp/rpm-tmp.e9rZWk: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:zabbix-agent-4.4.0-1.el7         ################################# [ 50%]
Cleaning up / removing...
   2:zabbix-agent-4.0.0-2.el7         ################################# [100%]
[root@BC ~]# zabbix_agentd -V
zabbix_agentd (daemon) (Zabbix) 4.4.0
Revision cfac660b25 7 October 2019, compilation time: Oct  7 2019 11:26:17

Copyright (C) 2019 Zabbix SIA
License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it according to
the license. There is NO WARRANTY, to the extent permitted by law.

This product includes software developed by the OpenSSL Project
for use in the OpenSSL Toolkit (http://www.openssl.org/).

Compiled with OpenSSL 1.0.1e-fips 11 Feb 2013
Running with OpenSSL 1.0.1e-fips 11 Feb 2013

#查询指定的软件包是否安装

[root@BC ~]# rpm  -q  tree
tree-1.6.0-10.el7.x86_64
[root@BC ~]# rpm  -q  ifconfig
package ifconfig is not installed
[root@BC ~]# rpm  -q  net-tools
net-tools-2.0-0.25.20131004git.el7.x86_64

#显示所有已经安装的软件包 

[root@BC ~]# rpm -qa  | grep  tree
tree-1.6.0-10.el7.x86_64


#查询软件包列表信息
[root@BC ~]# rpm  -ql  httpd
/etc/httpd
/etc/httpd/conf
/etc/httpd/conf.d
/etc/httpd/conf.d/README
/etc/httpd/conf.d/autoindex.conf
/etc/httpd/conf.d/userdir.conf
/etc/httpd/conf.d/welcome.conf

#查询相关配置文件信息
[root@BC ~]# rpm  -qc  httpd
/etc/httpd/conf.d/autoindex.conf
/etc/httpd/conf.d/userdir.conf
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf.modules.d/00-base.conf
/etc/httpd/conf.modules.d/00-dav.conf
/etc/httpd/conf.modules.d/00-lua.conf
/etc/httpd/conf.modules.d/00-mpm.conf
/etc/httpd/conf.modules.d/00-proxy.conf
/etc/httpd/conf.modules.d/00-systemd.conf
/etc/httpd/conf.modules.d/01-cgi.conf
/etc/httpd/conf/httpd.conf
/etc/httpd/conf/magic
/etc/logrotate.d/httpd
/etc/sysconfig/htcacheclean
/etc/sysconfig/httpd

#查询软件包本身信息

[root@BC ~]# rpm  -qi  httpd
Name        : httpd
Version     : 2.4.6
Release     : 88.el7.centos
Architecture: x86_64
Install Date: Thu 30 Jul 2020 09:03:08 AM CST
Group       : System Environment/Daemons
Size        : 9817309
License     : ASL 2.0
Signature   : RSA/SHA256, Mon 12 Nov 2018 10:28:53 PM CST, Key ID 24c6a8a7f4a80eb5
Source RPM  : httpd-2.4.6-88.el7.centos.src.rpm
Build Date  : Mon 05 Nov 2018 09:48:57 AM CST
Build Host  : x86-01.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://httpd.apache.org/
Summary     : Apache HTTP Server
Description :
The Apache HTTP Server is a powerful, efficient, and extensible
web server.

#使用绝对路径查询命令属于哪个软件包   前提系统已经安装这个软件 

[root@BC ~]# rpm  -qf  `which  ping`
iputils-20160308-10.el7.x86_64
[root@BC ~]# which  ping
/usr/bin/ping
[root@BC ~]# rpm -qf  /usr/bin/ping
iputils-20160308-10.el7.x86_64


总结:

	-ivh		#安装
	
	-Uvh		#升级
	
	-e			#卸载
	
	-q			#查询指定软件包 
	
	-qa			#查询所有已经安装的软件包
	
	-qi			#查询软件包本身相关信息
	
	-ql			#查询软件包列表信息
	
	-qc			#查询软件包相关文件
	
	-qf			#查询命令属于哪个软件包  必须是绝对路径  前提本地要已经存在这个软件包 
	
	

三、yum管理工具


yum源   yum仓库  


[root@BC ~]# ll  /etc/yum.repos.d/
total 40
-rw-r--r-- 1 root root 1664 Nov 23  2018 CentOS-Base.repo
-rw-r--r-- 1 root root 1309 Nov 23  2018 CentOS-CR.repo
-rw-r--r-- 1 root root  649 Nov 23  2018 CentOS-Debuginfo.repo
-rw-r--r-- 1 root root  314 Nov 23  2018 CentOS-fasttrack.repo
-rw-r--r-- 1 root root  630 Nov 23  2018 CentOS-Media.repo
-rw-r--r-- 1 root root 1331 Nov 23  2018 CentOS-Sources.repo
-rw-r--r-- 1 root root 5701 Nov 23  2018 CentOS-Vault.repo
-rw-r--r-- 1 root root  951 Oct  3  2017 epel.repo
-rw-r--r-- 1 root root 1050 Oct  3  2017 epel-testing.repo


怎么获取yum源  

本地的ISO镜像   

yum源仓库  

联网的方式下载 

本地yum仓库 


yum的种类  

base		#基础源 

epel		#扩展源  

软件官方源     # nginx   zabbix   docker  



阿里源  

清华源

中科大  

163源 


#更新源  

[root@BC ~]# rm -rf  /etc/yum.repos.d/*

[root@BC ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo


[root@BC ~]# curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo



[root@BC ~]# ll /etc/yum.repos.d/
total 8
-rw-r--r-- 1 root root 2523 Jul 30 09:51 CentOS-Base.repo
-rw-r--r-- 1 root root  664 May 11  2018 epel.repo


#显示可用的yum仓库

[root@BC ~]# yum  repolist   
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
repo id                                    repo name                                                               status
!base/7/x86_64                             CentOS-7 - Base - mirrors.aliyun.com                                    10,070
!epel/x86_64                               Extra Packages for Enterprise Linux 7 - x86_64                          13,422
!extras/7/x86_64                           CentOS-7 - Extras - mirrors.aliyun.com                                     412
!updates/7/x86_64                          CentOS-7 - Updates - mirrors.aliyun.com                                    900
repolist: 24,804


#显示所有的

[root@BC ~]# yum  repolist   all
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
repo id                             repo name                                                             status
!base/7/x86_64                      CentOS-7 - Base - mirrors.aliyun.com                                  enabled: 10,070
centosplus/7/x86_64                 CentOS-7 - Plus - mirrors.aliyun.com                                  disabled
contrib/7/x86_64                    CentOS-7 - Contrib - mirrors.aliyun.com                               disabled
!epel/x86_64                        Extra Packages for Enterprise Linux 7 - x86_64                        enabled: 13,422
epel-debuginfo/x86_64               Extra Packages for Enterprise Linux 7 - x86_64 - Debug                disabled
epel-source                         Extra Packages for Enterprise Linux 7 - x86_64 - Source               disabled
!extras/7/x86_64                    CentOS-7 - Extras - mirrors.aliyun.com                                enabled:    412
!updates/7/x86_64                   CentOS-7 - Updates - mirrors.aliyun.com                               enabled:    900
repolist: 24,804


[root@BC ~]# yum  install  -y  yum-utils


[root@BC ~]# yum-config-manager    --disable  epel


[root@BC ~]# yum  repolist  all
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
repo id                             repo name                                                             status
base/7/x86_64                       CentOS-7 - Base - mirrors.aliyun.com                                  enabled: 10,070
centosplus/7/x86_64                 CentOS-7 - Plus - mirrors.aliyun.com                                  disabled
contrib/7/x86_64                    CentOS-7 - Contrib - mirrors.aliyun.com                               disabled
epel/x86_64                         Extra Packages for Enterprise Linux 7 - x86_64                        disabled
epel-debuginfo/x86_64               Extra Packages for Enterprise Linux 7 - x86_64 - Debug                disabled
epel-source                         Extra Packages for Enterprise Linux 7 - x86_64 - Source               disabled
extras/7/x86_64                     CentOS-7 - Extras - mirrors.aliyun.com                                enabled:    412
updates/7/x86_64                    CentOS-7 - Updates - mirrors.aliyun.com                               enabled:    900
repolist: 11,382

[root@BC ~]# yum-config-manager    --enable  epel



#软件包管理 

#显示所有可安装的包 

[root@BC ~]# yum  list

#显示系统中已经安装的包
[root@BC ~]# yum  list  installed 


[root@BC ~]# yum  list  | grep  ^tree
tree.x86_64                               1.6.0-10.el7                 @base    
treelayout.noarch                         1.0.3-4.el7                  epel     
treelayout-demo.noarch                    1.0.3-4.el7                  epel     
treelayout-javadoc.noarch                 1.0.3-4.el7                  epel     

#显示可更新的包

[root@BC ~]# yum  check-update

[root@BC ~]# yum    list   updates  


[root@BC ~]# rpm  -qa  httpd
httpd-2.4.6-88.el7.centos.x86_64

#更新某个软件包 

[root@BC ~]# yum   update  httpd  -y


[root@BC ~]# rpm  -qa  httpd
httpd-2.4.6-93.el7.centos.x86_64


#安装软件包


[root@BC ~]# yum  install   tree		#交互式  麻烦  


[root@BC ~]# yum  install   tree   -y		#免交互


#卸载  

[root@BC ~]# yum  remove   tree  -y

[root@BC ~]# yum  erase   tree  -y


#联网安装软件包 

[root@BC ~]# yum  install  -y  https://mirrors.aliyun.com/centos/7.8.2003/os/x86_64/Packages/tree-1.6.0-10.el7.x86_64.rpm


#本地安装 

[root@BC ~]# yum localinstall  -y  /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm 



[root@BC ~]# systemctl  start httpd
[root@BC ~]# systemctl  status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2020-07-30 10:36:26 CST; 6s ago


[root@BC ~]# rm -f /etc/httpd/conf/httpd.conf
[root@BC ~]# systemctl  restart httpd
Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.

#重新安装 

[root@BC ~]# yum  reinstall  -y  httpd


#搜索 

[root@BC ~]# yum search  ifconfig
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
================================================= N/S matched: ifconfig =================================================
python36-ifcfg.noarch : Python cross-platform network interface discovery (ifconfig/ipconfig/ip)

  Name and summary matches only, use "search all" for everything.

#联网搜索命令属于哪个软件包 

[root@BC ~]# yum  provides   ifconfig
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
epel/x86_64/filelists_db                                                                          |  12 MB  00:00:04     
net-tools-2.0-0.25.20131004git.el7.x86_64 : Basic networking tools
Repo        : @base
Matched from:
Filename    : /usr/sbin/ifconfig

#查看软件包相关信息 

[root@BC ~]# yum  info  tree
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
Installed Packages
Name        : tree
Arch        : x86_64
Version     : 1.6.0
Release     : 10.el7
Size        : 87 k
Repo        : installed
Summary     : File system tree viewer
URL         : http://mama.indstate.edu/users/ice/tree/
License     : GPLv2+
Description : The tree utility recursively displays the contents of directories in a
            : tree-like format.  Tree is basically a UNIX port of the DOS tree
            : utility.

#组包的安装

[root@BC ~]# yum  groups  install   Python

#组包的卸载

[root@BC ~]# yum  groups  remove   Python

#yum缓存 

#清除包的缓存 

[root@BC ~]# yum   clean  packages  
Loaded plugins: fastestmirror
Cleaning repos: base epel extras updates
0 package files removed

#清除插件的缓存 

[root@BC ~]# yum   clean  plugins
Loaded plugins: fastestmirror
Cleaning repos: base epel extras updates
Cleaning up list of fastest mirrors


#清除所有缓存 

[root@BC ~]# yum   clean  all
Loaded plugins: fastestmirror
Cleaning repos: base epel extras updates

#生成缓存 

[root@BC ~]# yum  makecache


#yum 历史记录 

[root@BC ~]# yum  history
Loaded plugins: fastestmirror
ID     | Command line             | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
    27 | reinstall -y httpd       | 2020-07-30 10:37 | Reinstall      |    1   
    26 | localinstall -y /mnt/Pac | 2020-07-30 10:11 | Install        |    1   
    25 | erase tree -y            | 2020-07-30 10:10 | Erase          |    1   
    24 | install -y https://mirro | 2020-07-30 10:09 | Install        |    1   


#显示所有历史记录 

[root@BC ~]# yum  history  list  all
Loaded plugins: fastestmirror
ID     | Login user               | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
    27 | root <root>              | 2020-07-30 10:37 | Reinstall      |    1   
    26 | root <root>              | 2020-07-30 10:11 | Install        |    1   
    25 | root <root>              | 2020-07-30 10:10 | Erase          |    1   
    24 | root <root>              | 2020-07-30 10:09 | Install        |    1   
    23 | root <root>              | 2020-07-30 10:08 | Erase          |    1   
    22 | root <root>              | 2020-07-30 10:08 | Install        |    1   

#查看某个ID的历史信息


[root@BC ~]# yum  history  info  15
Loaded plugins: fastestmirror
Transaction ID : 15
Begin time     : Wed Jul 22 08:51:56 2020
Begin rpmdb    : 372:6b59857cbbb441dc1cf9e1a96ab23013fd830365
End time       :                           (0 seconds)
End rpmdb      : 373:c16ad60498e5079097783959293418aeedfc68b5
User           : root <root>
Return-Code    : Success
Command Line   : install -y psmisc
Transaction performed with:
    Installed     rpm-4.11.3-35.el7.x86_64                      @anaconda
    Installed     yum-3.4.3-161.el7.centos.noarch               @anaconda
    Installed     yum-plugin-fastestmirror-1.1.31-50.el7.noarch @anaconda
Packages Altered:
    Install psmisc-22.20-16.el7.x86_64 @base
history info


#回滚历史ID为10的操作

[root@BC ~]# yum  history  undo  10  -y 


[root@BC ~]# yum  --setopt=history_list_view=commands  history  list all
Loaded plugins: fastestmirror
ID     | Command line             | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
    28 | history undo 10          | 2020-07-30 10:49 | Erase          |   21   
    27 | reinstall -y httpd       | 2020-07-30 10:37 | Reinstall      |    1   
    26 | localinstall -y /mnt/Pac | 2020-07-30 10:11 | Install        |    1   
    25 | erase tree -y            | 2020-07-30 10:10 | Erase          |    1   
    24 | install -y https://mirro | 2020-07-30 10:09 | Install        |    1   
    23 | erase tree -y            | 2020-07-30 10:08 | Erase          |    1   
    22 | install tree -y          | 2020-07-30 10:08 | Install        |    1   
    21 | remove tree -y           | 2020-07-30 10:08 | Erase          |    1   



[root@BC ~]# ll  /etc/yum.conf 


#只下载 不安装   指定下载的路径

[root@BC ~]# yum  install  -y  --downloadonly  --downloaddir=/opt   nginx


[root@BC ~]# ll /opt/
total 4380
-rw-r--r-- 1 root root   93872 Jul  4  2014 centos-indexhtml-7-9.el7.centos.noarch.rpm
-rw-r--r-- 1 root root   65788 Jul  4  2014 dejavu-fonts-common-2.33-6.el7.noarch.rpm
-rw-r--r-- 1 root root 1482820 Jul  4  2014 dejavu-sans-fonts-2.33-6.el7.noarch.rpm
-rw-r--r-- 1 root root  260512 Nov 12  2018 fontconfig-2.13.0-4.3.el7.x86_64.rpm
-rw-r--r-- 1 root root   10116 Jul  4  2014 fontpackages-filesystem-1.44-8.el7.noarch.rpm
-rw-r--r-- 1 root root  149492 Jul  4  2014 gd-2.0.35-26.el7.x86_64.rpm
-rw-r--r-- 1 root root  278636 Apr 25  2018 gperftools-libs-2.6.1-1.el7.x86_64.rpm
-rw-r--r-- 1 root root  137752 Aug 23  2019 libjpeg-turbo-1.2.90-8.el7.x86_64.rpm
-rw-r--r-- 1 root root  621364 Aug 23  2019 libX11-1.6.7-2.el7.x86_64.rpm
-rw-r--r-- 1 root root  168172 Aug 23  2019 libX11-common-1.6.7-2.el7.noarch.rpm
-rw-r--r-- 1 root root   29784 Jul  4  2014 libXau-1.0.8-2.1.el7.x86_64.rpm
-rw-r--r-- 1 root root  218900 Nov 12  2018 libxcb-1.13-1.el7.x86_64.rpm
-rw-r--r-- 1 root root   56800 Aug 11  2017 libXpm-3.5.12-1.el7.x86_64.rpm
-rw-r--r-- 1 root root  575413 Oct  4  2019 nginx-1.16.1-1.el7.x86_64.rpm
-rw-r--r-- 1 root root   19857 Oct  4  2019 nginx-all-modules-1.16.1-1.el7.noarch.rpm
-rw-r--r-- 1 root root   21089 Oct  4  2019 nginx-filesystem-1.16.1-1.el7.noarch.rpm
-rw-r--r-- 1 root root   30445 Oct  4  2019 nginx-mod-http-image-filter-1.16.1-1.el7.x86_64.rpm
-rw-r--r-- 1 root root   39849 Oct  4  2019 nginx-mod-http-perl-1.16.1-1.el7.x86_64.rpm
-rw-r--r-- 1 root root   29613 Oct  4  2019 nginx-mod-http-xslt-filter-1.16.1-1.el7.x86_64.rpm
-rw-r--r-- 1 root root   58301 Oct  4  2019 nginx-mod-mail-1.16.1-1.el7.x86_64.rpm
-rw-r--r-- 1 root root   86465 Oct  4  2019 nginx-mod-stream-1.16.1-1.el7.x86_64.rpm

[root@BC ~]# cat /etc/yum.conf
[main]
#cachedir=/var/cache/yum/$basearch/$releasever
cachedir=/opt		#指定下载保存路径
keepcache=1			#开启缓存 


[root@BC ~]# yum install  -y  nginx 


[root@BC ~]# ll /opt/
total 12
drwxr-xr-x 4 root root  256 Jul 30 11:03 base
drwxr-xr-x 4 root root 4096 Jul 30 11:03 epel
drwxr-xr-x 4 root root  161 Jul 30 11:03 extras
-rw-r--r-- 1 root root  117 Jul 30 11:04 timedhosts
-rw-r--r-- 1 root root  107 Jul 30 11:03 timedhosts.txt
drwxr-xr-x 4 root root  161 Jul 30 11:03 updates
[root@BC ~]# find  /opt/  -name  "*.rpm"
/opt/base/packages/centos-indexhtml-7-9.el7.centos.noarch.rpm
/opt/base/packages/dejavu-fonts-common-2.33-6.el7.noarch.rpm
/opt/base/packages/fontconfig-2.13.0-4.3.el7.x86_64.rpm
/opt/base/packages/dejavu-sans-fonts-2.33-6.el7.noarch.rpm
/opt/base/packages/fontpackages-filesystem-1.44-8.el7.noarch.rpm
/opt/base/packages/gd-2.0.35-26.el7.x86_64.rpm
/opt/base/packages/gperftools-libs-2.6.1-1.el7.x86_64.rpm
/opt/base/packages/libX11-1.6.7-2.el7.x86_64.rpm
/opt/base/packages/libX11-common-1.6.7-2.el7.noarch.rpm
/opt/base/packages/libXau-1.0.8-2.1.el7.x86_64.rpm
/opt/base/packages/libXpm-3.5.12-1.el7.x86_64.rpm
/opt/base/packages/libjpeg-turbo-1.2.90-8.el7.x86_64.rpm
/opt/base/packages/libxcb-1.13-1.el7.x86_64.rpm
/opt/epel/packages/nginx-all-modules-1.16.1-1.el7.noarch.rpm
/opt/epel/packages/nginx-1.16.1-1.el7.x86_64.rpm
/opt/epel/packages/nginx-filesystem-1.16.1-1.el7.noarch.rpm
/opt/epel/packages/nginx-mod-http-image-filter-1.16.1-1.el7.x86_64.rpm
/opt/epel/packages/nginx-mod-http-perl-1.16.1-1.el7.x86_64.rpm
/opt/epel/packages/nginx-mod-http-xslt-filter-1.16.1-1.el7.x86_64.rpm
/opt/epel/packages/nginx-mod-mail-1.16.1-1.el7.x86_64.rpm
/opt/epel/packages/nginx-mod-stream-1.16.1-1.el7.x86_64.rpm

yum总结:

	repolist		#针对仓库操作 
	
		all			#显示所有 
		
	list			#显示所有可安装的软件包 
	
		installed	#显示已经安装的
		
		updates		#显示可更新的
		
	check-update	#显示可更新的
	
	update			#更新
    
    install			#安装  
	
	localinstall	#本地安装 
	
	reinstall		#重新安装 
	
	remove			#卸载
	
	erase			#卸载 
	
	info			#显示软件包信息
	
	search			#搜索
	
	provides		#查询命令属于哪个软件包 
	
	groups			#组包管理
	
		install		#安装
		
		remove		#移除
		
	clean			#清空
	
		all			#清空所有 
		
		packages	#清空软件包
		
		plugins		#清空插件 
		
	makecahce		#生成缓存
	
	history			#历史记录
	
		list	all		#显示所有
		
		info 	ID		#显示某次记录的信息
		
		undo	ID		#回滚这次的操作 
		
		
		
		
yum-config-manager		#yum仓库管理工具 

	--disable		#禁用仓库
	
	--enable		#启用仓库 
	
	

四、搭建本地yum仓库



#把之前的仓库全部将其失效

[root@BC ~]# ll /etc/yum.repos.d/
total 8
-rw-r--r-- 1 root root 2523 Jul 30 09:51 CentOS-Base.repo
-rw-r--r-- 1 root root  664 Jul 30 09:57 epel.repo
[root@BC ~]# gzip  /etc/yum.repos.d/*
[root@BC ~]# ll /etc/yum.repos.d/
total 8
-rw-r--r-- 1 root root 601 Jul 30 09:51 CentOS-Base.repo.gz
-rw-r--r-- 1 root root 254 Jul 30 09:57 epel.repo.gz

#挂载镜像源

[root@BC ~]# mount  /dev/sr0   /mnt/

[root@BC ~]# df -h  | grep  mnt
/dev/sr0        4.3G  4.3G     0 100% /mnt




file://			#本地

ftp://			#文件传输地址

http://			#网络协议地址

https://		#网络协议地址 


#编写yum源文件

[root@BC ~]# cat /etc/yum.repos.d/lcoal.repo
[BC]			#仓库名称  不能有空格
name=this  is  local  repo		#仓库说明信息
baseurl=file:///mnt				#仓库地址
enabled=1					#启用仓库
gpgcheck=0					#不检查其合法性  


#测试是否可用

[root@BC ~]# yum  clean  all
Loaded plugins: fastestmirror
Cleaning repos: BC
Cleaning up list of fastest mirrors
Other repos take up 309 M of disk space (use --verbose for details)


[root@BC ~]# yum  makecache
Loaded plugins: fastestmirror
Determining fastest mirrors
BC                                                                                               | 3.6 kB  00:00:00     
(1/4): BC/group_gz                                                                               | 166 kB  00:00:00     
(2/4): BC/filelists_db                                                                           | 3.2 MB  00:00:00     
(3/4): BC/primary_db                                                                             | 3.1 MB  00:00:00     
(4/4): BC/other_db                                                                               | 1.3 MB  00:00:00     
Metadata Cache Created


[root@BC ~]# yum install  -y  tree


五、将本地仓库共享给其他主机

10.0.0.100		#本地仓库地址    服务端 


10.0.0.101		#客户端   

#客户端修改主机名 
[root@BC ~]# hostnamectl   set-hostname  client



# 在10.0.0.100 主机上面操作 

[root@BC ~]# mount  /dev/cdrom   /mnt/
mount: /dev/sr0 is write-protected, mounting read-only
[root@BC ~]# df -h | grep mnt
/dev/sr0        4.3G  4.3G     0 100% /mnt

#安装文件传输工具

[root@BC ~]# yum  install  -y  vsftpd

#启动
[root@BC ~]# systemctl  start  vsftpd
[root@BC ~]# systemctl  enable  vsftpd

#关闭防火墙
[root@BC ~]# systemctl  stop  firewalld

#关闭Selinux
[root@BC ~]# setenforce  0


#测试

#浏览器输出

ftp://10.0.0.100/

#访问的是这个目录

[root@BC ~]# ll /var/ftp/
total 0
drwxr-xr-x 2 root root 6 Oct 31  2018 pub


[root@BC ~]# mkdir  /var/ftp/local-base
[root@BC ~]# ll /var/ftp/
total 0
drwxr-xr-x 2 root root 6 Jul 30 19:55 local-base
drwxr-xr-x 2 root root 6 Oct 31  2018 pub
[root@BC ~]# cp  -rp  /mnt/Packages/*  /var/ftp/local-base/

#下载管理工具

[root@BC ~]# yum  install  -y  createrepo

#告诉系统,这是个镜像yum源仓库 

[root@BC ~]# createrepo   /var/ftp/local-base/
Spawning worker 0 with 4021 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete


#修改yum配置文件

[root@BC ~]# cat /etc/yum.repos.d/lcoal.repo
[BC]
name=this  is  local  repo
baseurl=ftp://10.0.0.100/local-base/
enabled=1
gpgcheck=0


[root@BC ~]# yum  repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id                                           repo name                                                        status
BC                                               this  is  local  repo                                            4,021
repolist: 4,021





#让其他主机使用这个仓库

在10.0.0.101主机上面操作


[root@client ~]# systemctl  stop  firewalld
[root@client ~]# setenforce  0



[root@client ~]# gzip  /etc/yum.repos.d/*
[root@client ~]# ll /etc/yum.repos.d/
total 28
-rw-r--r--. 1 root root 549 Nov 23  2018 CentOS-Base.repo.gz
-rw-r--r--. 1 root root 735 Nov 23  2018 CentOS-CR.repo.gz
-rw-r--r--. 1 root root 426 Nov 23  2018 CentOS-Debuginfo.repo.gz
-rw-r--r--. 1 root root 232 Nov 23  2018 CentOS-fasttrack.repo.gz
-rw-r--r--. 1 root root 381 Nov 23  2018 CentOS-Media.repo.gz
-rw-r--r--. 1 root root 506 Nov 23  2018 CentOS-Sources.repo.gz
-rw-r--r--. 1 root root 633 Nov 23  2018 CentOS-Vault.repo.gz


#编写yum源配置文件

[root@client ~]# cat /etc/yum.repos.d/lcoal.repo
[BC]
name=this  is  local  repo
baseurl=ftp://10.0.0.100/local-base/
enabled=1
gpgcheck=0



#测试

[root@client ~]# yum clean all
Loaded plugins: fastestmirror
Cleaning repos: BC
[root@client ~]# yum  makecache
Loaded plugins: fastestmirror
Determining fastest mirrors
BC                                                                                               | 2.9 kB  00:00:00     
(1/3): BC/filelists_db                                                                           | 3.2 MB  00:00:00     
(2/3): BC/primary_db                                                                             | 3.2 MB  00:00:00     
(3/3): BC/other_db                                                                               | 1.3 MB  00:00:00     
Metadata Cache Created


[root@client ~]# yum  install  vim -y



2020年07月31日上午(day21)

一、源码包管理


1. 要有源码包  下载源码包

[root@BC ~]# wget  http://nginx.org/download/nginx-1.18.0.tar.gz



[root@BC ~]# ll
total 1016
-rw-r--r-- 1 root root 1039530 Apr 21 22:33 nginx-1.18.0.tar.gz

2. 解压软件包 

[root@BC ~]# tar  xf  nginx-1.18.0.tar.gz 
[root@BC ~]# ll
total 1016
drwxr-xr-x 8 user05 1001     158 Apr 21 22:09 nginx-1.18.0
-rw-r--r-- 1 root   root 1039530 Apr 21 22:33 nginx-1.18.0.tar.gz


3. 进入这个目录,进行预编译操作   编译设置  

[root@BC nginx-1.18.0]# ./configure   --prefix=/opt/nginx-1.18.0   --with-http_ssl_module
checking for OS
 + Linux 3.10.0-957.el7.x86_64 x86_64
checking for C compiler ... not found

./configure: error: C compiler cc is not found		#报错   缺少编译软件 gcc



#按照依赖

[root@BC nginx-1.18.0]# yum install  -y  gcc



#再次执行报错 

./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.


#解决:

[root@BC nginx-1.18.0]# yum install  -y  pcre  pcre-devel 


#再次执行报错

./configure: error: SSL modules require the OpenSSL library.
You can either do not enable the modules, or install the OpenSSL library
into the system, or build the OpenSSL library statically from the source
with nginx by using --with-openssl=<path> option.


#解决:

[root@BC nginx-1.18.0]# yum  install  -y  openssl  openssl-devel


#4. 编译

[root@BC nginx-1.18.0]# make


5. 将编译的结果拷贝到指定的位置 

[root@BC nginx-1.18.0]# make  install


[root@BC nginx-1.18.0]# ll /opt/
drwxr-xr-x 6 root root   54 Jul 31 16:54 nginx-1.18.0


6. 做个软链接

[root@BC ~]# ln -s  /opt/nginx-1.18.0/  /opt/nginx


7. 启动 

[root@BC ~]# /opt/nginx/sbin/nginx 

二、定时任务的概念


	设定指定的时间周期性执行你的计划或者任务 
	
	crond		# 守护进程       分钟级别  
	
	两种:
	
		系统级别定时任务:	定时清理文件   收集系统信息  定时切割日志 
		
		用户级别定时任务:	同步时间    定时备份数据 
	

三、定时任务相关介绍



[root@BC ~]# ll  /etc/cron*  -d
drwxr-xr-x. 2 root root  21 Jul 29 08:56 /etc/cron.d		#定时任务的统一存放目录 
drwxr-xr-x. 2 root root  57 Jul 29 08:56 /etc/cron.daily	#系统每天执行的定时任务
-rw-------  1 root root   0 Apr 11  2018 /etc/cron.deny		#定时任务的黑名单 
drwxr-xr-x. 2 root root  22 Jul 29 08:56 /etc/cron.hourly	#系统每小时执行的定时任务
drwxr-xr-x. 2 root root   6 Jun 10  2014 /etc/cron.monthly	#系统每月执行的定时任务
-rw-r--r--  1 root root 451 Jun 10  2014 /etc/crontab		#定时任务主配置文件
drwxr-xr-x. 2 root root   6 Jun 10  2014 /etc/cron.weekly	#系统每周执行的定时任务 



[root@BC ~]# cat /etc/crontab
SHELL=/bin/bash			#定时任务所使用的命令解释器 
PATH=/sbin:/bin:/usr/sbin:/usr/bin		#定时任务所能用到的命令路径
MAILTO=root				#接收邮件 

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)		#分钟   
# |  .------------- hour (0 - 23)		#小时  
# |  |  .---------- day of month (1 - 31)	#日期 
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...	#月份 
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |			#  周 
# *  *  *  *  * user-name  command to be executed

分时日月周      用户    命令 


#跟定时任务相关的文件 

[root@BC ~]# ll /var/spool/cron/root		#存放定时任务的配置文件  
total 0

[root@BC ~]# ll /var/log/cron		#定时任务执行的过程   日志 


[root@BC ~]# ll /var/spool/mail/	#用户的邮件  


怎样书写定时任务 


crontab			#书写定时任务的命令  

选项:

	-e			#编辑定时任务    ===   vi  /var/spool/cron/root
	
	-l			#查看定时任务    ===   cat  /var/spool/cron/root

1. 语法检查 

2. 方便简单 


#定时任务的规则 

*	# 每(分时日月周)都执行  

*/5	# 每 5 (分时日月周)执行  每隔多长时间  

/5	

1-3		#时间范围  1-3   连续的时间  1点到3点

1,3		#不连续的时间  1点和3点 


00 02 * * *   	#每天的凌晨2点整  

00 02 1 * * 	#每个月的1号凌晨2点整  

00 02 14 2 * 	#每年的2月14日凌晨2点整   

00 02 * * 7 	#每周日的凌晨2点整  

00 02 * 6 5 	#每年的6月份的每周五的凌晨2点整    

00 02 14 * 7 	#每个月的14号或者周日的凌晨2点整

00 02 14 2 7  	#每年的2月份的14号或者周日的凌晨2点整

*/10  02 * * * 	#每天的凌晨2点每隔10分钟  

* * * * *   	#每分钟 

00 00 14 2 *  	#每年的2月份14号的凌晨0点整

*/5 * * * *   	#每隔5分钟 

00 02 * 1,5,8 *  #每年的1和5和8月的每天的凌晨2点整

00 02 1-8 * *   #每个月的1到8号的凌晨2点整

00 21 * * *   	#每天晚上21点整

45 4 1,10,22 * * 	#每个月的1,10,22号 的凌晨4点45分 

45 4 1-10 * *  		#每个月的1到10号的凌晨4点45分

3,15 8-11 */2 * * 	#每个月每隔两天的8到11点的3分和15分的时候 

0 23-7/2 * * *   	#每天的23点到7点的每隔2个小时的整点 

15 21 * * 1-5		#每周一到周五的晚上21点15分


四、定时任务与案例

1. 定时同步系统时间 每分钟同步 

[root@BC ~]# ntpdate  ntp.aliyun.com
31 Jul 10:27:12 ntpdate[13673]: step time server 203.107.6.88 offset -28797.933639 sec
[root@BC ~]# date
Fri Jul 31 10:27:18 CST 2020


定时任务最好加上注释  作者  时间 

[root@BC ~]# crontab  -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@BC ~]# crontab  -l
#同步系统时间 BC 20200731_10
* * * * *  ntpdate  ntp.aliyun.com

#修改时间
[root@BC ~]# date -s  20200730
Thu Jul 30 00:00:00 CST 2020
[root@BC ~]# date
Thu Jul 30 00:00:02 CST 2020

#查看定时任务的执行过程

[root@BC ~]# tailf  /var/log/cron
Jul 31 17:01:01 BC run-parts(/etc/cron.hourly)[13622]: finished 0anacron
Jul 31 17:52:01 BC crontab[13651]: (root) LIST (root)
Jul 31 18:01:01 BC CROND[13656]: (root) CMD (run-parts /etc/cron.hourly)
Jul 31 18:01:01 BC run-parts(/etc/cron.hourly)[13656]: starting 0anacron
Jul 31 18:01:01 BC run-parts(/etc/cron.hourly)[13665]: finished 0anacron
Jul 31 10:27:49 BC crontab[13675]: (root) BEGIN EDIT (root)
Jul 31 10:30:30 BC crontab[13675]: (root) REPLACE (root)
Jul 31 10:30:30 BC crontab[13675]: (root) END EDIT (root)
Jul 31 10:30:36 BC crontab[13677]: (root) LIST (root)
Jul 30 00:00:03 BC CROND[13682]: (root) CMD (ntpdate  ntp.aliyun.com)

#查看接收的邮件发现了报错  说命令找不到 

[root@BC ~]# ll  /var/spool/mail/root 
-rw------- 1 root mail 3541 Jul 30 00:01 /var/spool/mail/root
[root@BC ~]# tailf /var/spool/mail/root
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
Message-Id: <20200729160201.064E8802C9EE@BC.localdomain>
Date: Thu, 30 Jul 2020 00:02:01 +0800 (CST)

/bin/sh: ntpdate: command not found


#重新编写定时任务 

[root@BC ~]# crontab -l
#同步系统时间 BC 20200731_10
* * * * *  /usr/sbin/ntpdate  ntp.aliyun.com


[root@BC ~]# tailf  /var/log/cron
Jul 30 00:01:01 BC run-parts(/etc/cron.hourly)[13694]: starting 0anacron
Jul 30 00:01:02 BC anacron[13707]: Anacron started on 2020-07-30
Jul 30 00:01:02 BC anacron[13707]: Normal exit (0 jobs run)
Jul 30 00:01:02 BC run-parts(/etc/cron.hourly)[13709]: finished 0anacron
Jul 30 00:02:01 BC CROND[13714]: (root) CMD (ntpdate  ntp.aliyun.com)
Jul 30 00:03:01 BC CROND[13722]: (root) CMD (ntpdate  ntp.aliyun.com)
Jul 30 00:03:31 BC crontab[13728]: (root) BEGIN EDIT (root)
Jul 30 00:03:38 BC crontab[13728]: (root) REPLACE (root)
Jul 30 00:03:38 BC crontab[13728]: (root) END EDIT (root)
Jul 30 00:03:43 BC crontab[13730]: (root) LIST (root)



Jul 30 00:04:01 BC crond[6003]: (root) RELOAD (/var/spool/cron/root)
Jul 30 00:04:01 BC CROND[13734]: (root) CMD (/usr/sbin/ntpdate  ntp.aliyun.com)
Jul 31 10:35:04 BC CROND[13741]: (root) CMD (/usr/sbin/ntpdate  ntp.aliyun.com)

#邮件正在一直接收信息 导致邮件过大 

[root@BC ~]# ll /var/spool/mail/root 
-rw------- 1 root mail 7028 Jul 31 10:35 /var/spool/mail/root
[root@BC ~]# ll /var/spool/mail/root 
-rw------- 1 root mail 7929 Jul 31 10:36 /var/spool/mail/root

#停掉邮件服务 日志不在发生变化 

[root@BC ~]# systemctl  stop postfix
[root@BC ~]# ll /var/spool/mail/root 
-rw------- 1 root mail 8829 Jul 31 10:37 /var/spool/mail/root

#但是会一直生成小文件 

[root@BC ~]# ll /var/spool/postfix/maildrop/
total 12
-rwxr--r-- 1 root postdrop 601 Jul 31 10:38 7FF40C0CD48D
-rwxr--r-- 1 root postdrop 600 Jul 31 10:39 A8919C0CD48E
-rwxr--r-- 1 root postdrop 601 Jul 31 10:40 CD943C0CD48F


#重新编写定时任务

[root@BC ~]# crontab  -l
#同步系统时间 BC 20200731_10
* * * * *  /usr/sbin/ntpdate  ntp.aliyun.com &>/dev/null

[root@BC ~]# systemctl  start postfix

[root@BC ~]# ll /var/spool/mail/root 
-rw------- 1 root mail 13469 Jul 31 10:43 /var/spool/mail/root


总结:

1. 定时任务要有注释 作者 时间 

2. 定时任务的命令一定要在命令行上面执行成功

3. 定时任务要使用绝对路径 

4. 定时任务写命令的时候,尽量复制之前执行成功的命令 减少出错率

5. 定时任务的执行结果定向到指定的文件中或者定向到空


2. 把系统的时间追加到一个文件中


[root@BC ~]# date +%F_%T >> /root/time.txt
[root@BC ~]# cat /root/time.txt
2020-07-31_10:51:45


[root@BC ~]# crontab -l
#同步系统时间 BC 20200731_10
* * * * *  /usr/sbin/ntpdate  ntp.aliyun.com &>/dev/null
#xxxxxxxxxx
* * * * *  /usr/bin/date +%F_%T >> /root/time.txt  


[root@BC ~]# tailf  /var/log/cron
Jul 31 10:54:01 BC crond[6003]: (root) RELOAD (/var/spool/cron/root)
Jul 31 10:54:01 BC CROND[14046]: (root) CMD (/usr/sbin/ntpdate  ntp.aliyun.com &>/dev/null)
Jul 31 10:54:01 BC CROND[14047]: (root) CMD (/usr/bin/date +)


#修改定时任务

[root@BC ~]# crontab -l
#同步系统时间 BC 20200731_10
* * * * *  /usr/sbin/ntpdate  ntp.aliyun.com &>/dev/null
#xxxxxxxxxx
* * * * *  /usr/bin/date +\%F_\%T >> /root/time.txt  



[root@BC ~]# tailf  /var/log/cron
Jul 31 10:56:01 BC crond[6003]: (root) RELOAD (/var/spool/cron/root)
Jul 31 10:56:01 BC CROND[14074]: (root) CMD (/usr/bin/date +%F_%T >> /root/time.txt  )


[root@BC ~]# cat time.txt 
2020-07-31_10:56:01


总结:

	定时任务中,有些特殊字符不识别,需要转义  
	

3. 备份/etc/目录   压缩包名带有时间戳    保留最近的3天数据 

[root@BC ~]# cat backup.sh
#!/bin/bash
#重新定义环境变量 
export  PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/.local/bin:/root/bin
#1.创建备份目录
mkdir -p  /backup
#2.开始备份
cd  /
tar czf  /backup/etc_$(date +%F_%M).tar.gz  etc/  
#3.删除3天以前的数据
find  /backup  -type f -mtime  +3   -name "*.tar.gz"  -delete


[root@BC ~]# sh  backup.sh
[root@BC ~]# ll /backup/
total 9972
-rw-r--r-- 1 root root 10210944 Jul 31 11:05 etc_2020-07-31_05.tar.gz

#批量执行 

[root@BC ~]# for i in {20..31};do date -s 2020/07/$i &&  sh /root/backup.sh ;done


#编写定时任务 
[root@BC ~]# crontab  -l
#同步系统时间 BC 20200731_10
* * * * *  /usr/sbin/ntpdate  ntp.aliyun.com &>/dev/null
#xxxxxxxxxx
* * * * *  /usr/bin/date +\%F_\%T >> /root/time.txt  
#备份
* * * * *  /bin/bash   /root/backup.sh  &>/dev/null


[root@BC ~]# tailf  /var/log/cron
Jul 31 11:10:01 BC crond[6003]: (root) RELOAD (/var/spool/cron/root)
Jul 31 11:10:01 BC CROND[14327]: (root) CMD (/usr/bin/date +%F_%T >> /root/time.txt  )
Jul 31 11:10:01 BC CROND[14328]: (root) CMD (/bin/bash   /root/backup.sh  &>/dev/null)
Jul 31 11:10:01 BC CROND[14329]: (root) CMD (/usr/sbin/ntpdate  ntp.aliyun.com &>/dev/null)


[root@BC ~]# ll  /backup/
total 59832
-rw-r--r-- 1 root root 10210944 Jul 28 00:00 etc_2020-07-28_00.tar.gz
-rw-r--r-- 1 root root 10210944 Jul 29 00:00 etc_2020-07-29_00.tar.gz
-rw-r--r-- 1 root root 10210944 Jul 30 00:00 etc_2020-07-30_00.tar.gz
-rw-r--r-- 1 root root 10210944 Jul 31 00:00 etc_2020-07-31_00.tar.gz
-rw-r--r-- 1 root root 10210944 Jul 31 11:05 etc_2020-07-31_05.tar.gz
-rw-r--r-- 1 root root 10210944 Jul 31 11:10 etc_2020-07-31_10.tar.gz

五、定时发邮件

[root@BC ~]# yum install  -y  mailx

[root@BC ~]# vim /etc/mail.rc

#发件人

set from=xxx@qq.com
#邮件服务器

set smtp=smtp.qq.com
#发件人用户名

set smtp-auth-user=xxx@qq.com
#发件人密码(QQ邮箱不可以使用密码,只能使用授权码)

set smtp-auth-password=xxx
#登录方式

set smtp-auth=login
#邮件服务器协议及端口

set smtp=smtps://smtp.qq.com:465
#忽略证书

set ssl-verify=ignore
#指定证书位置

set nss-config-dir=/etc/pki/nssdb/

#或者指定别的证书位置,创建证书目录



#放到最后  
set from=xxx@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=xxx@qq.com
set smtp-auth-password=xxx		#客户端的授权码  
set smtp-auth=login
set smtp=smtps://smtp.qq.com:465
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/


[root@BC ~]# echo  "test"  | mail  -s "hello"  xxxx@qq.com
[root@BC ~]# Error in certificate: Peer\'s certificate issuer has been marked as not trusted by the.		#忽略这个错误 


[root@BC ~]# mkdir qingshu  
[root@BC ~]# cd qingshu
[root@BC qingshu]# vim  qingshu1.txt
[root@BC qingshu]# mail  -s "致亲爱的小姐姐"   xxx@qq.com  <  qingshu1.txt 
[root@BC qingshu]# Error in certificate: Peer\'s certificate issuer has been marked as not trusted by the.


#编写自动化脚本 

[root@BC qingshu]# cat /root/send_mail.sh
#!/bin/bash
Qingshu=$(ls -1  /root/qingshu/ |head -1)
mail  -s "致亲爱的小姐姐"  xxxx@qq.com  < /root/qingshu/$Qingshu  
mail  -s "致亲爱的小姐姐"  xxxx@qq.com  < /root/qingshu/$Qingshu

if  [ $? -eq 0 ];then
	rm -f /root/qingshu/$Qingshu
fi


[root@BC qingshu]# ll
total 20
-rw-r--r-- 1 root root  85 Jul 31 11:49 qingshu1.txt
-rw-r--r-- 1 root root 184 Jul 31 11:51 qingshu2.txt
-rw-r--r-- 1 root root 121 Jul 31 11:51 qingshu3.txt
-rw-r--r-- 1 root root 155 Jul 31 11:51 qingshu4.txt
-rw-r--r-- 1 root root  70 Jul 31 11:52 qingshu5.txt


#编写定时任务 

[root@BC qingshu]# crontab  -l
#同步系统时间 BC 20200731_10
* * * * *  /usr/sbin/ntpdate  ntp.aliyun.com &>/dev/null
#xxxxxxxxxx
#* * * * *  /usr/bin/date +\%F_\%T >> /root/time.txt  
#备份
#* * * * *  /bin/bash   /root/backup.sh  &>/dev/null
#xxxxxxxxx
* * * * *  /bin/bash   /root/send_mail.sh  &>/dev/null


六、定时任务总结

思路:

1.手动执行命令,然后保留执行成功的结果。

2.编写脚本

    脚本需要统一路径/scripts
    脚本内容复制执行成功的命令(减少每个环节出错几率)

3.执行脚本

    使用bash命令执行, 防止脚本没有增加执行权限(/usr/bin/bash /bin/bash)
    执行脚本成功后,复制该执行的命令,以便写入cron

4.编写定时任务

    加上必要的注释信息, 人、时间、任务

    设定定时任务执行的周期

    粘贴执行脚本的命令(不要手敲)

5.调试定时任务

    增加任务频率测试

    检查环境变量问题(最好在脚本中重新定义环境变量PATH)

    检查crond服务日志


总结:

1.定时任务规则之前加注释

2.使用脚本执行定时任务(只有一条简单命令的可以直接使用命令执行)

3.运行脚本一定要用绝对路径执行,统一脚本位置。

4.定时任务中date命令的百分号需转义才能使用。

5.命令或脚本结果(正确及错误)定向到空(>/dev/null 2>&1)或追加到文件中 >>/tmp/oldboy.txt 2>&1

6.避免不必要的程序及命令输出,如打包命令,tar -v的显示过程的选项。

7.打包压缩使用相对路径(切到目标目录的上一级打包目标)

8.定时任务脚本中的程序文件 ,尽量用绝对路径,用户的定时任务中的文件默认存放在当前用户的家目录

9.系统与命令位置有关的环境变量问题,建议脚本中重新定义环境变量PATH。

七、day19作业讲解

1.linux下常见的压缩包类型有哪些

.zip		#根据zip命令进行打包压缩的

.gz			#通过gzip命令进行压缩  只压缩文件,也会删除源文件 

.bz2		#通过bzip进行压缩, 只压缩文件,也会删除源文件

.tar.gz		#使用tar命令归档打包,然后使用gzip命令进行压缩 

.tar.bz2		#使用tar命令归档打包,然后使用bzip命令进行压缩 

2.将/etc/hosts文件用tar格式打包。

[root@BC ~]#tar  czf  hosts.tar.gz  /etc/hosts


3.查看打包之后的/etc/hosts的文件内容,在不解压的情况下查看。

[root@BC ~]#tar  tf  hosts.tar.gz

4.使用tar打包/var/log/目录。

[root@BC ~]#tar  czf  log.tar.gz  /var/log/

5.使用zip打包/etc目录。

[root@BC ~]#zip  -r  etc.zip  /etc

6.查看/var/log/目录的压缩包中有哪些内容。

[root@BC ~]#tar  tf  log.tar.gz

7.将/var/log/目录解压到/opt目录中。

[root@BC ~]#tar  xf  log.tar.gz  -C  /opt  

10.解压/etc/目录到/opt目录中。

[root@BC ~]#unzip  etc.zip  -d  /opt  

11.用zip打包/opt目录,要求不显示打包过程。

[root@BC ~]#zip  -rq  opt.zip  /opt  

12.打包/etc/目录,要求是.bz2格式

[root@BC ~]#tar cjf  etc.tar.bz2  /etc/

13.打包/var/log目录,要求是.xz格式

[root@BC ~]#tar cJf  log.tar.xz  /var/log

14.使用tar命令打包/etc/时,会出现一个删根的操作,怎样打包不会进行删根的操作

[root@BC ~]#tar czPf  etc.tar.gz  /etc

[root@BC ~]#cd  /   && tar czf  /root/etc.tar.gz  etc && cd -  

15.打包/etc/目录,要求不打包/etc/hosts这个文件。

[root@BC ~]#tar czf  etc.tar.gz    --exclude=/etc/hosts   /etc/

16.打包/etc/目录,要求不打包/etc/hosts和/etc/hostname这两个文件。

[root@BC ~]#tar czf  etc.tar.gz    --exclude=/etc/{hosts,hostname}   /etc/

17.打包/etc/目录,但要排除passwd,shadow,group,gshadow,hosts,hostname这些文件。(你能用两种方法实现吗)

vim  paichu.list
/etc/passwd
/etc/shadow
/etc/group
/etc/gshadow
/etc/hosts
/etc/hostname

[root@BC ~]#tar  czfX  etc.tar.gz   paichu.list  /etc

18.已知/etc/grub2.cfg文件是个软连接文件,在你不知道的情况下,请问怎么打包该文件的真实文件。

[root@BC ~]#tar  czhf  grub.tar.gz  /etc/grub2.cfg

19.把/var/log/目录中所有.log的文件进行打包成一个压缩包,名称定义为log.tar.gz的压缩包。

[root@BC ~]#find  /var/log  -type  f  -name "*.log"  | xrags  tar czf  log.tar.gz  

20.已知文件oldboy.gz,请问在不解压的情况下,怎样查看该文件的内容。

[root@BC ~]#zcat   oldboy.gz

21.打包/etc/目录,命令以ip地址+当前时间方式的压缩包:比如: 10.0.0.100_2019-12-24_etc.tar.gz

[root@BC ~]#tar  czf  $(ifconfig eth0 | awk  \'NR==2{print $2}\')_$(date +%F)_etc.tar.gz  /etc

22.创建/data/bak目录,然后复制如下文件到/data/bak目录下
/etc/hosts
/etc/resolv.conf
/etc/fstab
/etc/bashrc
/etc/profile
/etc/rc.local
/etc/sudoers

[root@BC ~]# mkdir -p /data/bak && echo -e "hosts\nresolv.conf\nfstab\nbashrc\nprofile\nrc.local\nsudoers" |sed -nr \'s#(.*)#cp /etc/\1 /data/bak#gp\' |bash

[root@BC ~]# mkdir -p /data/bak && echo -e "hosts\nresolv.conf\nfstab\nbashrc\nprofile\nrc.local\nsudoers" |awk \'{print "cp /etc/"$1" /data/bak"}\'|bash

23.接22题,使用tar命令对/data/bak目录下的文件及目录以gzip的格式进行归档压缩到/data目录下(压缩包的名字以自己名字命名)

[root@BC ~]#tar  czf  /data/BC.tar.gz  /data/bak


24.使用tar命令查看上题/data目录下压缩包内的内容。

[root@BC ~]#tar tf  /data/BC.tar.gz


25.把第23题/data目录下的压缩包,解压到/backup目录下

[root@BC ~]#mkdir  /backup

[root@BC ~]#tar  xf  /data/BC.tar.gz  -C  /backup

26.再次使用tar命令把/data/bak目录下的文件及目录以gzip的格式进行归档压缩到/data目录下,但是在进行归档压缩时,排除文件“sudoers”,然后查看该压缩包内容是否存在文件“sudoers”(压缩包名自行拟定)

[root@BC ~]#tar  czf  /data/BC.tar.gz   --exclude=/data/bak/sudoers      /data/bak

27.打包/etc目录下所有普通文件到root用户家目录。

[root@BC ~]#find  /etc/  -type  f  | xargs  tar czf  /root/file.tar.gz   

28.打包/etc/目录到/opt/目录下,名称要求以当前主机名和ip地址命名,例:oldboy_10.0.0.100.tar.gz

[root@BC ~]#tar  czf  /opt/$(hostname)_$(date +%F)_etc.tar.gz  /etc

29.如何使用gzip命令对文件进行压缩、解压

gzip   file.txt

gzip -d  file.txt.gz 

30.如何用zip命令对文件以及目录进行压缩、解压

zip  file.txt.zip   file.txt

zip  -r  etc.zip  /etc  

unzip  etc.zip

unzip  etc.zip  -d  /opt  

31.创建一个自己名字的文件至/opt目录

[root@BC ~]#mkdir  /opt/jh

32.打包opt整个目录,并命名test_opt.tar.gz

[root@BC ~]#tar  czf  test_opt.tar.gz  /opt 

33.查看打包好的test_opt.tar.gz里的文件

[root@BC ~]#tar tf test_opt.tar.gz

34.将打包好的test_opt.tar.gz内容指定解压至/tmp目录

[root@BC ~]#tar xf  test_opt.tar.gz  -C  /tmp

35.打包etc目录下的所有文件,不要目录只要文件

[root@BC ~]#find  /etc   !  -type  d  -exec  cp  {}  /opt/  \;

[root@BC ~]#tar czf opt.tar.gz  /opt

[root@BC ~]#find  /etc   !  -type  d  | xargs  tar czf  file.tar.gz  

36.打包etc目录下的所有文件,排除passwd,shadow

[root@BC ~]#tar  czf  etc.tar.gz  --exclude=/etc/{passwd,shadow}  /etc

37.打包etc目录下的所有以p开头的文件

[root@BC ~]#find  /etc/  -type f  -name "p*"  | xargs  tar czf  p.tar.gz  

38.打包etc目录下所有大于1M的文件

[root@BC ~]#find  /etc/  -type  f  -size +1M   | xargs  tar czf  big_file.tar.gz

2020年08月03日上午(day22)

一、磁盘基础介绍

1.什么是磁盘?

磁盘是指利用磁记录技术存储数据的存储器,是所有硬式存储的统称,如最早出现的软盘,现在的硬盘,都是磁盘中的一部分。

2.什么是软盘?

磁盘开始指的是1.44MB的3.5英寸磁盘,这是很早时候的电脑储存盘,也叫软盘。

软盘在如今已经很少被使用了,使用软盘需要安装软盘驱动。软盘容量小,容易损坏。随着数据的大量增长,软盘已经不满足日益所需的数据存储需求,所以,硬盘便被研发了出来。

3.什么是硬盘?

硬盘就是一种最为常见的外存储器,它好比是数据的外部仓库一样。电脑除了要有"工作间",还要有专门存储东西的仓库。是计算机中的最大的存储装置了,我们会将磁盘的储存片装到硬质金属盒子里,这样就可以得到更好的保护,而且在使用寿命上也比软盘优越得多,只有低格的时候才会对硬盘有很大的伤害。

4.磁盘与软盘硬盘的关系

磁盘是一种统称,即是一开始的软盘,又是现如今的硬盘,但是在现在,说起磁盘,都指的是硬盘。

二、磁盘的根本结构

1.盘片

	盘片是硬盘中承载数据存储的介质。硬盘盘片是以坚固耐用的材料为盘基,将磁粉附着在铝合金(新材料也有用玻璃)圆盘片的表面上,表面被加工的相当平滑。这些磁粉被划分成为磁道的若干个同心圆,在每个同心圆的磁道上就好像有无数的任意排列的小磁铁,它们分别代表着0和1的状态。当这些小磁铁受到来自磁头的磁力影响时,其排列的方向会随之改变。

    利用磁头的磁力控制指定的一些小磁铁方向,使每个小磁铁都可以用来储存信息。硬盘是由多个盘片叠加在一起,互相之间由垫圈隔开。

    硬盘中一般会有多个盘片,每个盘片包含两个面,每个盘面都对应地有一个读/写磁头(Head,简写为H)。受到硬盘整体体积和生产成本的限制,盘片数量都受到限制,一般都在5片以内。盘片的编号自下向上从0开始,如最下边的盘片有0面和1面,再上一个盘片就编号为2面和3面。

2.磁道 

	当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道。

    每个盘片的盘面在出厂的时候被划分出了多个同心圆环,数据就存储在这样的同心圆环上面,每个盘面可以划分多个磁道,但是肉眼不可见。通常一块盘面有成千上万个磁道。

    磁盘上的磁道是一组记录密度不同的同心圆。磁表面存储器是在不同形状(如盘状、带状等)的载体上。

3.扇区  

	在硬盘出厂时会对磁盘进行一次低级格式化,其实就是再将每个磁道划分为若干个弧段,每个弧段就是一个扇区(Sector)。若干个扇区就组成整个盘片,硬盘的读写以扇区为基本单位。这种以簇为最小分配单位的机制,使硬盘对数据的管理变得相对容易。现在每个扇区可存储512字节数据,已经成了业界的约定。

    低级格式化就是将空白的磁盘划分出柱面和磁道,再将磁道划分为若干个扇区,每个扇区又划分出标识部分ID、间隔区GAP和数据区DATA等。

    硬盘低级格式化的功用:硬盘低级格式化是对硬盘最彻底的初始化方式,经过低格后的硬盘,原来保存的数据将会全部丢失,所以一般来说低格硬盘是非常不可取的,只有非常必要的时候才能低格硬盘。而这个所谓的必要时候有两种,一是硬盘出厂前,硬盘厂会对硬盘进行一次低级格式化;另一个是当硬盘出现某种类型的坏道时,使用低级格式化能起到一定的缓解或者屏蔽作用。

4.柱面  

	柱面实际上就是我们抽象出来的一个逻辑概念,简单来说就是处于同一个垂直区域的磁道称为柱面,即各盘面上面相同位置的集合,这样数据如果存储到相同半径磁道上的同一扇区,这样可以实现并行读取,主要是减少磁头寻道时间。

5.磁头 

	磁头是硬盘中最昂贵的部件,也是硬盘技术中最重要和最关键的一环。主要作用是读取磁盘磁道上面的金属块,负责读或写入数据。

三、磁盘的相关概念

1.磁盘的接口

IDE  SCSI 		#淘汰了


SATA III    SAS   #企业级 


SSD( SATA III    PCIE )


M2    超极本的接口标准     MSATA   

2.机械硬盘和固态硬盘的区别

	机械硬盘  HDD					固态硬盘   SSD

    容量大价格低						容量小价格贵  
    
    抗击打能力弱 						抗击打能力强  
    
    读写速度慢						 读写速度快  
    
    数据损坏恢复易						数据恢复难
    
    寿命一直使用						 使用期限有一定限制   

3.磁盘的命名方式:

/dev/sda1		#第一块物理硬盘的第一个分区

/dev/sdb3		#第二块物理硬盘的第三个分区 

/dev/vdc5		#第三块虚拟硬盘的第5个分区 	


sd		#物理硬盘
 
 
vd		#虚拟硬盘 


4.磁盘的相关单位和术语

尺寸:		2.5英寸    3.5英寸  

数据大小:	bit   B   KB   MB   GB   TB    PB    EB  

单位换算:   1024     1B=8b  

转速:	RPM    转/每分钟    5400    7200     10k     15k  

IOPS    衡量磁盘读写 IO的单位   每秒的输入输出 


5.两个分区表:

MBR  	适用于2TB      只能有4个主分区   扩展分区(逻辑分区 )  


		3个主分区 + 1个扩展分区( 逻辑分区...... )

MBR的位置:  0磁头0磁道1扇区      512字节  

		446字节  MBR引导记录    

		64字节4个主分区  

		2字节分区结束标识符  

GPT		适用于2TB   128个主分区 

6.分区工具:

fdisk		#适用于2TB的分区

gdisk		#适用于2TB以上

四、Fdisk分区



[root@BC ~]# ll  /dev/sd*
brw-rw---- 1 root disk 8, 0 Aug  3 09:34 /dev/sda
brw-rw---- 1 root disk 8, 1 Aug  3 09:34 /dev/sda1
brw-rw---- 1 root disk 8, 2 Aug  3 09:34 /dev/sda2
brw-rw---- 1 root disk 8, 3 Aug  3 09:34 /dev/sda3
[root@BC ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  100G  0 disk 
├─sda1   8:1    0  500M  0 part /boot
├─sda2   8:2    0    2G  0 part [SWAP]
└─sda3   8:3    0 97.5G  0 part /
sr0     11:0    1  4.3G  0 rom  /mnt


[root@BC ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  100G  0 disk 
├─sda1   8:1    0  500M  0 part /boot
├─sda2   8:2    0    2G  0 part [SWAP]
└─sda3   8:3    0 97.5G  0 part /
sdb      8:16   0  100G  0 disk 
sdc      8:32   0    3T  0 disk 
sr0     11:0    1  4.3G  0 rom 




[root@BC ~]# ll /dev/sd*
brw-rw---- 1 root disk 8,  0 Aug  3 17:38 /dev/sda
brw-rw---- 1 root disk 8,  1 Aug  3 17:38 /dev/sda1
brw-rw---- 1 root disk 8,  2 Aug  3 17:38 /dev/sda2
brw-rw---- 1 root disk 8,  3 Aug  3 17:38 /dev/sda3
brw-rw---- 1 root disk 8, 16 Aug  3 17:38 /dev/sdb
brw-rw---- 1 root disk 8, 32 Aug  3 17:38 /dev/sdc



#显示某块磁盘的分区信息  

[root@BC ~]# fdisk   -l  /dev/sdb

Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

[root@BC ~]# fdisk   -l  /dev/sda

Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000ae9a7

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048     5220351     2097152   82  Linux swap / Solaris
/dev/sda3         5220352   209715199   102247424   83  Linux
[root@BC ~]# 



#1. 进行分区  创建分区  

[root@BC ~]# fdisk   /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x5b8d3e75.

Command (m for help): m

Command action 
a toggle a bootable flag    					 #切换分区启动标记
b edit bsd disklabel    						 #编辑sdb磁盘标签
c toggle the dos compatibility flag     		  #切换dos兼容模式
d delete a partition             				  #删除分区
l list known partition types     				  #显示分区类型
m print this menu    							 #显示帮助菜单
n add a new partition    						 #新建分区
o create a new empty DOS partition table 		   #创建新的空白分区表
p print the partition table     				  #显示分区表的信息
q quit without saving changes     				  #不保存退出
s create a new empty Sun disklabel    			   #创建新的Sun磁盘标签
t change a partitions system id         		   #修改分区ID,可以通过l查看id 
u change display/entry units     				  #修改容量单位,磁柱或扇区
v verify the partition table     				  #检验分区表
w write table to disk and exit     				  #保存退出
x extra functionality (experts only)     		   #拓展功能

Command (m for help): 

Command (m for help): l

 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
 1  FAT12           27  Hidden NTFS Win 82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx         
 5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data    
 6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility   
 8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt         
 9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access     
 a  OS/2 Boot Manag 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad hi eb  BeOS fs        
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT            
 f  W95 Ext\'d (LBA) 54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor      
12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f4  SpeedStor      
14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f2  DOS secondary  
16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS    
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep        
1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT            
1e  Hidden W95 FAT1 80  Old Minix      



Command (m for help): n    		#创建分区    		#主分区的编号是1-4   逻辑分区从5开始 
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended

Select (default p): p			#创建主分区
Partition number (1-4, default 1): 1		#主分区的编号
First sector (2048-209715199, default 2048): 			#扇区的起始位置
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199): +10G		#扇区的结束位置   
Partition 1 of type Linux and of size 10 GiB is set


Command (m for help): p

Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x5b8d3e75

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20973567    10485760   83  Linux



Command (m for help): n			#再次创建一个分区 
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): 
Using default response p
Partition number (2-4, default 2): 
First sector (20973568-209715199, default 20973568): 
Using default value 20973568
Last sector, +sectors or +size{K,M,G} (20973568-209715199, default 209715199): +10G
Partition 2 of type Linux and of size 10 GiB is set

Command (m for help): p

Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x5b8d3e75

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20973567    10485760   83  Linux
/dev/sdb2        20973568    41945087    10485760   83  Linux


Command (m for help): d		#删除分区  
Partition number (1,2, default 2): 2		#指定分区编号  
Partition 2 is deleted

Command (m for help): p

Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x5b8d3e75

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20973567    10485760   83  Linux


#创建扩展分区

Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): e
Partition number (2-4, default 2): 
First sector (20973568-209715199, default 20973568): 
Using default value 20973568
Last sector, +sectors or +size{K,M,G} (20973568-209715199, default 209715199): +50G
Partition 2 of type Extended and of size 50 GiB is set

Command (m for help): p

Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x5b8d3e75

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20973567    10485760   83  Linux
/dev/sdb2        20973568   125831167    52428800    5  Extended



#创建一个逻辑分区

Command (m for help): n
Partition type:
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)
Select (default p): l
Adding logical partition 5
First sector (20975616-125831167, default 20975616): 
Using default value 20975616
Last sector, +sectors or +size{K,M,G} (20975616-125831167, default 125831167): +20G
Partition 5 of type Linux and of size 20 GiB is set

Command (m for help): p

Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x5b8d3e75

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20973567    10485760   83  Linux
/dev/sdb2        20973568   125831167    52428800    5  Extended
/dev/sdb5        20975616    62918655    20971520   83  Linux



Command (m for help): w		#保存退出  
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.


#检查

[root@BC ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  100G  0 disk 
├─sda1   8:1    0  500M  0 part /boot
├─sda2   8:2    0    2G  0 part [SWAP]
└─sda3   8:3    0 97.5G  0 part /
sdb      8:16   0  100G  0 disk 
├─sdb1   8:17   0   10G  0 part 
├─sdb2   8:18   0    1K  0 part 
└─sdb5   8:21   0   20G  0 part 
sdc      8:32   0    3T  0 disk 
sr0     11:0    1  4.3G  0 rom  


[root@BC ~]# ll /dev/sd*
brw-rw---- 1 root disk 8,  0 Aug  3  2020 /dev/sda
brw-rw---- 1 root disk 8,  1 Aug  3  2020 /dev/sda1
brw-rw---- 1 root disk 8,  2 Aug  3  2020 /dev/sda2
brw-rw---- 1 root disk 8,  3 Aug  3  2020 /dev/sda3
brw-rw---- 1 root disk 8, 16 Aug  3 09:53 /dev/sdb
brw-rw---- 1 root disk 8, 17 Aug  3 09:53 /dev/sdb1
brw-rw---- 1 root disk 8, 18 Aug  3 09:53 /dev/sdb2
brw-rw---- 1 root disk 8, 21 Aug  3 09:53 /dev/sdb5
brw-rw---- 1 root disk 8, 32 Aug  3  2020 /dev/sdc


#2. 创建文件系统    格式化


[root@BC ~]# mkfs.xfs   /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=655360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2621440, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0


#3. 创建挂载点   

[root@BC ~]# mkdir   /fdisk01


#4.  挂载使用 

[root@BC ~]# mount  /dev/sdb1   /fdisk01
[root@BC ~]# df -h |  grep  \'/fdisk01\'
/dev/sdb1        10G   33M   10G   1% /fdisk01

#测试是否可用
[root@BC ~]# dd   if=/dev/zero  of=/fdisk01/test.log  bs=10M  count=100
100+0 records in
100+0 records out
1048576000 bytes (1.0 GB) copied, 10.8088 s, 97.0 MB/s
[root@BC ~]# df -h |  grep  \'/fdisk01\'
/dev/sdb1        10G  1.1G  9.0G  11% /fdisk01




#5. 实现永久挂载 

[root@BC ~]# tail -1 /etc/fstab
/dev/sdb1				  /fdisk01                xfs     defaults        0 0
[root@BC ~]# 

[root@BC ~]# mount  -a		#重新挂载/etc/fstab文件中的挂载列表 
[root@BC ~]# 



#数据是跟着设备走的    目录只是一个挂载点   就是入口 

[root@BC ~]# ll /fdisk01/
total 1024000
-rw-r--r-- 1 root root 1048576000 Aug  3 09:59 test.log
[root@BC ~]# umount   /dev/sdb1
[root@BC ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        98G  5.5G   92G   6% /
devtmpfs        980M     0  980M   0% /dev
tmpfs           991M     0  991M   0% /dev/shm
tmpfs           991M  9.5M  981M   1% /run
tmpfs           991M     0  991M   0% /sys/fs/cgroup
/dev/sda1       497M  120M  378M  25% /boot
tmpfs           199M     0  199M   0% /run/user/0
[root@BC ~]# ll /fdisk01/
total 0
[root@BC ~]# mount  -a
[root@BC ~]# ll /fdisk01/
total 1024000
-rw-r--r-- 1 root root 1048576000 Aug  3 09:59 test.log

五、Gdisk分区

[root@BC ~]# yum  install  -y  gdisk


[root@BC ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  100G  0 disk 
├─sda1   8:1    0  500M  0 part /boot
├─sda2   8:2    0    2G  0 part [SWAP]
└─sda3   8:3    0 97.5G  0 part /
sdb      8:16   0  100G  0 disk 
├─sdb1   8:17   0   10G  0 part /fdisk01
├─sdb2   8:18   0    1K  0 part 
└─sdb5   8:21   0   20G  0 part 
sdc      8:32   0    3T  0 disk 
sr0     11:0    1  4.3G  0 rom  


[root@BC ~]# gdisk  -l  /dev/sdc
GPT fdisk (gdisk) version 0.8.10

Partition table scan:
  MBR: not present
  BSD: not present
  APM: not present
  GPT: not present

Creating new GPT entries.
Disk /dev/sdc: 6442450944 sectors, 3.0 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): 2BF39D49-315B-42C3-9C9C-C5A98D1EBB71
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 6442450910
Partitions will be aligned on 2048-sector boundaries
Total free space is 6442450877 sectors (3.0 TiB)

Number  Start (sector)    End (sector)  Size       Code  Name


#2. 创建分区 

[root@BC ~]# gdisk    /dev/sdc
GPT fdisk (gdisk) version 0.8.10

Partition table scan:
  MBR: not present
  BSD: not present
  APM: not present
  GPT: not present

Creating new GPT entries.

Command (? for help): m 
b    back up GPT data to a file                            #将GPT数据备份到文件中
c    change a partition\'s name                             #更改分区的名称
d    delete a partition                                    #删除分区
i    show detailed information on a partition              #显示分区的详细信息
l    list known partition types                            #列出已知的分区类型
n    add a new partition                                   #添加一个新的分区
o    create a new empty GUID partition table (GPT)         #创建一个新的空GUID分区表(GPT) 
p    print the partition table                             #打印分区表
q    quit without saving changes                           #没有保存更改就退出
r    recovery and transformation options (experts only)    #恢复和转换选项(仅限专家使用) 
s    sort partitions                                       #年代分类分区
t    change a partition\'s type code                        #不要更改分区的类型代码
v    verify disk                                           #验证磁盘
w    write table to disk and exit                          #将表写入磁盘并退出
x    extra functionality (experts only)                    #额外功能(仅限专家使用) 
?    print this menu                                       #打印菜单

Command (? for help): 



Command (? for help): n		#创建分区
Partition number (1-128, default 1): 	#分区编号
First sector (34-6442450910, default = 2048) or {+-}size{KMGTP}: 		#扇区起始位置
Last sector (2048-6442450910, default = 6442450910) or {+-}size{KMGTP}: 	#扇区结束位置
Current type is \'Linux filesystem\'
Hex code or GUID (L to show codes, Enter = 8300): 		#选择分区类型 
Changed type of partition to \'Linux filesystem\'

Command (? for help): p		#打印分区表信息
Disk /dev/sdc: 6442450944 sectors, 3.0 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): 2E58E6D9-4971-4B2F-A455-16D3A5115002
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 6442450910
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048      6442450910   3.0 TiB     8300  Linux filesystem

Command (? for help): 


Command (? for help): w		#保存退出

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): y		#是否确认 
OK; writing new GUID partition table (GPT) to /dev/sdc.
The operation has completed successfully.
[root@BC ~]# 


#3. 格式化,创建文件系统

[root@BC ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  100G  0 disk 
├─sda1   8:1    0  500M  0 part /boot
├─sda2   8:2    0    2G  0 part [SWAP]
└─sda3   8:3    0 97.5G  0 part /
sdb      8:16   0  100G  0 disk 
├─sdb1   8:17   0   10G  0 part /fdisk01
├─sdb2   8:18   0    1K  0 part 
└─sdb5   8:21   0   20G  0 part 
sdc      8:32   0    3T  0 disk 
└─sdc1   8:33   0    3T  0 part 
sr0     11:0    1  4.3G  0 rom  


[root@BC ~]# mkfs.xfs   /dev/sdc1
meta-data=/dev/sdc1              isize=512    agcount=4, agsize=201326527 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=805306107, imaxpct=5
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=393215, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0



#4. 创建挂载点,进行挂载 
[root@BC ~]# mkdir   /gdisk01
[root@BC ~]# mount  /dev/sdc1  /gdisk01
[root@BC ~]# df -h  | grep  \'/gdisk01\'
/dev/sdc1       3.0T   33M  3.0T   1% /gdisk01
[root@BC ~]# cp  /fdisk01/test.log   /gdisk01/
[root@BC ~]# df -h  | grep  \'/gdisk01\'
/dev/sdc1       3.0T  1.1G  3.0T   1% /gdisk01
[root@BC ~]# 


#5. 永久挂载 
[root@BC ~]# tail  -1 /etc/fstab
/dev/sdc1			          /gdisk01                xfs     defaults        0 0
[root@BC ~]# mount -a
[root@BC ~]# 

六、磁盘的挂载方式

在Linux系统中,所有的设备必须挂载才能使用 

mount		#挂载的命令

选项:

	-t		#指定文件系统     网络协议   nfs
	
	-o		#指定挂载的参数 	
	
	-a		#重新挂载/etc/fstab文件中的挂载列表 
	
[root@BC ~]# mount  -t  xfs  /dev/sdb1   /fdisk01/
[root@BC ~]# df  -h 
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        98G  5.5G   92G   6% /
devtmpfs        980M     0  980M   0% /dev
tmpfs           991M     0  991M   0% /dev/shm
tmpfs           991M  9.5M  981M   1% /run
tmpfs           991M     0  991M   0% /sys/fs/cgroup
/dev/sda1       497M  120M  378M  25% /boot
tmpfs           199M     0  199M   0% /run/user/0
/dev/sdb1        10G  1.1G  9.0G  11% /fdisk01
[root@BC ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  100G  0 disk 
├─sda1   8:1    0  500M  0 part /boot
├─sda2   8:2    0    2G  0 part [SWAP]
└─sda3   8:3    0 97.5G  0 part /
sdb      8:16   0  100G  0 disk 
├─sdb1   8:17   0   10G  0 part /fdisk01
├─sdb2   8:18   0    1K  0 part 
└─sdb5   8:21   0   20G  0 part 
sdc      8:32   0    3T  0 disk 
└─sdc1   8:33   0    3T  0 part 
sr0     11:0    1  4.3G  0 rom  
[root@BC ~]# blkid
/dev/sr0: UUID="2018-11-25-23-54-16-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
/dev/sda1: UUID="70df4a5b-091c-4aaa-9cc7-d745201ec394" TYPE="xfs" 
/dev/sda2: UUID="6aefd444-30dc-4c0e-9a8d-75a8b1d9856b" TYPE="swap" 
/dev/sda3: UUID="4aa02e85-ffe1-4783-9886-a328f923bee8" TYPE="xfs" 
/dev/sdb1: UUID="0668e9f1-7d37-42eb-9e79-980f6352c342" TYPE="xfs" 
/dev/sdc1: UUID="60d9a87f-fa86-4fdc-a1c9-2a88df756a24" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="71869797-d467-4293-807e-7c6f917c7422" 
[root@BC ~]# 


[root@BC ~]# mount  -o ro  /dev/sdb1  /fdisk01/
[root@BC ~]# cp /etc/hosts  /fdisk01/
cp: cannot create regular file ‘/fdisk01/hosts’: Read-only file system


umount		#卸载  

选项:

	-l		#强制卸载  
	
[root@BC ~]# umount   /dev/sdb1
[root@BC ~]# df -h | grep  \'/dev/sdb1\'
[root@BC ~]# mount  /dev/sdb1  /fdisk01/
[root@BC ~]# cd /fdisk01/
[root@BC fdisk01]# umount /fdisk01		#不能在挂载的目录中进行卸载 
umount: /fdisk01: target is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))
[root@BC fdisk01]# umount /dev/sdb1
umount: /fdisk01: target is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))
[root@BC fdisk01]# umount  -l  /dev/sdb1
[root@BC fdisk01]# cd
[root@BC ~]# mount  /dev/sdb1  /fdisk01/
[root@BC ~]# umount   /fdisk01/
[root@BC ~]# df -h | grep  \'/dev/sdb1\'
[root@BC ~]# 



#通过UUID进行挂载

[root@BC ~]# blkid
/dev/sr0: UUID="2018-11-25-23-54-16-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
/dev/sda1: UUID="70df4a5b-091c-4aaa-9cc7-d745201ec394" TYPE="xfs" 
/dev/sda2: UUID="6aefd444-30dc-4c0e-9a8d-75a8b1d9856b" TYPE="swap" 
/dev/sda3: UUID="4aa02e85-ffe1-4783-9886-a328f923bee8" TYPE="xfs" 
/dev/sdb1: UUID="0668e9f1-7d37-42eb-9e79-980f6352c342" TYPE="xfs" 
/dev/sdc1: UUID="60d9a87f-fa86-4fdc-a1c9-2a88df756a24" TYPE="xfs" PARTLABEL="Linux filesystem" PARTUUID="71869797-d467-4293-807e-7c6f917c7422" 
[root@BC ~]# mount  UUID="0668e9f1-7d37-42eb-9e79-980f6352c342"   /fdisk01/
[root@BC ~]# df -h  | grep  \'fdisk\'
/dev/sdb1        10G  1.1G  9.0G  11% /fdisk01
[root@BC ~]# 


[root@BC ~]# tail -1 /etc/fstab
UUID=0668e9f1-7d37-42eb-9e79-980f6352c342 /fdisk01/		  xfs     defaults        0 0
[root@BC ~]# mount -a


[root@BC ~]# tail -4 /etc/fstab
UUID=4aa02e85-ffe1-4783-9886-a328f923bee8 /                       xfs     defaults        0 0
UUID=70df4a5b-091c-4aaa-9cc7-d745201ec394 /boot                   xfs     defaults        0 0
UUID=6aefd444-30dc-4c0e-9a8d-75a8b1d9856b swap                    swap    defaults        0 0
UUID=0668e9f1-7d37-42eb-9e79-980f6352c342 /fdisk01/		  xfs     defaults        0 0


#以空白字符为分隔符,分为6列:
[root@BC ~]# cat /etc/fstab 
#设备名称    挂载的位置    文件系统类型    挂载的参数    是否备份    是否检查

/dev/sdb1    /data        xfs            defaults     0            0 


第一列:		挂载的设备  挂载的地址  网络设备地址  

第二列:		挂载点  挂载的目录  空目录 

第三列:		文件系统的类型   xfs 7默认的  ext4 6默认的  nfs  gfs

第四列:		挂载的参数  defaults

第五列:	是否允许dump进行备份  

		0	#不备份
		
		1	#每天备份
		
		2	#不定期备份 
		
第六列:	是否通过fsck命令检查磁盘 

		0	#不检查 
		
		1	#检查  检查顺序  先检查 /  
		
		2	#检查顺序 
		

#建议挂载时使用UUID

#1.怎样获取磁盘分区的UUID,使用blkid命令获取
[root@BC ~]# blkid|grep sdc1
/dev/sdc1: UUID="c7c940b3-277b-49fa-960b-eef5ed6e9b1b"
    
#2.手动测试是否能正常的挂载
[root@BC ~]# mount UUID="c7c940b3-277b-49fa-960b-eef5ed6e9b1b" /datac


#3.将信息写入到/etc/fstab文件中,保证下次启动系统自动挂载
UUID="c7c940b3-277b-49fa-960b-eef5ed6e9b1b" /datac xfs defaults 0 0


#4.卸载/datac挂载信息, 然后使用mount -a检查/etc/fstab文件是否ok
[root@BC ~]# mount -a


PS: 如果不检查写错了直接重启, 会导致系统无法启动. 			

七、Swap虚拟内存


Out of memory

OOM		#内存溢出   内存不足 


[root@BC ~]# free  -m
              total        used        free      shared  buff/cache   available
Mem:           1980         133        1625           9         221        1672
Swap:          2047           0        2047
[root@BC ~]# swapoff   -a
[root@BC ~]# free  -m
              total        used        free      shared  buff/cache   available
Mem:           1980         132        1627           9         220        1673
Swap:             0           0           0



虚拟内存 


#添加一个swap分区 


#创建一个1G的分区 

[root@BC ~]# fdisk   /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): n
Partition type:
   p   primary (1 primary, 1 extended, 2 free)
   l   logical (numbered from 5)
Select (default p): p
Partition number (3,4, default 3): 
First sector (125831168-209715199, default 125831168): 
Using default value 125831168
Last sector, +sectors or +size{K,M,G} (125831168-209715199, default 209715199): +1G
Partition 3 of type Linux and of size 1 GiB is set

Command (m for help): p

Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x5b8d3e75

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20973567    10485760   83  Linux
/dev/sdb2        20973568   125831167    52428800    5  Extended
/dev/sdb3       125831168   127928319     1048576   83  Linux
/dev/sdb5        20975616    62918655    20971520   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.


[root@BC ~]# partprobe		#通知内核,系统分区表发生变化 


#将这个分区变为swap分区

[root@BC ~]# mkswap   /dev/sdb3
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=8a9c926b-de0d-4b49-bcb8-39a9c0b834a8


#把这个分区加入到swap

[root@BC ~]# free  -m
              total        used        free      shared  buff/cache   available
Mem:           1980          77        1819           0          84        1774
Swap:          2047          69        1978
[root@BC ~]# swapon   -s
Filename				Type		Size	Used	Priority
/dev/sda2                              	partition	2097148	71168	-2
[root@BC ~]# swapon   /dev/sdb3
[root@BC ~]# free  -m
              total        used        free      shared  buff/cache   available
Mem:           1980          78        1818           0          84        1773
Swap:          3071          69        3002
[root@BC ~]# swapon   -s
Filename				Type		Size	Used	Priority
/dev/sda2                              	partition	2097148	70912	-2
/dev/sdb3                              	partition	1048572	0	-3


#移除swap

[root@BC ~]# swapoff   /dev/sdb3
[root@BC ~]# free  -m
              total        used        free      shared  buff/cache   available
Mem:           1980          78        1818           0          84        1773
Swap:          2047          69        1978

#禁用swap
[root@BC ~]# swapoff  -a
[root@BC ~]# free  -m
              total        used        free      shared  buff/cache   available
Mem:           1980         128        1759           9          92        1715
Swap:             0           0           0

#启用swap

[root@BC ~]# swapon  -a
[root@BC ~]# free  -m
              total        used        free      shared  buff/cache   available
Mem:           1980         129        1758           9          92        1713
Swap:          2047           0        2047



#生成一个大文件  作为swap


[root@BC ~]# dd  if=/dev/zero  of=/root/swap.txt  bs=100M  count=10
10+0 records in
10+0 records out
1048576000 bytes (1.0 GB) copied, 8.33166 s, 126 MB/s
[root@BC ~]# ll
total 1024000
-rw-r--r-- 1 root root 1048576000 Aug  3 11:21 swap.txt
[root@BC ~]# mkswap   swap.txt 
Setting up swapspace version 1, size = 1023996 KiB
no label, UUID=51e07b8a-971a-47ec-972e-36f8273ec3cd
[root@BC ~]# ll
total 1024000
-rw-r--r-- 1 root root 1048576000 Aug  3 11:22 swap.txt
[root@BC ~]# file   swap.txt 
swap.txt: Linux/i386 swap file (new style), version 1 (4K pages), size 255999 pages, no label, UUID=51e07b8a-971a-47ec-972e-36f8273ec3cd


[root@BC ~]# chmod  600  swap.txt 


[root@BC ~]# swapon  /root/swap.txt 

[root@BC ~]# free  -m
              total        used        free      shared  buff/cache   available
Mem:           1980         132         727           9        1120        1663
Swap:          3047           0        3047


[root@BC ~]# swapoff   swap.txt 
[root@BC ~]# free  -m
              total        used        free      shared  buff/cache   available
Mem:           1980         130         729           9        1120        1665
Swap:          2047           0        2047


八、RAID基本介绍


磁盘阵列技术 

做磁盘阵列的好处:

1. 获得更高的容量 

2. 获得更高的性能  

3. 让数据更安全  冗余  


如何做RAID:


软件实现   软RAID   不推荐    mdadm  


硬件RAID    RAID卡实现的      推荐    


做RAID什么时候做:

在装系统之前做


RAID的级别:

级别		别名      硬盘数量 		容量			性能				容错性

RAID0	条带卷		至少两块  		N*单块  		读写最快			 0

RAID1   镜像卷		只能两块       损失一半       写慢 读一般           50%

RAID5	校验卷 	至少3块		浪费一块       读写一般             N分之一 只能坏一块

RAID10	镜像阵列条带卷  至少4块    浪费一半        读写很快             50%  


九、LVM概述

1. 什么是LVM?

    LVM是Logical Volume Manager (逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制。又译为逻辑卷宗管理器、逻辑扇区管理器、逻辑磁盘管理器,是Linux核心所提供的逻辑卷管理(Logical volume management)功能。它在硬盘的分区之上,又创建一个逻辑层,以方便系统管理硬盘分区系统。
    最先由IBM开发,在AIX系统上实现,OS/2 操作系统与 HP-UX也支持这个功能。在1998年,Heinz Mauelshagen 根据在 HP-UX 上的逻辑卷管理器,写作出第一个 Linux 版本的逻辑卷管理器。

2. LVM解决了什么问题

    当我们刚开始安装Linux操作系统是遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间。
    普通的磁盘分区好之后就无法改变其大小,而遇到出现某个分区空间耗尽时,解决的方法可以是符号链接,或者调整分区大小的工具,但这只是暂时解决方法,没有从根本上解决问题。
    随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户可以在无需停机的请款下可以方便的调整各个分区大小。

3. LVM基本概念

物理卷(PV):(physical volume),把常规的磁盘设备通过pvcreate命令对其进行初始化,形成了物理卷。其实就是硬盘或分区。(面粉)

卷组(VG):(volume group),把多个物理卷组成一个逻辑的整体,这样卷组的大小就是多个硬盘之和。或者理解就是由一个或多个PV组成的整体。(面团)

逻辑卷(LV):(logical volume),从卷组中划分需要的空间大小出来。用户仅需对其格式化然后即可挂载使用。从VG中切割出的空间用于创建文件系统。(切成馒头)

基本单元(PE):(physical extend),分配的逻辑大小的最小单元,默认为4MB的基本块。(假设分配100MB逻辑空间,则需要创建25个PE)

4. 逻辑卷实践

1)创建物理卷,将普通磁盘转换为物理卷。
2)创建卷组,将物理卷加入到卷组中。
3)在卷组中划分逻辑卷,然后挂载使用。

1. 准备物理磁盘,如果是虚拟机需要关闭添加磁盘,以便更好的实验

[root@BC ~]# lsblk 
sdb 8:16 0 20G 0 disk 
sdc 8:32 0 20G 0 disk

2. 将磁盘转换为物理卷


#下载安装软件包
[root@BC ~]# yum install -y lvm2


[root@BC ~]# pvcreate /dev/sdb

3. 将/dev/sdb物理卷加入卷组(资源池)-->名字lvm_test


[root@BC ~]# vgcreate lvm_test /dev/sdb


#检查卷组
[root@BC ~]# vgs

4. 创建逻辑卷,分配名称,以及大小,指定卷组


选项:
    -L    #逻辑卷大小
    -n    #逻辑卷名字
    
[root@BC ~]# lvcreate -L 100M -n lv1 lvm_test    ##将lvm_test分配給lv1

5. 格式化逻辑卷


[root@BC ~]# mkfs.xfs /dev/lvm_test/lv1

6. 挂载使用


[root@BC ~]# mkdir /lv1


[root@BC ~]# mount /dev/lvm_test/lv1 /lv1/


[root@BC ~]# cp /etc/services /lv1/

02. 卷组管理,如何扩展卷组大小,如何删除卷组

1. 如何扩大VG卷组


#1.新硬盘加入pv
[root@BC ~]# pvcreate /dev/sdc


#2.先检查当前的vg卷组大小
[root@oldboyedu ~]# vgs
VG #PV #LV #SN Attr VSize VFree
lvm_test 1 1 0 wz--n- 1020.00m 920.00m


#3.使用vgextend扩展卷组
[root@BC ~]# vgextend lvm_test /dev/sdc
Volume group "lvm_test" successfully extended


#4.再次检查,发现卷组已经扩大
[root@oldboyedu ~]# vgs
VG #PV #LV #SN Attr VSize VFree
lvm_test 2 1 0 wz--n- 1.99g 1.89g



2. 假设想移除/dev/sdb磁盘,建议先将sdb磁盘数据先迁移到sdc磁盘,然后在移除。(同一卷组的磁盘才可以进行在线迁移),(注意卷组的名称---)


#1.检查当前逻辑卷VG中PV使用情况
[root@BC ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb vg1 lvm2 a -- 2.00g 1.76g 
/dev/sdc vg1 lvm2 a -- 2.00g 2.00g


#2.pvmove在线数据迁移,将sdb的数据迁移至sdc 
[root@BC ~]# pvmove /dev/sdb
/dev/sdb: Moved: 100.00%


#3.检查是否将sdb数据迁移至sdc 
[root@BC ~]# pvs
PV VG Fmt Attr PSize PFree 
/dev/sdb vg1 lvm2 a -- 2.00g 2.00g 
/dev/sdc vg1 lvm2 a -- 2.00g 1.76g


#4.从卷组中移除sdb磁盘
[root@BC ~]# vgreduce lvm_test /dev/sdb
Removed "/dev/sdb" from volume group "lvm_test"


3. 逻辑卷管理,动态的调整逻辑卷大小

01. 逻辑卷的扩展,是取决于vg卷中是否还有剩余的容量,注意扩展逻辑卷不能超过卷组VG的总大小


[root@BC ~]# vgs
VG #PV #LV #SN Attr VSize VFree
datavg 1 1 0 wz--n- 1020.00m 920.00m


#1.扩展lv逻辑卷,增加800M分配给逻辑卷 {注意: 800M +800M 不一样}
[root@BC ~]# lvextend -L +800M /dev/lvm_test/lv1


#或者可以选择分配磁盘池中多少百分比给逻辑卷
[root@BC ~]# lvextend -l +50%FREE /dev/lvm_test/lv1


#2.扩展逻辑卷后需要更新fs文件系统
[root@BC ~]# xfs_growfs /dev/lvm_testvg/lv1 #xfs文件格式扩容

02. 缩小逻辑卷,不要去操作,因为线上在使用的磁盘真的敢操作吗?

03. 删除逻辑卷,如果不想使用逻辑卷可以选择删除。


[root@BC ~]# umount /dev/lvm_test/lv1


[root@BC ~]# lvremove /dev/lvm_test/lv1
Do you really want to remove active logical volume lvm_test/lv1? 
Logical volume "lv1" successfully removed

注意:LVM如果有一个磁盘损坏,整个lvm都坏了, lvm只有动态扩展作用,底层用RAID + 上层LVM = 既有冗余又有动态扩展

十、硬盘故障

01. 磁盘block满故障

[root@BC ~]# fdisk   /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): n
Partition type:
   p   primary (2 primary, 1 extended, 1 free)
   l   logical (numbered from 5)
Select (default p): 
Using default response p
Selected partition 4
First sector (127928320-209715199, default 127928320): 
Using default value 127928320
Last sector, +sectors or +size{K,M,G} (127928320-209715199, default 209715199): +2G
Partition 4 of type Linux and of size 2 GiB is set

Command (m for help): p

Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x5b8d3e75

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    20973567    10485760   83  Linux
/dev/sdb2        20973568   125831167    52428800    5  Extended
/dev/sdb3       125831168   127928319     1048576   83  Linux
/dev/sdb4       127928320   132122623     2097152   83  Linux
/dev/sdb5        20975616    62918655    20971520   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
[root@BC ~]# 


#准备2G的分区 


[root@BC ~]# dd  if=/dev/zero  of=/opt/test.log  bs=100M  count=21
dd: error writing ‘/opt/test.log’: No space left on device
21+0 records in
20+0 records out
2099183616 bytes (2.1 GB) copied, 3.34918 s, 627 MB/s


[root@BC ~]# echo  "123" >> /opt/file.txt
-bash: echo: write error: No space left on device		#磁盘空间不足 


#解决:

检查磁盘空间

[root@BC ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        98G  6.4G   92G   7% /
devtmpfs        980M     0  980M   0% /dev
tmpfs           991M     0  991M   0% /dev/shm
tmpfs           991M  9.6M  981M   1% /run
tmpfs           991M     0  991M   0% /sys/fs/cgroup
/dev/sda1       497M  120M  378M  25% /boot
tmpfs           199M     0  199M   0% /run/user/0
/dev/sdb1        10G  1.1G  9.0G  11% /fdisk01
/dev/sdb4       2.0G  2.0G   20K 100% /opt


#找到这个大文件  确认好之后在删  

[root@BC ~]# du  -sh  /opt/*  | grep  \'G\'
2.0G	/opt/test.log

一级一级往下找 
注意:如果该文件存在硬链接,一定要把硬链接文件删除。


02. 磁盘inode满故障

[root@BC ~]# echo  "123"  >>/opt/test.txt
-bash: /opt/test.txt: No space left on device
[root@BC ~]# 


[root@BC ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        98G  6.4G   92G   7% /
devtmpfs        980M     0  980M   0% /dev
tmpfs           991M     0  991M   0% /dev/shm
tmpfs           991M  9.6M  981M   1% /run
tmpfs           991M     0  991M   0% /sys/fs/cgroup
/dev/sda1       497M  120M  378M  25% /boot
tmpfs           199M     0  199M   0% /run/user/0
/dev/sdb1        10G  1.1G  9.0G  11% /fdisk01
/dev/sdb4       2.0G  582M  1.5G  29% /opt


[root@BC ~]# df -i
Filesystem       Inodes   IUsed    IFree IUse% Mounted on
/dev/sda3      51123712   46093 51077619    1% /
devtmpfs         250786     417   250369    1% /dev
tmpfs            253511       1   253510    1% /dev/shm
tmpfs            253511     774   252737    1% /run
tmpfs            253511      16   253495    1% /sys/fs/cgroup
/dev/sda1        256000     326   255674    1% /boot
tmpfs            253511       1   253510    1% /run/user/0
/dev/sdb1       5242880       4  5242876    1% /fdisk01
/dev/sdb4       1048576 1048576        0  100% /opt



[root@BC ~]# find  /opt/ -type  d   -size  +2M  | xargs  ls -lhd
drwxr-xr-x 2 root root 3.8M Aug  3 12:27 /opt/test/test01
drwxr-xr-x 2 root root 3.8M Aug  3 12:27 /opt/test/test02
drwxr-xr-x 2 root root 3.8M Aug  3 12:27 /opt/test/test03
drwxr-xr-x 2 root root 3.8M Aug  3 12:27 /opt/test/test04
drwxr-xr-x 2 root root 3.7M Aug  3 12:27 /opt/test/test05


[root@BC ~]# find  /opt/ -type  d   -size  +1M  | xargs  ls -lhd
drwxr-xr-x 2 root root 1.2M Aug  3 12:25 /opt/test/data01
drwxr-xr-x 2 root root 1.2M Aug  3 12:25 /opt/test/data02
drwxr-xr-x 2 root root 1.2M Aug  3 12:25 /opt/test/data03
drwxr-xr-x 2 root root 1.2M Aug  3 12:25 /opt/test/data04
drwxr-xr-x 2 root root 1.2M Aug  3 12:25 /opt/test/data05
drwxr-xr-x 2 root root 3.8M Aug  3 12:27 /opt/test/test01
drwxr-xr-x 2 root root 3.8M Aug  3 12:27 /opt/test/test02
drwxr-xr-x 2 root root 3.8M Aug  3 12:27 /opt/test/test03
drwxr-xr-x 2 root root 3.8M Aug  3 12:27 /opt/test/test04
drwxr-xr-x 2 root root 3.7M Aug  3 12:27 /opt/test/test05


[root@BC ~]# ll /opt/test/data01  | wc -l
50001


#找到之后,确认在删除  


[root@BC ~]# find  /opt/test/data01 -type  f  -delete


[root@BC ~]# rm -f  /opt/test/test01/*
-bash: /usr/bin/rm: Argument list too long


[root@BC ~]# ll  /opt/test/test01/ | wc -l
150001


2020年08月04日上午(day23)

一、进程的概述

1.什么是进程?

言简意赅总结:当我们运行一个程序,那么我们将该程序称之为进程。

注意:

当程序运行为进程后,系统会为该进程分配内存,以及运行的身份和权限。

分配了系统的资源   文件描述符  进程描述符   网络端口   ID号    PID  PPID

系统会记录进程的运行中的状态    STATAE

在进程运行的过程中,服务器上会有各种状态来表示当前进程的指标信息。

2.进程和程序的区别

程序是指令和数据的有序集合    静态的概念    永久存在的

进程是程序在主机上面运行的一个过程   动态的概念   会随着程序的创建,运行,终止,消除而终止    临时

3.进程的生命周期

 每一个进程都有其生命周期,例如创建、运行、终止和消除。这些阶段会在系统启动和运行中重复无数次。因此,进程的生命周期对于其性能的分析是非常重要的。
 
进程的运行过程:

用户运行了一个程序,系统会给进程分配任务,进程会通过fork一个子进程,子进程会继承父进程的衣钵,子进程处理具体的任务,父进程就会进入等待状态,子进程任务结束,回来向父进程交任务,子进程正常退出

子进程在执行任务时,父进程因为意外原因退出了,那么子进程就会变成无人管理,就是僵尸进程

每个进程都有自己的代号  ID号  子进程  PID   父进程  PPID  

二、进程的状态

1.使用ps命令查看当前的进程状态

ps aux是常用组合,查看进程用户、PID、占用CPU百分比、占用内存百分比、状态、执行的命令等。

ps		#显示进程的命令  静态显示  

	a		#显示所有进程
	
	u		#显示有效的用户或者uid
	
	x		#显示没有终端
	
	aux
	
	-e		#显示所有进程 
	
	-f		#显示用户PPID   
	
	-ef		#显示所有的进程及进程的PPID
	
[root@BC ~]# ps  aux	
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.1 125420  2112 ?        Ss   Aug03   0:03 /usr/lib/systemd/systemd --switched-root --system --des
root          2  0.0  0.0      0     0 ?        S    Aug03   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    Aug03   0:00 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   Aug03   0:00 [kworker/0:0H]
root          7  0.0  0.0      0     0 ?        S    Aug03   0:00 [migration/0]
root          8  0.0  0.0      0     0 ?        S    Aug03   0:00 [rcu_bh]
root          9  0.0  0.0      0     0 ?        R    Aug03   0:07 [rcu_sched]
root         10  0.0  0.0      0     0 ?        S<   Aug03   0:00 [lru-add-drain]
root         11  0.0  0.0      0     0 ?        S    Aug03   0:00 [watchdog/0]


USER 	#进程运行的身份  用户        

PID 	#进程的ID号

PPID	#父进程的ID号

%CPU 	#进程占用CPU的百分比 

%MEM   	#进程占用内存的百分比  

VSZ  	#虚拟内存集    进程占用虚拟内存的大小  

RSS 	#物理内存集    进程占用物理内存的大小

TTY  	#终端 

	?		#没有终端   内核运行的程序 
	
	tty1	#机器的终端  服务器的本地
	
	pts/0	#虚拟远程终端  

STAT 	#进程的状态

	S		#休眠的状态 
	
	R		#正在运行的状态 
	
	D		#无法中断的休眠状态 
	
	T		#暂停或被追踪的状态
	
	Z		#僵尸状态
	
	s		#父进程 
	
	<		#优先级高
	
	N		#优先级低
	
	l		#多线程 
	
	+		#在前台运行 



START   	#进程的启动时间 

TIME 		#进程占用CPU的时间

COMMAND		#执行的指令或者命令

	[]		#内核运行的  
	
	无[]		#用户运行的  


[root@BC ~]# ps  -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 Aug03 ?        00:00:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2      0  0 Aug03 ?        00:00:00 [kthreadd]
root          3      2  0 Aug03 ?        00:00:00 [ksoftirqd/0]
root          5      2  0 Aug03 ?        00:00:00 [kworker/0:0H]
root          7      2  0 Aug03 ?        00:00:00 [migration/0]
root          8      2  0 Aug03 ?        00:00:00 [rcu_bh]
root          9      2  0 Aug03 ?        00:00:07 [rcu_sched]
root         10      2  0 Aug03 ?        00:00:00 [lru-add-drain]




案例1

[root@BC ~]# vim  test.log

#另外一个窗口 

[root@BC ~]# ps  aux |grep -v grep | grep  vim
root      12592  0.2  0.2 149168  4996 pts/0    S+   09:04   0:00 vim test.log
[root@BC ~]# ps  aux | grep  [v]im
root      12592  0.1  0.2 149168  4996 pts/0    S+   09:04   0:00 vim test.log


[root@BC ~]# vim  test.log		#ctrl +  z  放入到后台

[1]+  Stopped                 vim test.log



[root@BC ~]# ps  aux | grep  [v]im
root      12592  0.0  0.2 149168  4996 pts/0    T    09:04   0:00 vim test.log


案例二

[root@BC ~]# tar  czf  etc.tar.gz   /usr  /etc/  /var  
tar: Removing leading `/\' from member names
tar: Removing leading `/\' from hard link targets



[root@BC ~]# ps  aux | grep  [t]ar
root      12617  7.0  0.0 123408  1352 pts/0    R+   09:08   0:00 tar czf etc.tar.gz /usr /etc/ /var
[root@BC ~]# ps  aux | grep  [t]ar
root      12617  6.0  0.0 123408  1352 pts/0    D+   09:08   0:00 tar czf etc.tar.gz /usr /etc/ /var
[root@BC ~]# ps  aux | grep  [t]ar
root      12617  6.2  0.0 123540  1352 pts/0    R+   09:08   0:00 tar czf etc.tar.gz /usr /etc/ /var
[root@BC ~]# ps  aux | grep  [t]ar
root      12617  5.8  0.0 123540  1352 pts/0    D+   09:08   0:00 tar czf etc.tar.gz /usr /etc/ /var
[root@BC ~]# ps  aux | grep  [t]ar
root      12617  5.5  0.0 123540  1352 pts/0    D+   09:08   0:00 tar czf etc.tar.gz /usr /etc/ /var
[root@BC ~]# ps  aux | grep  [t]ar
root      12617  6.5  0.0 123540  1352 pts/0    S+   09:08   0:00 tar czf etc.tar.gz /usr /etc/ /var
[root@BC ~]# ps  aux | grep  [t]ar
root      12617  5.8  0.0 123540  1352 pts/0    S+   09:08   0:00 tar czf etc.tar.gz /usr /etc/ /var
[root@BC ~]# ps  aux | grep  [t]ar
root      12617  6.1  0.0 123540  1352 pts/0    R+   09:08   0:00 tar czf etc.tar.gz /usr /etc/ /var


[root@BC ~]# ps  aux | grep  [b]ash
root       7193  0.0  5.4 225028 111152 pts/0   Ss   Aug03   0:04 -bash
root      12575  0.0  0.1 115572  2120 pts/1    Ss+  09:04   0:00 -bash
root      12641  0.0  5.4 225028 110280 pts/0   R+   09:09   0:00 -bash


案例三

[root@BC ~]# vim test.c 
#include <sys/types.h> 
#include <sys/wait.h> 
#include <errno.h> 
#include <unistd.h> 
#include <stdlib.h> 
#include <stdio.h> 
#include <string.h> 


int main(int argc, char *argv[]) 
{ 
pid_t pid; 
pid = fork(); 
if (pid == 0) { 
int iPid = (int)getpid(); 
fprintf(stderr,"I am child,%d\n",iPid); 
sleep(1); 
fprintf(stderr, "Child exits\n"); 
return EXIT_SUCCESS; 
} 
int iPid = (int)getpid(); 
fprintf(stderr,"I am parent,%d\n",iPid); 
fprintf(stderr, "sleep....\n"); 
sleep(600); 
fprintf(stderr, "parent exits\n"); 
return EXIT_SUCCESS; 
} 


[root@BC ~]# gcc  test.c
[root@BC ~]# ll
total 1218672
-rwxr-xr-x 1 root root       8696 Aug  4 09:11 a.out
-rw-r--r-- 1 root root  199327744 Aug  4 09:09 etc.tar.gz
-rw------- 1 root root 1048576000 Aug  3 11:22 swap.txt
-rw-r--r-- 1 root root        547 Aug  4 09:10 test.c
[root@BC ~]# ./a.out 
I am parent,12655
sleep....
I am child,12656
Child exits
^C



[root@BC ~]# ps  aux | grep  [a.]out
root      12655  0.0  0.0   4208   352 pts/0    S+   09:11   0:00 ./a.out
root      12656  0.0  0.0      0     0 pts/0    Z+   09:11   0:00 [a.out] <defunct>

2.使用top命令查看当前的进程状态(动态)

top     htop			#动态显示进程状态

[root@BC ~]# yum install  -y  htop

[root@BC ~]# top 
top - 09:33:58 up 23:31,  2 users,  load average: 0.24, 0.10, 0.07
Tasks: 113 total,   1 running, 112 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  2028088 total,   155648 free,   363844 used,  1508596 buff/cache
KiB Swap:  2097148 total,  2069756 free,    27392 used.   974036 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND               



top - 09:33:58 up 23:31,  2 users,  load average: 0.24, 0.10, 0.07


09:33:58	#当前系统时间

up 23:31	#系统运行时间 

2 users		#登录用户的数量  连接终端的数量 

load average: 0.24, 0.10, 0.07			#系统平均负载时间   1  5  15 分钟的平均负载 
 
 
Tasks: 113 total,   1 running, 112 sleeping,   0 stopped,   0 zombie

任务:

113 total,		#总共有113个任务 

1 running		#一个在运行状态

112 sleeping	#112休眠状态  S  

0 stopped		#0个停止状态

0 zombie		#0个在僵尸状态 


%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st 
 
系统各个状态所占用CPU的时间百分比  	

0.0 us		#用户态  用户所占用的CPU的时间百分比

0.0 sy		#系统态  系统所占用的CPU的时间百分比

0.0 ni		#使用优先级的程序所占用的CPU的时间百分比

100.0 id	#空闲状态所占用的CPU的时间百分比

0.0 wa		#IO等待所占用的CPU的时间百分比

0.0 hi		#硬中断所占用的CPU的时间百分比

0.0 si		#软中断所占用的CPU的时间百分比

0.0 st		#宿主机的监控程序所窃取的虚拟机的CPU的时间百分比 


KiB Mem :  2028088 total,   155648 free,   363844 used,  1508596 buff/cache


物理内存     总的 				剩余的        已使用的       缓存和缓冲中的内存 



KiB Swap:  2097148 total,  2069756 free,    27392 used.   974036 avail Mem 

虚拟内存 


PID 		#进程的ID号


USER		#运行的身份  用户       

PR  		#优先级  20

NI  		#nice值    跟PR 相差 20个数    值越低,优先级就越高 

VIRT    	#所占用的虚拟内存的大小

RES  		#所占用的物理内存的大小  

SHR 		#共享内存 

S 			#进程的状态 

%CPU 		#占用CPU的百分比

%MEM 		#占用内存的百分比      

TIME+ 		#CPU的运行时间

COMMAND		#运行的指令或者命令 


top命令的内部指令

h     #查看帮出

z     #高亮显示

1     #显示所有CPU的负载

s     #设置刷新时间

b     #高亮显示处于R状态的进程

M     #按内存使用百分比排序输出

P     #按CPU使用百分比排序输出

R     #对排序进行反转

f     #自定义显示字段

k     #kill掉指定PID进程

W     #保存top环境设置 ~/.toprc 

q     #退出


top选项:

[root@BC ~]# top  -d  1		#设置刷新时间


[root@BC ~]# top  -d  1  -p 1	#查看某个进程ID的进程状态 


[root@BC ~]# top  -d  1  -u  postfix	#显示指定运行用户的进程状态 


[root@BC ~]# free  -m
              total        used        free      shared  buff/cache   available
Mem:           1980         265         907          12         807        1114
Swap:          2047          29        2018


[root@BC ~]# yum install  -y  glances


[root@BC ~]# glances 

三、终止进程

1.使用kill -l 列出当前系统所支持的信号


kill		#管理系统中的信号输出 

[root@BC ~]# kill  -l
 1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
 6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ
26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
63) SIGRTMAX-1	64) SIGRTMAX	


1		#重新加载配置   进程pid的不变  


2		#终止信号  ctrl + c


9		#终止进程   强制终止 


15		#默认信号  终止进程   可加可不加 


18		#让暂停的进程继续运行


20		#ctrl + z  将进程暂停 


[root@BC ~]# yum install  -y  nginx 

[root@BC ~]# systemctl  start  nginx
[root@BC ~]# ps aux | grep nginx
root      13063  0.0  0.1 120796  2096 ?        Ss   10:36   0:00 nginx: master process /usr/sbin/nginx
nginx     13064  0.2  0.1 121180  3128 ?        S    10:36   0:00 nginx: worker process


[root@BC ~]# kill  -1  13063
[root@BC ~]# ps aux | grep nginx
root      13063  0.0  0.2 121452  5248 ?        Ss   10:36   0:00 nginx: master process /usr/sbin/nginx
nginx     13070  0.0  0.1 121876  3836 ?        S    10:37   0:00 nginx: worker process



[root@BC ~]# netstat  -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      13063/nginx: master

[root@BC ~]# kill -1  13063
[root@BC ~]# netstat  -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:81              0.0.0.0:*               LISTEN      13063/nginx: master


[root@BC ~]# top

[root@BC ~]# ps  aux |grep  [t]op
root      13115  0.0  0.1 161988  2212 pts/1    S+   10:41   0:00 top
[root@BC ~]# kill -2 13115
[root@BC ~]# ps  aux |grep  [t]op
[root@BC ~]# 


[root@BC ~]# kill  -9  13063



[root@BC ~]# kill 13141
[root@BC ~]# ps  aux |grep  [t]op
root      13144  0.0  0.1 161984  2212 pts/1    S+   10:44   0:00 top
[root@BC ~]# kill -15 13144



kill		#根据进程ID去终止进程的   进程不存在时,会进行提示  


#根据名称终止进程   精确匹配 


[root@BC ~]# killall   top

[root@BC ~]# killall  nginx


[root@BC ~]# killall  nginx		#进程不存在时,会提示 
nginx: no process found


[root@BC ~]# ps  aux | grep  [v]im
root      13264  0.0  0.2 149168  4972 pts/0    S+   10:53   0:00 vim 123.txt
root      13265  0.1  0.2 149168  4972 pts/1    S+   10:53   0:00 vim 123.log
[root@BC ~]# killall  vim



pkill		#根据进程名称终止   终止进程不会提示    模糊杀手   


[root@BC ~]# ps  aux | grep  [t]op
root      13278  0.0  0.1 161988  2216 pts/0    S+   10:56   0:00 top
root      13279  0.1  0.1 122396  2112 pts/1    S+   10:56   0:00 htop
[root@BC ~]# pkill   top
[root@BC ~]# ps  aux | grep  [t]op
[root@BC ~]# 

[root@BC ~]# ps  aux |grep  sh
root       6935  0.0  0.0 112756  1276 ?        Ss   Aug03   0:00 /usr/sbin/sshd -D
root       7191  0.0  0.0 161364  1616 ?        Ss   Aug03   0:00 sshd: root@pts/0
root       7193  0.0  5.4 225028 111168 pts/0   Ss+  Aug03   0:05 -bash
root      12573  0.0  0.2 161364  5936 ?        Ss   09:04   0:00 sshd: root@pts/1
root      12575  0.0  0.1 115572  2196 pts/1    Ss   09:04   0:00 -bash
root      13215  0.0  0.2 161364  6056 ?        Ss   10:50   0:00 sshd: root@pts/2
root      13217  0.0  0.1 115572  2184 pts/2    Ss   10:50   0:00 -bash
root      13296  0.0  0.0 113176  1196 pts/2    S+   10:59   0:00 sh 123.txt
root      13299  0.0  0.0 113176  1216 ?        Ss   10:59   0:00 /bin/sh -c /usr/sbin/ntpdate  ntp.aliyun.com &>/dev/null
root      13302  0.0  0.0 112708   976 pts/1    R+   10:59   0:00 grep --color=auto sh
[root@BC ~]# pkill  sh  


#以树形结构显示进程状态 

[root@BC ~]# pstree
systemd─┬─NetworkManager───2*[{NetworkManager}]
        ├─VGAuthService
        ├─auditd───{auditd}
        ├─crond───crond───sh───ntpdate
        ├─dbus-daemon
        ├─firewalld───{firewalld}
        ├─login───bash
        ├─master─┬─pickup
        │        └─qmgr
        ├─ping
        ├─polkitd───6*[{polkitd}]
        ├─rsyslogd───2*[{rsyslogd}]
        ├─sshd───sshd───bash───pstree
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tuned───4*[{tuned}]
        ├─vmtoolsd
        └─vsftpd


四、管理进程的后台

1. 什么是后台进程

    通常进程都会在终端前台运行,但是一旦关闭终端,进程也会随着结束,那么此时我们就希望进程能在后台运行,就是将在前台运行的进程放到后台运行,这样即使我们关闭了终端也不影响进程的正常运行。

2. 为什么要把进程放到后台运行

企业中很多时候会有一些需求:

比如:我们此前在国内服务器往国外服务器传输大文件时,由于网络问题需要传输很久,如果在传输的过程中出现网络抖动或者不小心关闭了终端则会导致传输失败,如果能将传输的进程放入后台,是不是就能解决此类问题了。

3. 使用什么工具可以把进程放到后台

    早期的时候,大家都选择使用&符号将进程放到后台运行,然后再使用jobs、bg、fg等方式查看进程状态,但太麻烦了,也不直观,所以我们推荐使用screen。    

1)jobs、bg、fg的使用(不推荐,了解即可)

[root@BC ~]# sleep 3000 &         #运行程序(时),让其在后台执行

[root@BC ~]# sleep 4000         #^Z,将前台的程序挂起(暂停)到后台

[2]+ Stopped sleep 4000
[root@BC ~]# ps aux |grep sleep
[root@BC ~]# jobs                 #查看后台作业
[1]- Running sleep 3000 & 
[2]+ Stopped sleep 4000


[root@BC ~]# bg %2             #让作业 2 在后台运行
[root@BC ~]# fg %1             #将作业 1 调回到前台
[root@BC ~]# kill %1             #kill 1,终止 PID 为 1 的进程


#进程在后台运行,但输出依然在当前终端


[root@BC ~]# (while :; do date; sleep 2; done) &


[root@BC ~]# (while :; do date; sleep 2; done) &>/dev/null &

2)screen的使用(强烈推荐,生产必用)


使用screen时会开启一个子bash窗口,关闭父bash并不影响子bash。


#1.安装
[root@BC ~]# yum install screen -y


#2.开启一个screen窗口,指定名称
[root@BC ~]# screen -S wget_mysql


#3.在screen窗口中执行任务即可。


#4.平滑的退出screen,但不会终止screen中的任务。注意: 如果使用exit才算真的关闭screen窗口
ctrl+a+d


#5.查看当前正在运行的screen有哪些
[root@BC ~]# screen -list
There is a screen on:
    22058.wget_mysql    (Detached)
1 Socket in /var/run/screen/S-root.


#6.进入正在运行的screen
[root@BC ~]# screen -r wget_mysql
[root@BC ~]# screen -r 22058

[root@BC ~]# tar  czf  etc.tar.gz     /usr/  /etc/  /var  
tar: Removing leading `/\' from member names
tar: Removing leading `/\' from hard link targets


Connection closed.

Disconnected from remote host(虚拟机-10.0.0.100) at 11:13:33.

Type `help\' to learn how to use Xshell prompt.
[C:\~]$ 

Connecting to 10.0.0.100:22...
Connection established.
To escape to local shell, press \'Ctrl+Alt+]\'.

Last login: Tue Aug  4 11:12:44 2020 from 10.0.0.1
[root@BC ~]# ll
total 35408
-rw-r--r-- 1 root root 36257792 Aug  4 11:13 etc.tar.gz
[root@BC ~]# ll -h
total 35M
-rw-r--r-- 1 root root 35M Aug  4 11:13 etc.tar.gz
[root@BC ~]# tar  czf  etc.tar.gz     /usr/  /etc/  /var  
tar: Removing leading `/\' from member names
tar: Removing leading `/\' from hard link targets
^C
[root@BC ~]# ll -h
total 128M
-rw-r--r-- 1 root root 104M Aug  4 11:14 etc.tar.gz
[root@BC ~]# 



#将程序放入到后台运行

1.  nohup   &  

[root@BC ~]# nohup   ping  www.baidu.com  &
[1] 13517
[root@BC ~]# nohup: ignoring input and appending output to ‘nohup.out’

[root@BC ~]# 


[root@BC ~]# nohup   ping  www.baidu.com  &
[1] 13592
[root@BC ~]# nohup: ignoring input and appending output to ‘nohup.out’

[root@BC ~]# 
[root@BC ~]# 
[root@BC ~]# ps  aux |grep  13592
root      13592  0.0  0.0 149968  1988 pts/1    S    11:17   0:00 ping www.baidu.com
root      13594  0.0  0.0 112708   976 pts/1    R+   11:17   0:00 grep --color=auto 13592


[root@BC ~]# jobs		#显示当前窗口的后台进程 
[1]+  Running                 nohup ping www.baidu.com &


[root@BC ~]# vim  test.log

[2]+  Stopped                 vim test.log
[root@BC ~]# jobs
[1]-  Running                 nohup ping www.baidu.com &
[2]+  Stopped                 vim test.log

#将后台程序放入到前台运行 

[root@BC ~]# fg  %2


#将暂停在后台的程序继续在后台运行    输出还是输出到屏幕上面 

[root@BC ~]# bg %2
[2]+ ping www.baidu.com &


[root@BC ~]# ping  www.baidu.com
PING www.a.shifen.com (112.80.248.75) 56(84) bytes of data.
64 bytes from 112.80.248.75 (112.80.248.75): icmp_seq=1 ttl=128 time=16.5 ms
64 bytes from 112.80.248.75 (112.80.248.75): icmp_seq=2 ttl=128 time=13.7 ms
64 bytes from 112.80.248.75 (112.80.248.75): icmp_seq=3 ttl=128 time=13.8 ms
^Z
[1]+  Stopped                 ping www.baidu.com
[root@BC ~]# jobs
[1]+  Stopped                 ping www.baidu.com
[root@BC ~]# fg %1
ping www.baidu.com
64 bytes from 112.80.248.75 (112.80.248.75): icmp_seq=4 ttl=128 time=14.2 ms
64 bytes from 112.80.248.75 (112.80.248.75): icmp_seq=5 ttl=128 time=14.5 ms
64 bytes from 112.80.248.75 (112.80.248.75): icmp_seq=6 ttl=128 time=14.7 ms
^C
--- www.a.shifen.com ping statistics ---
7 packets transmitted, 6 received, 14% packet loss, time 48609ms
rtt min/avg/max/mdev = 13.700/14.604/16.559/0.955 ms


2. screen		#后台管理程序 


#列出screen后台运行的程序

[root@BC ~]# screen   -list
No Sockets found in /var/run/screen/S-root.

[root@BC ~]# 

[root@BC ~]# screen  -S     vim		#打开一个新的窗口 并指定窗口名称 
[detached from 13659.vim]

[root@BC ~]# screen  -list
There is a screen on:
	13659.vim	(Detached)
1 Socket in /var/run/screen/S-root.


[root@BC ~]# screen   -r  vim		#或者通过id号 


[root@BC ~]# screen   -xr  vim		#实时监控窗口的操作



[detached from 13659.vim]


ctrl +  a  + d   #临时退出 

exit	#真正退出 


五、系统平均负载


[root@BC ~]# top
top - 11:54:48 up 1 day,  1:52,  3 users,  load average: 0.00, 0.01, 0.05


[root@BC ~]# w
 11:54:59 up 1 day,  1:52,  3 users,  load average: 0.00, 0.01, 0.05


[root@BC ~]# uptime
 11:55:09 up 1 day,  1:53,  3 users,  load average: 0.00, 0.01, 0.05



1分钟    5分钟    15分钟   系统的平均负载 

平均负载跟系统CPU的使用率没有太大关系


在单位时间内,系统正在运行中的进程数或者不可中断的进程数量   进程的活跃数量 


跟CPU的核心数有关系 


当负载为2的时候    

核心数为4       50% 

核心数为2		100% 

核心数为1       200%



当1分钟的值小于5分钟和15分钟的时候   说明你之前的平均负载过高,当前正在降低  

当1分钟跟5分钟和15分钟的值很近的时候,平均负载很稳定  

当1分钟的值大于5分钟和15分钟的时候,说明现在的负载正在慢慢的变大   


当值达到70%   就要开始分析问题  

六、day21作业



1.某系统管理员需要每天做一定的重复工作,编制一个解决方案: 
(1).从下午4:50删除/abc目录下的全部子目录和全部文件;  

[root@BC ~]#crontab -e 
50  16  * * *   /bin/rm  -rf  /abc/*  &>/dev/null

(2).每逢周一下午5:50将/data目录下的所有目录和文件归档并压缩为文件backup.tar.gz;  

[root@BC ~]#crontab -e 
50  17  *  *  1  /bin/tar  czf  $(date  +\%F)_backup.tar.gz   /data  &>/dev/null 

2.在每个月的第一天压缩/etc目录下的所有内容,存放在/root/backup目录里,且文件名为当前系统时间?

[root@BC ~]#crontab -e 
00  00  1  *  *  /bin/tar  czf   /root/backup/$(date  +\%F)_etc.tar.gz  /etc  &>/dev/null

3.每周三01:00~04:00每3分钟执行一次/home/data/demo.sh

[root@BC ~]#crontab -e 
*/3  1-4  *  * 3  /bin/bash  /home/data/demo.sh   &>/dev/null

4.每周一到周六的凌晨3点20分,运行tar命令对/etc/目录进行存档另存,存储位置为/data/bak,文件名为“system_+当前系统时间”

[root@BC ~]#crontab -e 
20  3  *  * 1-6  /bin/tar  czf   /data/bak/system_$(date +\%F).tar.gz   /etc/  &>/dev/null

5.每日凌晨2点30分,运行cp命令对/etc/fstab文件拷贝到/tmp下

[root@BC ~]#crontab -e 
30  2  *  *  *  /bin/cp  /etc/fstab  /tmp/fstab_$(date +\%F)   &>/dev/null

6.每月每天凌晨3点30分和中午12点20分执行test.sh脚本

[root@BC ~]#crontab -e 
30  3  *   *  *  /bin/bash  test.sh  &>/dev/null

[root@BC ~]#crontab -e 
20  12  *   *  *  /bin/bash  test.sh  &>/dev/null

7.每月每天每隔6小时的每30分钟执行test.sh脚本

[root@BC ~]#crontab -e 
*/30  */6  *  *  *   /bin/bash  test.sh  &>/dev/null

8.每月每天早上8点到下午18点每隔2小时的每30分钟执行test.sh脚本

[root@BC ~]#crontab -e 
*/30  8-18/2  *  *  *   /bin/bash  test.sh  &>/dev/null

9.每月每天晚上21点30分执行test.sh脚本

[root@BC ~]#crontab -e 
30  21  *  *  *  /bin/bash  test.sh  &>/dev/null

10.每月1号、10号、22号凌晨4点45分执行test.sh脚本

[root@BC ~]#crontab -e 
45  4  1,10,22  *  *  /bin/bash  test.sh  &>/dev/null

11.8月份周一、周日凌晨1点10分执行test.sh脚本

[root@BC ~]#crontab -e 
10  1  *  8  1,7  /bin/bash  test.sh  &>/dev/null

12.每月每天每小时整点执行test.sh脚本

[root@BC ~]#crontab -e 
00  *  *  *  *  /bin/bash  test.sh  &>/dev/null

13.每月的4号或每周一到周三的11点重启vsftpd服务

[root@BC ~]#crontab -e 
00  11  4  *  1-3    /usr/bin/systemctl  restart   vsftpd    &>/dev/null

14.解释如下命令的含义
30 3,12 *  *  *  /bin/sh  /scripts/oldboy.sh  #每天的3点或者12点的30分执行/scripts/oldboy.sh

30 */6 * * * /bin/sh /scripts/oldboy.sh    #每天每隔6隔小时的30分执行/scripts/oldboy.sh

30 8-18/2 * * * /bin/sh /scripts/oldboy.sh  #每天的8点到18点每隔2隔的30分执行/scripts/oldboy.sh

30 21 * * * /usr/sbin/nginx -s reload		#每天晚上21点30分重载nginx服务


45 4 1,10,22 * * /usr/sbin/nginx -s reload	#每个月的1号 10号 2号的凌晨4点45分 重载nginx服务


10 1 * * 6,0 /usr/sbin/nginx -s reload		#每周六或者周日的凌晨1点10分重载nginx服务


0,30 18-23 * * * /usr/sbin/nginx -s reload	#每天的18点到23点的0分和30分执行重载nginx服务


00 11 * 4 1-3 /usr/sbin/nginx -s reload		#每年的4月份的每周一到周三的上午11点整重载nginx服务

15.写一条计划任务,在每天晚上的3:05分执行脚本/usr/script/tongji.sh

[root@BC ~]#crontab -e 
05  3  *  *  *  /bin/bash  /usr/script/tongji.sh  &>/dev/null

16.在每周6的凌晨3:15执行/home/shell/collect.pl,并将标准输出和标准错误输出到/dev/null设备,请写出crontab中的语句

[root@BC ~]#crontab -e 
15  3  *  *  6   /bin/bash  /home/shell/collect.pl  &>/dev/null

2020年08月05日上午(day24)

一、开机启动流程

1.按下电源

2.BIOS自检

3.MBR引导

4.进入GRUB菜单

5.加载内核kernel

6.systemd 		init进程

7.读取运行级别

[root@BC ~]# ll  /etc/systemd/system/default.target
lrwxrwxrwx 1 root root 37 Jul  6 02:16 /etc/systemd/system/default.target -> /lib/systemd/system/multi-user.target


[root@BC ~]# ll  /usr/lib/systemd/system/runlevel*.target
lrwxrwxrwx. 1 root root 15 Jul  6 02:14 /usr/lib/systemd/system/runlevel0.target -> poweroff.target
lrwxrwxrwx. 1 root root 13 Jul  6 02:14 /usr/lib/systemd/system/runlevel1.target -> rescue.target
lrwxrwxrwx. 1 root root 17 Jul  6 02:14 /usr/lib/systemd/system/runlevel2.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 Jul  6 02:14 /usr/lib/systemd/system/runlevel3.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 Jul  6 02:14 /usr/lib/systemd/system/runlevel4.target -> multi-user.target
lrwxrwxrwx. 1 root root 16 Jul  6 02:14 /usr/lib/systemd/system/runlevel5.target -> graphical.target
lrwxrwxrwx. 1 root root 13 Jul  6 02:14 /usr/lib/systemd/system/runlevel6.target -> reboot.target

8.初始化系统

[root@BC ~]# ll  /usr/lib/systemd/system/sysinit.target
-rw-r--r--. 1 root root 518 Oct 31  2018 /usr/lib/systemd/system/sysinit.target

9.并行启动开机自启动的服务

10.运行getty文件,显示登陆界面

[root@BC ~]# ll  /usr/lib/systemd/system/getty.target 
-rw-r--r--. 1 root root 460 Oct 31  2018 /usr/lib/systemd/system/getty.target


Centos-6  和 Centos-7的区别

init管理进程		 systemd管理进程

串行启动服务			并行启动服务

启动效率慢,容易故障	 启动效率高,不容易出现故障 

二、系统运行级别


[root@BC ~]# ll  /usr/lib/systemd/system/runlevel*.target
lrwxrwxrwx. 1 root root 15 Jul  6 02:14 /usr/lib/systemd/system/runlevel0.target -> poweroff.target
lrwxrwxrwx. 1 root root 13 Jul  6 02:14 /usr/lib/systemd/system/runlevel1.target -> rescue.target
lrwxrwxrwx. 1 root root 17 Jul  6 02:14 /usr/lib/systemd/system/runlevel2.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 Jul  6 02:14 /usr/lib/systemd/system/runlevel3.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 Jul  6 02:14 /usr/lib/systemd/system/runlevel4.target -> multi-user.target
lrwxrwxrwx. 1 root root 16 Jul  6 02:14 /usr/lib/systemd/system/runlevel5.target -> graphical.target
lrwxrwxrwx. 1 root root 13 Jul  6 02:14 /usr/lib/systemd/system/runlevel6.target -> reboot.target



0		poweroff       #关机 

1		rescue		   #单用户模式  

2		multi-user		#多用户模式 

3		multi-user		#多用户模式

4		multi-user		#多用户模式 

5		graphical		#图形界面模式  桌面模式

6		reboot			#重启 



#如何查看系统运行级别 

Centos-6  

[root@BC ~]# runlevel 
N 3
[root@BC ~]# init  5
[root@BC ~]# runlevel 
3 5
[root@BC ~]# init  3


Centos-7

[root@BC ~]# systemctl  get-default
multi-user.target


#修改运行级别

[root@BC ~]# systemctl  set-default   graphical.target 
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/graphical.target.
[root@BC ~]# systemctl  get-default
graphical.target
[root@BC ~]# systemctl  set-default   multi-user.target 
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.
[root@BC ~]# systemctl  get-default
multi-user.target


三、system介绍


systemd			system   daemon  

#主配置文件目录 
[root@BC ~]# ll  /etc/systemd/system/  -d
drwxr-xr-x. 12 root root 4096 Aug  5 09:05 /etc/systemd/system/

#系统服务配置文件 

[root@BC ~]# ll /usr/lib/systemd/system/  -d
drwxr-xr-x. 26 root root 12288 Jul 30 19:51 /usr/lib/systemd/system/

#程序,进程运行时产生的一些文件 

[root@BC ~]# ll  /run/systemd/system/  -d
drwxr-xr-x 5 root root 160 Aug  5 09:30 /run/systemd/system/


#启动 

[root@BC ~]# systemctl   start   nginx

#停止 

[root@BC ~]# systemctl   stop   nginx

#状态

[root@BC ~]# systemctl   status   nginx

#重启

[root@BC ~]# systemctl  restart   nginx

#平滑重启   

[root@BC ~]# systemctl  reload   nginx

#禁用某个服务 

[root@BC ~]# systemctl  mask   nginx

#解除禁用

[root@BC ~]# systemctl  unmask   nginx

#开机自启动

[root@BC ~]# systemctl  enable   nginx

#取消开机自启动

[root@BC ~]# systemctl  disable  nginx


status状态

active (running)		#运行 

Active: inactive (dead)	#不在运行

disabled				#开机不自启

enabled					#开机自启

failed					#失败


#显示当前运行级别下开机自启动的服务

[root@BC ~]# systemctl   list-unit-files 


四、system设置


#使用system进行管理关机重启操作 

[root@BC ~]# systemctl   reboot


[root@BC ~]# systemctl  poweroff 


#如何设置主机名

[root@BC ~]# hostname
BC
[root@BC ~]# hostnamectl 
   Static hostname: BC
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 6b11e94f1fe04eb89579c1c41f6f5307
           Boot ID: 783be43c5a44420ead4bd26792a6d22c
    Virtualization: vmware
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-957.el7.x86_64
      Architecture: x86-64

[root@BC ~]# hostnamectl   set-hostname   web01
[root@BC ~]# logout
Connection closing...Socket close.

Connection closed by foreign host.

Disconnected from remote host(虚拟机-10.0.0.100) at 09:54:12.

Type `help\' to learn how to use Xshell prompt.
[C:\~]$ 

Connecting to 10.0.0.100:22...
Connection established.
To escape to local shell, press \'Ctrl+Alt+]\'.

Last login: Wed Aug  5 17:51:59 2020 from 10.0.0.1
[root@web01 ~]# 

[root@web01 ~]# cat  /etc/hostname 
web01


Centos-6修改  临时生效

[root@web01 ~]# hostname  BC
[root@web01 ~]# logout
Connection closing...Socket close.

Connection closed by foreign host.

Disconnected from remote host(虚拟机-10.0.0.100) at 09:55:10.

Type `help\' to learn how to use Xshell prompt.
[C:\~]$ 

Connecting to 10.0.0.100:22...
Connection established.
To escape to local shell, press \'Ctrl+Alt+]\'.

Last login: Wed Aug  5 09:54:16 2020 from 10.0.0.1
[root@BC ~]# cat /etc/hostname 
web01


#如何修改字符集 


[root@BC ~]# echo $LANG
en_US.UTF-8
[root@BC ~]# localectl   set-locale   LANG=zh_CN.UTF-8
[root@BC ~]# logout
Connection closing...Socket close.

Connection closed by foreign host.

Disconnected from remote host(虚拟机-10.0.0.100) at 09:57:21.

Type `help\' to learn how to use Xshell prompt.
[C:\~]$ 

Connecting to 10.0.0.100:22...
Connection established.
To escape to local shell, press \'Ctrl+Alt+]\'.

Last login: Wed Aug  5 09:55:13 2020 from 10.0.0.1
[root@BC ~]# 
[root@BC ~]# cat  /etc/locale.conf 
LANG=zh_CN.UTF-8

[root@BC ~]# yum  install  -y  sl
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
软件包 sl-5.02-1.el7.x86_64 已安装并且是最新版本
无须任何处理


#临时修改变量 

[root@BC ~]# export   LANG=en_US.UTF-8
[root@BC ~]# echo  $LANG
en_US.UTF-8



#系统日志管理


[root@BC ~]# journalctl  -xe			#查看当前服务的日志 


[root@BC ~]# tail  /var/log/messages
Aug  5 10:01:32 BC systemd: Stopped The nginx HTTP and reverse proxy server.
Aug  5 10:01:32 BC systemd: Starting The nginx HTTP and reverse proxy server...
Aug  5 10:01:32 BC nginx: nginx: [emerg] unknown directive "isten" in /etc/nginx/nginx.conf:39
Aug  5 10:01:32 BC nginx: nginx: configuration file /etc/nginx/nginx.conf test failed
Aug  5 10:01:32 BC systemd: nginx.service: control process exited, code=exited status=1
Aug  5 10:01:32 BC systemd: Failed to start The nginx HTTP and reverse proxy server.
Aug  5 10:01:32 BC systemd: Unit nginx.service entered failed state.
Aug  5 10:01:32 BC systemd: nginx.service failed.
Aug  5 10:02:01 BC systemd: Started Session 19 of user root.
Aug  5 10:03:01 BC systemd: Started Session 20 of user root.


#查看日志的最后20行内容

[root@BC ~]# journalctl   -n 20

#实时查看日志的输出

[root@BC ~]# journalctl   -f

#显示日志的级别日志
[root@BC ~]# journalctl   -p  
alert    crit     debug    emerg    err      info     notice   warning  

[root@BC ~]# journalctl   -p  err 
-- Logs begin at Wed 2020-08-05 17:51:37 CST, end at Wed 2020-08-05 10:05:01 CST. --
Aug 05 17:51:41 BC kernel: sd 2:0:0:0: [sda] Assuming drive cache: write through
Aug 05 17:51:41 BC kernel: sd 2:0:1:0: [sdb] Assuming drive cache: write through
Aug 05 17:51:41 BC kernel: sd 2:0:2:0: [sdc] Assuming drive cache: write through
Aug 05 17:51:44 BC kernel: piix4_smbus 0000:00:07.3: SMBus Host Controller not enabled!
Aug 05 09:54:13 web01 sshd[7162]: error: Received disconnect from 10.0.0.1 port 50011:0:
Aug 05 09:55:11 BC sshd[7333]: error: Received disconnect from 10.0.0.1 port 50033:0:
Aug 05 09:57:22 BC sshd[7369]: error: Received disconnect from 10.0.0.1 port 50041:0:
Aug 05 09:59:29 BC sshd[7419]: error: Received disconnect from 10.0.0.1 port 50067:0:
Aug 05 10:00:51 BC sshd[7473]: error: Received disconnect from 10.0.0.1 port 50097:0:
Aug 05 10:01:32 BC systemd[1]: Failed to start The nginx HTTP and reverse proxy server.


#只查看某个服务的日志 

[root@BC ~]# journalctl   -u  sshd
-- Logs begin at Wed 2020-08-05 17:51:37 CST, end at Wed 2020-08-05 10:06:01 CST. --
Aug 05 17:51:56 BC systemd[1]: Starting OpenSSH server daemon...
Aug 05 17:51:56 BC sshd[6981]: Server listening on 0.0.0.0 port 22.
Aug 05 17:51:56 BC sshd[6981]: Server listening on :: port 22.
Aug 05 17:51:56 BC systemd[1]: Started OpenSSH server daemon.
Aug 05 17:51:59 BC sshd[7162]: Accepted password for root from 10.0.0.1 port 50011 ssh2
Aug 05 09:54:16 web01 sshd[7333]: Accepted password for root from 10.0.0.1 port 50033 ssh2
Aug 05 09:55:12 BC sshd[7369]: Accepted password for root from 10.0.0.1 port 50041 ssh2
Aug 05 09:57:26 BC sshd[7419]: Accepted password for root from 10.0.0.1 port 50067 ssh2
Aug 05 09:59:31 BC sshd[7473]: Accepted password for root from 10.0.0.1 port 50097 ssh2
Aug 05 10:00:52 BC sshd[7525]: Accepted password for root from 10.0.0.1 port 50111 ssh2

五、单用户模式

1.忘记root密码

开机在grub界面输入 e

img

在linux16开头的行的最后面输入  init=/bin/bash  enforcing=0  

img

按 ctrl键 + x

重新挂载根分区 mount -o rw,remount /

修改密码

img

img

重启 exec /sbin/init

img

2.运行级别被设置为重启

[root@web01 ~]# systemctl set-default reboot.target 
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/reboot.target.
[root@web01 ~]# systemctl get-default 
reboot.target

 
开机在grub界面输入 e

img

在linux16开头的行的最后面输入 rd.break

img

按 ctrl键 + x

重新挂载根分区 mount -o rw,remount /sysroot

赋予权限 chroot /sysroot

img

修改运行级别

img

exit

reboot

img

六、救援模式

1.系统损坏了,数据很重要 需要把数据拷贝出来

先挂载光盘,然后选择光盘引导为第一位,如下图所示。

img

img

进入故障排除模式,然后选择救援模式,如下图所示。

img

img

挂载真实系统后,发现数据都还存在,之后就可以挂在磁盘,将数据备份出来。

img

img

img

2.MBR引导坏掉,修复MBR,主要出现在安装双系统的时候,后安装的系统把原来的MBR删除了,需要修复

破坏硬盘的前446字节,模拟MBR引导损坏,会发现重启无法启动系统

dd if=/dev/zero of=/dev/sda bs=1 count=446

重启,查看系统状态

img

进入救援模式,分配一个shell,进行修复系统

\#修复grub
bash-4.2# grub2-install /dev/sda

\#退出
bash-4.2# exit

\#重启进入系统
bash-4.2# reboot

 

3.CentOS-7 误删除grub文件,进行修复

模拟故障

\#删除grub2
 rm -rf /boot/grub2/

\#重启

reboot

查看系统状态

img

进入救援模式,分配一个shell,进行修复系统

bash-4.2# grub2-install /dev/sda
bash-4.2# grub2-mkconfig -o /boot/grub2/grub.cfg
bash-4.2# ls /boot/grub2
bash-4.2# exit
sh-4.2# reboot

七、网卡命名规则

1.概述

CentOS6之前基于传统的命名方式如:eth1,eth0....
Centos7提供了不同的命名规则,默认是基于固件、拓扑、位置信息来分配。这样做的优点是命名是全自动的、可预知的,缺点是比eth0更难读。比如ens33

2.网卡命名的策略

规则1:如果Firmware或者BIOS提供的设备索引信息可用就用此命名。比如eno1。否则使用规则2

规则2:如果Firmware或Bios的PCI-E扩展插槽可用就用此命名。比如ens1,否则使用规则3

规则3:如果硬件接口的位置信息可用就用此命名。比如enp2s0

规则4:根据MAC地址命名,比如enx7d3e9f。默认不开启。

规则5:上述均不可用时回归传统命名方式

上面的所有命名规则需要依赖于一个安装包:biosdevname

biosdevname和net.ifnames属于两种不同的命名规范

CentOS-7中默认biosdevname的值为0,net.ifnames的值为1。


#命令行修改网卡命名规则

 mv /etc/sysconfig/network-scripts/ifcfg-ens33 ifcfg-eth0

#修改网卡配置文件设备名称

sed -i "s#ens33#eth0#g" ifcfg-eth0

#GRUB添加kernel参数 

vim /etc/sysconfig/grub
GRUB_CMDLINE_LINUX="...net.ifnames=0 biosdevname=0 quiet"

#加载到引导分区

 grub2-mkconfig -o /boot/grub2/grub.cfg

#重启系统生效

 reboot

2020年08月06日上午(day25)

一、更改Yum源添加epel源


默认国外的yum源(软件仓库)比较慢,所以换成国内的。

#1、备份
[root@qls ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

#2、下载新的CentOS-Base.repo 到/etc/yum.repos.d/
[root@qls ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

#3.添加epel源
[root@qls ~]# curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

二、关闭SELinux


	SELinux(Security-Enhanced Linux)是美国国家安全局(NSA)对于强制访问控制的实现,这个功能让系统管理员又爱又恨,这里我们还是把它给关闭了吧,至于安全问题,后面通过其他手段来解决,这也是大多数生产环境的做法,如果非要开启也是可以的。

#临时关闭
[root@qls ~]# setenforce  0

#永久关闭
[root@qls ~]# sed \'s#SELINUX=enforcing#SELINUX=disabled#g\' /etc/selinux/config

#检查结果
[root@qls ~]# grep "disabled" /etc/selinux/config

三、关闭防火墙(Firewalld)


	关闭防火墙的目的是为了让初学者学习更方便,将来在学了Firewalld技术后可再统一开启。 在企业环境中,一般只有配置外网IP的linux服务器才需要开启防火墙,但即使是有外网IP,对于高并发高流量的业务服务器仍是不能开的,因为会有较大性能损失,导致网站访问很慢,这种情况下只能在前端加更好的硬件防火墙了。

#临时关闭
[root@qls ~]# systemctl  stop firewalld

#永久关闭
[root@qls ~]# systemctl  disable  firewalld

四、关闭NetworkManager


在CentOS系统上,目前有NetworkManager和network两种网络管理工具。如果两种都配置会引起冲突,而且NetworkManager在网络断开的时候,会清理路由,如果一些自定义的路由,没有加入到NetworkManager的配置文件中,路由就被清理掉,网络连接后需要自定义添加上去。

network:对网卡的配置

NetworkManager:这个服务由几个部分组成;一个是管理系统网络连接;一个是允许用户管理网络连接的客户端程序,使用它可以更好的管理网络

#添加网卡

[root@BC ~]# cp  /etc/sysconfig/network-scripts/ifcfg-eth0  /etc/sysconfig/network-scripts/ifcfg-eth1

[root@BC ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
BOOTPROTO=none
NAME=eth1
DEVICE=eth1
ONBOOT=yes
IPADDR=172.16.1.100
PREFIX=24

[root@BC ~]# ifconfig   eth1   172.16.1.100/24

#临时关闭
[root@qls ~]# systemctl  stop  NetworkManager

#永久关闭
[root@qls ~]# systemctl  disable  NetworkManager

五、同步系统时间


#给定时任务加上注释
[root@qls ~]# echo \'#Timing synchronization time\' >>/var/spool/cron/root

#定时任务
[root@qls ~]# echo \'*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null\' >>/var/spool/cron/root

#检查结果
[root@qls ~]# crontab -l

六、 加大文件描述


#配置文件介绍
<domain> <type>  <item>  <value>

<domain>表示要限制的用户

<type>设定类型

<item>表示可选的资源

<value>表示要限制的值

#加大文件描述符
[root@qls ~]# echo \'*               -       nofile          65535 \' >>/etc/security/limits.conf 

#检查结果
[root@qls ~]# tail -1 /etc/security/limits.conf

七、别名及环境变量优化


#设置
[root@qls ~]# cat>>/etc/profile.d/color.sh<<\'EOF\'
alias ll=\'ls -l --color=auto --time-style=long-iso\'
PS1="\[\e[37;40m\][\[\e[32;1m\]\u\[\e[37;40m\]@\h \[\e[36;40m\]\w\[\e[0m\]]\[\e[32;1m\]\\$ \[\e[0m\]"
export HISTTIMEFORMAT=\'%F-%T \'
EOF

#生效
[root@qls ~]# source  /etc/profile

八、内核优化


#设置
[root@qls ~]# cat >>/etc/sysctl.conf<<EOF
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 4000    65000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_orphans = 16384
net.ipv4.ip_forward = 1
EOF

#生效
[root@qls ~]# sysctl  -p

九、配置SSH远程管理服务


#禁止DNS进行反向解析
[root@qls ~]# sed -i \'s/#UseDNS yes/UseDNS no/g\'  /etc/ssh/sshd_config

#检查结果
[root@qls ~]# grep \'UseDNS no\'  /etc/ssh/sshd_config 

#禁止GSS认证,减少连接时产生的延迟
[root@qls ~]# sed -i \'s/GSSAPIAuthentication yes/GSSAPIAuthentication no/g\'  /etc/ssh/sshd_config

#检查结果
[root@qls ~]# grep \'GSSAPIAuthentication no\'  /etc/ssh/sshd_config

#生效
[root@qls ~]# systemctl    restart   sshd

十、修改主机名和IP脚本


#脚本如下

[root@qls ~]# cat>/root/hostname_ip.sh<<\'EOF\'
#!/usr/bin/sh
source /etc/init.d/functions
if [ $# -ne 2 ];then
  echo "/bin/sh $0 New hostname  New IP address"
  exit 1
fi
hostnamectl  set-hostname   $1
if [ $? -eq 0 ];then
	action "hostname update Successfull." /bin/true
else
	action "hostname update Failed." /bin/false
fi
sed -ri  "/^IPA/s#(.*\.).*#\1$2#g"  /etc/sysconfig/network-scripts/ifcfg-eth[01]
if [ $? -eq 0 ];then
	action "IP update Successfull." /bin/true
	systemctl  restart  network
else
	action "IP update Failed!" /bin/false
fi
EOF

十一、安装常用软件


[root@qls ~]# yum -y install tree nmap sysstat lrzsz  telnet bash-completion bash-completion-extras vim  lsof  net-tools rsync ntpdate nfs-utils

十二、Linux基础优化及安全小结


1)禁止root用户远程连接,不用root登录管理系统,而以普通用户登录通过sudo授权管理。

2)更改默认的远程连接SSH服务端口,甚至要更改SSH服务只监听内网IP。

3)定时自动更新服务器的时间,使其和互联网时间同步。

4)配置yum更新源,从国内更新源下载安装软件包。

5)关闭SELinux及Firewalld(在工作场景中,如果有外部IP一般要打开Firewalld,高并发高流量的服务器可能无法开启)。

6)调整文件描述符的数量,进程及文件的打开都会消耗文件描述符数量。

7)定时自动清理邮件临时目录垃圾文件,防止磁盘的inodes数被小文件占满。

8)Linux内核参数优化。

9)更改系统字符集为“zh_CN.UTF-8”,使其支持中文,防止出现乱码问题。

10)锁定系统主要文件,处理后把chattr、lsattr改名,转移走,这样就安全多了。

11)清空/etc/issue、/etc/issue.net,去除系统及内核版本登录前的屏幕显示。

12)清除多余的系统虚拟用户账号。

13)为grub引导菜单加密码。

14)禁止主机被ping。echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

15)打补丁并升级有已知漏洞的软件。