1.远程连接及服务无法上网原因:..20
1)检查ip地址是否正确...20
2)检查网卡信息是否正确..20
3)检查是否关闭了CentOS7NetworkManager20
4)检查vmware虚拟网络编辑器...20
5)检查VMware服务在Windows下的服务是否正常运行...20
6)检查VMware网卡问题(在Windows下的网络连接里)..20
7)检查Windows是否开启了WIFI热点软件,是否被共享..21
8)测试端口是否打开..21
9)虚拟机克隆之后网卡彻底无法启动...21
第四章Linux命令行组成结构...21
1.Linux系统命令操作语法的格式...21
2.命令行中的快捷键..21
3.命令...22
第五章Linux目录文件与系统启动...26
1.Linux系统目录建构基本特点:...26
2.Linux的目录结构详解:..27
1)/etc/sysconfig/network-网卡配置文件...28
2)/etc/resolv.confDNS客户端配置..28
3)/etc/hostname配置主机名...29
4)/etc/hosts本地配置解析域名..29
5)/etc/fstab开机自动挂载...29
6)/etc/rc.local开机自动执行...29
7)linux下运行级别...29
8)/etc/profile环境变量配置...30
9)/etc/bashrc别名...30
12)/etc/redhat-release查看当前OS版本..30
13)history查看历史命令...31
4./var.31
1)/var/log/messages系统默认的日志文件..31
2)/var/log/secure系统的安全日志...31
5./proc虚拟的目录,内存的映射...31
1)/proc目录下常用文件介绍:...31
2)/proc/cpuinfocpu信息...31
3)/proc/meminfo查看内存信息...32
4)/proc/loadavgloadaverage系统负载..32
5)/proc/mounts查看挂载信息...33
第二次考...33
6.软件安装方法:...35
1)yum..35
2)rpm..35
第六章系统优化...36
1.yum源...36
2.创建普通用户...36
1)设置非交互式密码:...36
2)切换到用户:..36
3)查看当前用户是谁:...36
4)查看用户是否创建:...37
5)在oldboy回到root37
6)如果直接使用Xshell连接则上面的方法无效..37
3.关闭SElinux(必须关)...37
4.关闭防火墙...38
1)CentOS7.x.38
2)CentOS6.x.38
3)在生产环境中..39
5.字符集,乱码...39
1).如何查看字符集language语言...39
2).临时修改字符集重启失效...39
3).永久修改字符集...39
4).命令方式修改字符集...40
6.安装常用工具软件,命令...40
7.网络服务,永久和临时关闭NetworkManager40
第七章...40
第八章文件属性,文件和目录查找命令..41
1.文件和目录的查找...42
2.文件的属性...45
3.chmod修改权限...46
4.硬链接和软链接...47
1)硬链接:47
2)软链接...48
第三次考...48
第九章通配符与特殊符号..51
1.特殊符号...51
2.通配符(wildcard)..52
第十章正则表达式...53
1.基本正则表达式..53
2.扩展正则表达式..54
第十一章Linux系统启动流程..56
1.CentOS6.56
2.CentOS7.57
第十二章用户管理知识...58
1.存储用户信息文件/etc/passwd.58
2.存储用户密码信息文件/etc/shadow..58
3.useradd添加用户...58
批量添加用户:设置密码和设置随机密码..58
4.userdel删除用户...59
5.passwd设置密码...59
6.chown修改文件或目录的所有者和属于的用户组...59
7.如何让系统更安全:...59
1)最小化安装系统和软件..59
3)分析日志...59
4)文件系统权限..59
5)给重要的文件或命令做一个指纹..59
6)定时任务:md5sum..60
8.用户查询与切换命令...60
9.sudo临时让用户获得root权限(尚方宝剑)..60
第十三章Linux系统权限知识..61
第四次考...73
第十四章定时任务...80
定时任务书写要领:...83
第十五章磁盘管理...86
Linux误删文件后恢复数据...96
第十六章课程知识回顾...101
网站数据不能丢失;
网站7*24小时运行稳定;
提升用户体验。
运维人员的主要战场
服务器由于需要提供高可靠的服务,因此在处理能力,稳定性,可靠性,安全性,可扩展性,可管理性等方面要求较高。
1.塔式服务器:由于其个体较大,占用空间多,也不方便管理,所以使用较少。
2.刀片式服务器:高可用,高密度,可操作性很高
3.机架式服务器:1U=4.45cm厚度
常见的服务器品牌;DELLIBMHP联想浪潮等
DELL
1U
2U
2010年以前
18501950
28502950
2010-2013年
R410R610
R710
2014-2016年
R420/430R620/630
R720/730
2018年
R740
互联网公司应用最广
IBM
3550/m33550/m5
3650
4U
3850
8U
3950
较高大上,质量好,但价格贵,互联网公司不常用
去IOE运动:
I=IBM服务器
O=Oracle数据库
E=EMC存储
HP
DL380G7/G8
部分互联网公司应用
浪潮国产服务器,传统企业,学校用
华为国产服务器
联想国产服务器,用户较广,杂
双电源双路供电(民用电+商用电)
UPS蓄电池(30分钟-1小时)
柴油发电机
相当于人的大脑负责运算和控制(需加风扇负者散热,很关键)
常见品牌:IntelAMD
一般企业里的服务器:用2-4颗内存总量一般16G-256G(32G,64G)
做虚拟化的宿主机的服务器:用4-8颗内存总量一般48G-128G(6-10个虚拟机)
cpu和磁盘之间的缓冲的设备,负责计算机数据的中转,内存的容量和处理速度直接决定了数据传输的快慢
程序:静态的放在磁盘里的数据,代码文件
进程:正在运行着的程序
守护进程:一直持续保持运行着的程序
buffer:写入数据到内存里,这个存储数据的空间称为缓冲区
cache:从内存读取数据,这个存数据的内存空间称为缓存区
IDESCSI(已淘汰)
SATA(机械)7200-7500转
优点:容量大,价格便宜。
缺点:读写速度慢
SAS15000转
SSD(固态)
优点:速度快
缺点:容量小,价格贵
机械硬盘
SSD固态硬盘
SSD(固态)---SAS---SATA
热点数据-----SSD
冷数据-----SATA
作用:
可以获得更高的容量
可以使数据更安全
可以获得更高的性能(读写速度快)
磁盘阵列:
容量
性能
安全
RAID0
至少要一块物理磁盘,容量时磁盘的总和
读写都很快
任何一块损坏,所有数据不能使用
RAID1
损失50%的数据容量,只能2块硬盘
不能提高存储性能,理论上写性能和单盘相差不大
数据安全性高
RAID5
需要至少3块硬盘,损失一块硬盘容量
写入速度不快,读取ok
最多可以损坏一块硬盘
RAID10
最少4块硬盘,增加硬盘必须是2的倍数,容量是所有硬盘容量的一半
写入和读取都很快
最多损坏一半硬盘
远程管理卡有服务器自带的,也有独立的。
服务器自带的远程管理卡,可以关机,开机,但是看不到开关机的显示过程,所以选择独立的远程管理卡。
大客户有KVM远程管理卡,特大客户会有自己的人员驻扎机房。
远程开关机
远程制作raid
远程安装系统
分类:
集成管理卡
独立管理卡
厂商:
Dell--idrac
Hp--ilo
Ibm—rsa
阿里云
腾讯云
亚马逊云
等等…
1969年Unix在AT&T的贝尔实验室诞生,在70年代逐步盛行,这期间产生了一个比较重要的分支BSD系统,因此各大厂商根据自身公司硬件架构研发了各种版本的Unix系统。
Unix促使了C语言的诞生。
UNIX有强大的网络能力,强大的数据库能力,可扩展性,强大开发能力,技术成熟可靠性强。
84年,斯托曼发起了开发自由软件的运动,
公司:创办了自由软件基金会——FSF,
项目:成立了GNU项目.
规则:遵循GPL通用公共许可协议
90年,芬兰赫尔辛基大学生托瓦兹首次接触Minix系统,
91年,他在Minix上编写各种驱动程序等操作系统内核组件,在年底公开了Linix内核源码0.02版。
93年,Linux1.0版本发行,Linix转向GPL协议。
Linux属于自由软件,它具有UNIX全部的优秀特性,广泛应用于各个领域。
蛋----人----人----人
Slackware,
Redhat,
Debian,
FeDora,
TurboLinux,
M按drake,
SUSE,
CentOS,
Ubuntu,
红旗,
麒麟……
Redhat---服务收费
CentOS---Redhat去掉logo和收费的组件
Fedora---Redhat的测试版本
下载安装VM虚拟机
VMware12/15
创建新的虚拟机—自定义
区别:
64位:
运算能力:8车道
内存容量:支持更大内存容量
应用环境:应用在服务器环境,处理大量程序运算
32位:
运算能力:4车道
内存容量:支持内存容量有限
应用环境:应用在台式机环境
官方网站下载:
镜像平台下载:
内核崩溃时使用,暂不开启
总结安装过程:
1.创建虚拟机
2.新增一块网卡-->LAN区段
3.挂载centos7.5光盘镜像
4.开机
5.语言选择(英语)
6.修改时区->上海
7.最小化安装
8.磁盘(默认—逻辑卷)
9.自动配置分区
10.分析内核崩溃原因的话,不用开启,需要的时候再开启也可以
11.配置网络
12.11主机名修改
13.设置root密码
14.使用xshell链接对应centos7服务器
15.图形化界面配置eth1网卡命令nmtui
免费的:Xshell---一路下一步完成安装
花钱的:SecureCRT
简易的:putty
检查链路是否畅通---ip概念说明
检查策略是否阻止---端口概念说明
检查服务是否启动---服务协议概念说明
ipadd/ifconfig
cat/etc/sysconfig/network-scripts/ifcfg-eth0
systemctlstopNetworkManager
systemctldisableNetworkManager
NAT模式:子网IP:10.0.0.0设置网关:10.0.0.254
(win键+r)在命令行输入(services.msc)
(win键+e)输入“网络连接”进入网卡管理找到VMnet8,查看他的状态
telnet10.0.0.20022
删除网卡里包含UUID的行(CentOS7)
删除UUID和HWADDR(CentOS5和6)
清空/etc/udev/rules.d/70-persistent-net.rules(CentOS5和6)
重启虚拟机Linux
Systemctlrestartnetwork
ping不通百度:一般看IP地址是否配置正确,DNS,网卡是否有误
连接不上xshell,一般与防火墙,selinux有关
优点:和主机IP地址不同,不容易发生地址冲突
缺点:不便于被其他物理主机进行访问
优点:容易被其他物理主机进行访问
缺点:和主机IP地址网段相同,容易发生地址冲突
优点:安全性更高
缺点:无法访问外网
绝对路径:从/开始
相对路径:不从/开始
命令空格[参数选项](条件)空格[文件或路径]你要处理的内容
结婚空格-有车有房有存款空格白富美
结婚空格-没车没房没存款空格女的就行
rm空格-f空格/tmp/test.txt
rm空格-fr空格/tmp/test.txt
#在Linux中是注释作用,不会执行
ctrl+a光标快速移动到行首Home也可用
ctrl+e光标快速移动到行尾End也可用
ctrl+l快速清屏相当于翻页
ctrl+s锁当前的窗口
ctrl+q解锁当前的窗口
ctrl+r搜索用过的命令
ctrl+u剪切光标前的内容
ctrl+k剪切光标后的内容
ctrl+y粘贴剪切的内容
ctrl+←快速移动光标向左一个单词
ctrl+→快速移动光标向右一个单词
ctrl+c撤销中止当前的操作
ctrl+d退出当前用户相当于logout
Tab命令或路径的补全功能
ESC+.获取上一个命令的后一部分
ping网络地址/网站域名
关机命令:
halt
poweroff
init0
重启命令:
reboot
init6
man命令
ctrl+a---光标快速移动到行首Home也可用
ctrl+e---光标快速移动到行尾End也可用
ctrl+l---快速清屏相当于翻页
ctrl+s---锁当前的窗口
ctrl+q---解锁当前的窗口
ctrl+r---搜索用过的命令
ctrl+u---剪切光标前的内容
ctrl+k---剪切光标后的内容
ctrl+y---粘贴剪切的内容
ctrl+←---快速移动光标向左一个单词
ctrl+→---快速移动光标向右一个单词
ctrl+c---撤销中止当前的操作
ctrl+d---退出当前用户相当于logout
Tab---命令或路径的补全功能
ESC+.---获取上一个命令的后一部分
查看路径:printworkingdirectory->pwd
切换目录:changedirectory->cd
快速返回之前所在目录:cd-
快速返回到上一级目录:cd..
快速返回用户的家目录:cd~/cd
快速创建多级目录信息:mkdir-p/oldboy/oldgirl/dog
创建空白文件:touch
查看数据属性:list->ls
显示数据详细信息:ls-l/oldboy
显示最新数据信息:ls-lrt/oldboy
输出字符信息:echo
将字符信息输出到文件中:echooldboy>/tmp/oldboy.txt
将字符信息追加到文件中:echooldboy>>/tmp/oldboy.txt
查看文件信息:cat
合并多个文件的数据信息:cat/etc/service/etc/sysconfig/network-scripts/ifcfg-eth0
外部命令软件功能实现使用的时候才从硬盘中加载到内存里,执行速度慢一些
内置命令bash自带的命令开机会把命令加载到内存,执行速度快
typecd查看是否是内部命令
helpcd查看shell内置命令的使用方法
ls显示文件或目录的属性信息
ls默认显示当前文件夹中的所有文件及文件夹,不包括隐藏文件
ls-a显示所有文件文件夹包括隐藏文件
ls-l显示所有文件long类型长文件名
ls-R递归的显示文件内容:把所有文件夹中的内容全部显示出来
ls/xx显示特定目录下的文件内容
ls-l命令的查询结果
chmod设置权限
chmodugo
chmod777
chmod644
chmod755
chmod764文件名
reboot
mkdir-pxxx
mkdir-pxxx/xxx
cd(changedirectory)
-->
cd.
cd..
直接输入cd命令
对文件进行编辑
touchxxx
vi/vim
cp拷贝
cp要拷贝的全文件名目标文件名
mv移动
mv目标文件移动目标路径
mv文件改名
mv原文件名目标文件名
rm删除
rmdir
rm文件名
rm-rf文件名/文件夹名
查看文件内容
cat文件名
cat>文件名
vi文件名{
vi命令模式
:q
:q!
:wq!
dd
yy
p
/xxx
}
head文件名
head-nx文件名
tail文件名
tail-nx文件名
分屏查看文件的内容
more文件名
less文件名(可按PageUp、PageDown上下翻页)
clear
查看IP与管理网卡
ifconfig
ifconfigeth0ip地址
ifconfigeth0down
ifconfigeth0up
创建用户/用户组及密码
groupadd组名创建组
groupadd-g组编号组名创建组
useradd用户名创建用户
useradd-g组名用户名
userdel用户名删除用户
userdel-r用户名删除用户
passwd
passwd用户名修改指定用户的密码
groupdel组名
passwd-l用户名
useradd-u100-gmygroup1-Gmygroup2-d/home/programmers1创建用户s1
-u:指定用户UID为100
-g:只用用户的主要组为mygroup1
-G:指定用户的附加组为mygroup2,一个用户可以有多个附加组
-d:指定用户的目录名
usermod-u601-g501s1
创建软链接
ln-s文件夹名别名
ls-l查询结果中软连接以l开头
find文件夹-name"文件名"
find文件夹-typed
grep"指定字符"文件名
grep-v"指定字符"文件名
ls|grep"指定字符"
ps-aux
ps-ef
kill-9PID
top
tar压缩与解压缩命令
tar-cvf文件名.tar文件夹
tar-zcvf文件名.tar.gz文件夹
tar-zxvf文件名
centos6启动/停止服务命令
serviceiptablesstop
serviceiptablesstart
centos6开机启动/停止服务命令
chkconfigiptablesoff
chkconfigiptableson
rpm安装软件命令
rpm-ivh文件名
rpm-qa
rpm-qlxx
rpm-exx
rpm-ivh--force文件名
rpm-ivh--nodeps文件名
自动安装软件及需要的依赖软件
yuminstall文件名
yumremove文件名
源码tar包编译安装
makeinstall
makeclean与makedistclean
在集群中进行文件copy
scp文件名ip地址:/目标路径
修改主机名
hostname名字
vi/etc/sysconfig/networkroot组
1vsn关系root用户-->root组(主要组)oldboy组oldgirl组(附属组)
雷明春-->雷氏家族(主要组)张氏(附属组)
nvsn关系root用户oldboy用户-->root组oldboy组
nvs1关系
[root@oldboymengoldboy]#stat/etc/hosts---查看详细属性信息
File:‘/etc/hosts’
Size:7Blocks:8IOBlock:4096regularfile
Device:803h/2051dInode:16810611Links:1
Access:(0644/-rw-r--r--)Uid:(0/root)Gid:(0/root)
Context:unconfined_u:object_r:net_conf_t:s0
Access:2019-06-1315:20:53.538925666+0800
Modify:2019-06-1315:20:52.038925775+0800
Change:2019-06-1315:20:52.038925775+0800
Birth:-
Access:2019-06-1318:38:46.307068633+0800
Modify:2019-06-1318:37:51.453072592+0800
Change:2019-06-1318:37:51.453072592+0800
Change:2019-06-1318:40:32.520060966+0800
Access:2019-06-1318:41:42.042055947+0800
Modify:2019-06-1318:41:42.042055947+0800
Change:2019-06-1318:41:42.043055947+0800
date
ThuJun1318:46:04CST2019
[root@oldboymengoldboy]#date+%y-%m-%d
19-06-13
[root@oldboymengoldboy]#date+%Y-%m-%d
2019-06-13
[root@oldboymengoldboy]#date+%F
[root@oldboymengoldboy]#date+%H:%M:%S
18:51:22
[root@oldboymengoldboy]#date+%T
18:51:50
2019-06-12
cp/etc/hosts/tmp/hosts-`date+%F`
date-s"20200505"---修改日期信息
SunMay510:10:10CST2030
root@oldboymengoldboy]#ntpdatentp1.aliyun.com
13Jun19:08:24ntpdate[32975]:steptimeserver120.25.115.20offset-343775.764894sec
概念说明:
1.相当于查看一个文件数据的多个入口信息
2.inode号码相同的文件,互为硬链接
如何创建:
ln源文件硬链接文件
lnoldboy.txtoldboy_hard_link.txt
特点总结:
1.源文件被删除,链接文件不会失效
2.创建多个硬链接文件,不会占用block空间和inode空间
3.目录无法创建硬链接
用途说明:
1.防止文件被误删除不能防止文件误修改
cp:防止误删除防止误修改
?2.文件被删除条件:
1)硬链接数为0i_link=0
2)i_count=0
补充:查询所有硬链接文件
[root@oldboymengoldboy]#find/-typef-inum33574990
/tmp/oldboy_link.txt
/oldboy/oldboy_hard_link.txt
/oldboy/oldboy_hard_link02.txt
/oldboy/oldboy_hard_link03.txt
/oldboy/oldboy.txt
删除硬链接:
如果只删除源文件不删除硬链接文件则文件不会被删除
只有删除源文件和所有的硬链接文件则文件被删除
如果普通文件(没有被系统调用的文件)硬链接数0则被删除如果只删除源文件或者硬链接则只是删除了inode指向没有真正的删除block
只有删除源文件和所有的硬链接则真正意义上删除了block文件被删除
硬链接显示为普通文件可直接使用rm删除
当所有的硬链接文件及源文件被删除后,再存放新的数据会占用这个文件的空间,或者磁盘fsck检查的时候,删除的数据也会被系统回收。
1.相当于快捷方式,是一个普通文件,以l开头
2.软连接文件存储源文件的路径信息
ln源文件软链接文件
ln-soldboy.txtoldboy_soft_link.txt
1.源文件被删除,链接文件会失效.删除软链接文件文件不是真正的删除,不影响源文件
2.创建多个软连接文件,会占用多个inode空间
3.目录也可以创建软连接
1.减少开发人员代码修改难度
01.创建一个文件,有几个硬链接数?
1个硬链接
02.创建一个目录,有几个硬链接数
2个硬链接
目录本身占用一个硬链接
目录下面的点.占用一个硬链接
总结:目录的硬链接数==本身目录(1)+目录中.(1个)+目录中的自目录中的..(1个)
03.查看/etc目录属性信息,显示的硬链接数是什么意思
drwxr-xr-x.80rootroot8192Oct1001:47/etc/
80=etc(1)+.(1)+78个子目录(..)
ll/etc|grep-c"^d"
78
一,简答题
1.什么是buffer和cache
答:写入数据到内存里,这个存储数据的空间称为缓冲区(buffer)
从内存读取数据,这个存数据的内存空间称为缓存区(cache)
2.硬链接和软连接的区别
答:1)软链接可以理解成快捷方式。它和windows下的快捷方式的作用是一样的
2)硬链接等于cp-p加同步更新
3.Linux下通过mkdir命令创建一个新目录/oldboy它的硬链接数是多少,为什么?
答:2个,因为:
1.创建的目录本身为一个硬链接。
2.新目录ett下的隐藏目录.(点号)为创建的新目录的又一个硬链接,也算一个链接数,因此,硬链接数是2。
如果在/oldboy/下面再创建一个目录test。再问/oldboy/的硬链接数是多少?为什么。
3个,因为创建的目录是上级目录的一个硬链接,oldboy这个目录它本身就有两个硬链接,相加起来就是3个。
4,请执行命令取出Linux中eth0的IP地址(不低于2种方法)。
答:
1)hostname-I
2)ipa|sed-rn‘s#.*et(.*)/24br.*#\1#gp’
3)ipa|awk-F"[/]+"'NR==9{print$3}'
5,请写出,ll-hi/etc显示输出的每一列含义(以空格为分隔符)。
33899913drwxr-xr-x.3rootroot101May1507:01abrt
6,请写出20个学过的命令及参数以及他们的作用。
7,请简单写出xshell链接不上虚拟机排错流程
8,请写出eth0网卡配置文件中必须存在的条目选项。
9,说说inode与block特点
inode是用来存储数据属性信息的,他包含有指向文件实体的指针功能,但他不包括文件名。
block是用来存储实际信息的
10,写出命令行下五个常用快捷键及作用
ctrl+a光标快速移动到行首Home
ctrl+e光标快速移动到行尾End
二.常见错误提示解析类(给出你的翻译)
1.cannotcreatedirectory“oldboy”fileexists无法创建目录“oldboy”文件存在
2.nosuchfileordirectory没有这样的文件或目录
3.-bash:commandnotfoundbash:未找到命令
4.connectionfailed连接失败
Couldnotconnectto'10.0.0.100'(port22):Connectionfailed.
无法连接到“10.0.0.100”(端口22):连接失败
5.nameorservernotknown名称或服务器未知
6.cp:omittingdirectory‘/etc/sysconfig/’cp:忽略目录'/etc/sysconfig/'
7.Permissiondenied权限被拒绝
8.Notadirectory不是一个目录
三,请写出命令满足工作需求
1,查看磁盘inode的使用率df-idf-ih
2,当前路径下有一a.tar.gz压缩包,我想将其解压到/home/GAO666中
tarxfa.tar.gz-C/home/GAO666
3,临时和永久关闭seLinux和防火墙
vim/etc/selinux/config
SELINUX=disabledsetenforce0
4,永久关闭防火墙关闭后查看防火墙状态
iptables-save
5,已知我曾经创建了一个名字叫做gao什么的文件,里面放置了我的私密信息。最近体重增长了,我想更新下那个文件的内容,找不到了,怎么办?
find-typef-name“gao*”
6,NetworkManager临时和永久关闭
systemctlstopNetworkManagersystemctldisableNetworkManager
7,因开发需要,我们要实时监测系统日志/var/log/messages的实时更新,请写出命令完成。tail-f
8,如何查询一个软件是否安装
rpm-qa
.#当前目录,任意一个字符(正则)
..#当前目录的上一级目录
*#任意0个或多个字符(文本)(通配符)
>#输出重定向会清空原来的内容,然后在里面追加内容
>>#追加输出重定向,追加到文件的最后一行
<#输入重定向,trxargs
<<#用来给文件追加多行文本
!#find与awk中表示取反,linux中bash命令行使用
逻辑运算中的“非”;vi/vim强制退出;!+字母,调出最近一次以此字母开头的命令
!!使用最近一次操作的命令!+数字调出历史的第几条命令
#任意一个字符,通配符
##表示注释Linux会忽视他。给人看的,解释说明。
#root用户的提示符
|#管道,或者(正则)|xargs将前一个命令的结果交给后一个命令来处理
$#以。。。结尾(正则),$LANG$取变量内容
^#以.......开头(正则表达式)
~#当前用户的家目录
``#(反引号)$()#引用命令的结果``中间是命令,会先执行,等价$()
&并且同时成立前一个命令成功在执行后一个命令
[]#表示一个范围,集合[abcdefg][a-g](正则,通配符)
{}#产生一个序列,(通配符)
;#分号,分隔多个命令
‘’#不具有变量置换功能,输出时所见即所得(吃啥吐啥)
“”#双引号具有变量置换功能,解析变量输出
/#根,路径分隔符
\#转义符号\班长====>>学生
?#通配符正则表达式
美元符号:$
1)用于取出变量中的内容
2)用于取出指定列的信息(awk)???
3)表示用户命令提示符号
超级用户为#
普通用户为$
叹号符号:!
1)用于表示取反或者排除意思
2)命令行中表示取出最近命令
3)用于表示强制操作处理
vim底行模式保存退出wq!q!
竖线符号:|
管道符号:将前面命令执行的结果交给后面命令进行处理
xargs-->后面命令处理
什么时候用到xargs进行过滤:
一般基础命令接收管道传过来的信息,都要用xargs命令进行过渡rmcpmv
高级命令接收管道传过来的信息,可以不用xargs命令进行过度grepsedawk
井号符号:#
1)表示文件内容注释符号
2)表示用户命令提示符号
'':所见即所得
"":会将指定内容进行输出,有些信息会被解析$``
echo"PS1='\[\e[32;1m\][\u@\h\W]\\$\[\e[0m\]'">>/etc/profile
``:将反引号中的命令优先执行,将执行结果交给外面的命令进行处理==$()
rpm-qf`whichtree`
没有引号:和双引号功能类似,可以识别通配符号信息
>:标准输出重定向符号
2>:错误输出重定向符号
>>:标准输出追加重定向符号
2>>:错误输出追加重定向符号
<:标准输入重定向符号
<<:标准输入追加重定向
错误和正确信息都记录到一个日志文件中???--定时任务
方法1:2>>tar.log>>tar.log
方法2:&>>tar.log
方法3:>>tar.log2>&1
单点符号:.表示当前目录
双点符号:..表示上级目录
波浪符号~表示用户家目录信息
超级用户:/root
普通用户:/home/用户名称
横线符号:-两个目录路间进行切换
系统逻辑符号:
&&:前面命令执行成功,在执行后面命令
[root@oldboymeng~]#mkdir-p/oldgirl&&echo"前面命令执行成功"||echo"前面命令执行失败"
前面命令执行成功
||:前面命令执行失败,再执行后面命令
[root@oldboymeng~]#mkdr-p/oldgirl&&echo"前面命令执行成功"||echo"前面命令执行失败"
-bash:mkdr:commandnotfound
前面命令执行失败
通配符指的是包含这些字符的字符串,“?”“*”“[]”“{}”.他是shell的内置功能
通配符是用来匹配/查找文件名,Linux命令基本都支持通配符。
通配符含义=============>>匹配文件名
符号作用
*匹配任何字符串/文本,包括空字符串
代表任意字符(0个或多个)
?匹配任何一个字符(不在括号内时)?代表任意一个字符
[abcd]匹配abcd中任何一个字符
[a-z]表示范围a到z,-表示范围的意思
{__}表示生成序列,以逗号分隔,且不能有空格
[!abcd][^abcd]表示非,表示不匹配括号里面的任何一个字符
*:匹配所有(任意)字符信息
find/oldboy-typef-name"old*"找寻以什么信息开头的文件
find/oldboy-typef-name"*txt"借助正则符号无法匹配文件名称信息
find/oldboy-typef-name"old*txt"
{}:批量创建数据信息
echo{01..10}echo{01..10..2}echo{01,03,09}
toucholdboy{01..10}
不同序列信息,可以进行组合
[root@oldboymeng~#echoA{A,B}
AAAB
[root@oldboymeng~#echoA{,B}
AAB
ifcfg-eth0ifcfg-eth0.bak--cpifcfg-eth0ifcfg-eth0.bak
[root@oldboymeng~#echoA{A,}
AAA
快速备份数据:
cp/etc/sysconfig/network-scripts/ifcfg-eth0/etc/sysconfig/network-scripts/ifcfg-eth0.bak
转换:
cp/etc/sysconfig/network-scripts/ifcfg-eth0{,.bak}cp源目标
快速还原数据:
cp/etc/sysconfig/network-scripts/ifcfg-eth0{.bak,}
通过正则表达式从字符串中我们可以取出文件中正确的身份证号码;帮助我们快速过滤
通配符作用:查找文件名(支持Linux大部分命令都支持以.txt结尾)
正则作用:在文件中过滤内容(支持的命令:三剑客sed,grep,awk,Python,java)
正则表达式注意事项:神坑-中文符号
正则表达式分类:基本正则+扩展正则
为处理大量的字符串而定义的一套规则和方法,通过定义这些的特殊符号的辅助,系统管理员可以快速过滤,替换或输出需要的字符串
[root@oldboymeng~#grep"^I"oldboy.txt
Iamoldboyteacher!
Iteachlinux.
Ilikebadmintonball,billiardballandchinesechess!
[root@oldboymeng~#grep"m$"oldboy.txt
过滤文件内的空行:
[root@oldboymeng~]#grep'^$'datafile
^$
配置文件:如何更好的阅读
#行空行---屏蔽掉
[root@oldboymeng~#grep-v"^$"oldboy.txt
myqqnumis49000448.
not4900000448.
mygod,iamnotoldbey,butOLDBOY!
[root@oldboymeng~#grep.oldboy.txt-o
I
a
m
o
将有意义的符号信息,变成没有意义
[root@oldboymeng~#grep"\.$"oldboy.txt
将没有意义的字符信息,变成有意义的信息
\t:制表符
\n:换行符
\r:换行符
[root@oldboymeng~#echo-e"oldboy01\noldboy02"
oldboy01
oldboy02
[root@oldboymeng~#grep"0*"oldboy.txt-o
000
00000
需求:排除小写字母信息不要显示
[root@oldboymeng~#grep-v[a-z]oldboy.txt
[root@oldboymeng~#grep[^a-z]oldboy.txt
---匹配前一个字符连续出现1次或者多次
[root@oldboymeng~#grep-E"0+"oldboy.txt
---匹配的信息之间是或者的关系
[root@oldboymeng~#grep-Ev"^$|^#"oldboy.txt
[root@oldboymeng~#grep-E"oldb(o|e)y"oldboy.txt
---将多个字符信息汇总为一个整体进行过滤
---替换修改文件内容,后向引用前项
[root@oldboymeng~#echo123456
123456
[root@oldboymeng~##echo123456|xxx--><123456>
[root@oldboymeng~#
[root@oldboymeng~#echo123456|sed"s#123456#<123456>#g"
<123456>
[root@oldboymeng~#echo123456|sed"s#(.*)#<\1>#g"
sed:-eexpression#1,char13:invalidreference\1on`s'command'sRHS
[root@oldboymeng~#echo123456|sed-r"s#(.*)#<\1>#g"
[root@oldboymeng~#echo123456|sed-r"s#(.)(.)(.)(.)(.)(.)#\1#g"
[root@oldboymeng~#echo123456|sed-r"s#(.)(.)(.)(.)(.)(.)#\1\2#g"
12
[root@oldboymeng~#echo123456|sed-r"s#(.)(.)(.)(.)(.)(.)#\1\2\3#g"
123
[root@oldboymeng~#echo123456|sed-r"s#(.)(.)(.)(.)(.)(.)#<\1>\2\3\4\5\6#g"
<1>23456
第一个历程:生成序列信息
[root@oldboymeng~#echo{01..10}|xargs-n1
01
02
03
04
05
06
07
08
09
10
[root@oldboymeng~#seq10
7
8
9
[root@oldboymeng~#seq-w10
第二个历程:生成命令信息,交给bash命令执行
[root@oldboymeng~#seq-w10|sed-r's#(.*)#useraddoldboy\1;echo123456|passwd--stdinoldboy\1#g'|bash
useradd:user'oldboy01'alreadyexists
Changingpasswordforuseroldboy01.
passwd:allauthenticationtokensupdatedsuccessfully.
Changingpasswordforuseroldboy02.
Changingpasswordforuseroldboy03.
Changingpasswordforuseroldboy04.
Changingpasswordforuseroldboy05.
Changingpasswordforuseroldboy06.
Changingpasswordforuseroldboy07.
Changingpasswordforuseroldboy08.
Changingpasswordforuseroldboy09.
Changingpasswordforuseroldboy10.
思考:如何批量创建用户,并且每个用户的密码是随机密码
1.如何生成随机密码信息---如何生成随机字符
2.随机密码信息如何保留下来
脚本如何实现???
---匹配前一个字符连续出现指定的次数
{n,m}---匹配前一个字符连续最少出现n次最多出现m次
[root@oldboymeng~#grep-E"0{3,5}"oldboy.txt
[root@oldboymeng~#grep-E"0{3,5}"oldboy.txt-o
[root@oldboymeng~#grep-E"0{2,4}"oldboy.txt
[root@oldboymeng~#grep-E"0{2,4}"oldboy.txt-o
0000
[root@oldboymeng~#grep-E"0{1,4}"oldboy.txt-o
[root@oldboymeng~#grep-E"0{1,4}"oldboy.txt
{n}---匹配前一个字符连续正好出现n次
[root@oldboymeng~#grep-E"0{3}"oldboy.txt
[root@oldboymeng~#grep-E"0{3}"oldboy.txt-o
{n,}---匹配前一个字符连续最少出现n次,最多出现次数没有限制
[root@oldboymeng~#grep-E"0{2,}"oldboy.txt
[root@oldboymeng~#grep-E"0{2,}"oldboy.txt-o
[root@oldboymeng~#grep-E"0{4,}"oldboy.txt
[root@oldboymeng~#grep-E"0{4,}"oldboy.txt-o
{,m}---匹配前一个字符连续最少出现0次,最多出现次数m次
[root@oldboymeng~#grep-E"0{,4}"oldboy.txt
[root@oldboymeng~#grep-E"0{,4}"oldboy.txt-o
01.具有贪婪匹配特性
解决方法:
[root@oldboymeng~#grep"^m.*og"oldboy.txt
[root@oldboymeng~#grep"^m.*g"oldboy.txt
02.过滤时显示的信息不正确
grep过滤信息,过滤信息外面使用双引号
sedawk过滤信息,过滤信息外面使用单引号
第一个历程:获取有IP地址信息命令
ipaddressshoweth0
第二个历程:定位有IP地址信息行
[root@oldboymeng~#ipaseth0|sed-n'3p'
inet10.0.0.201/24brd10.0.0.255scopeglobaleth0
第三个历程:取出指定信息
[root@oldboymeng~#ipaseth0|sed-n'3p'|sed-r"s#^.*t(.*)#\1#g"
10.0.0.201/24brd10.0.0.255scopeglobaleth0
[root@oldboymeng~#ipaseth0|sed-n'3p'|sed-r"s#^.*t(.*)#\1#g"|sed-r's#(.*)/24.*$#\1#g'
10.0.0.201
第四个历程:命令整合:
第一次整合:
sed-r's#^.*t(.*)#\1#g'
sed-r's#(.*)/24.*$#\1#g'
sed-r's#^.*t(.*)/24.*$#\1#g'
[root@oldboymeng~#ipaseth0|sed-n'3p'|sed-r's#^.*t(.*)/24.*$#\1#g'
第二次整合:
sed-n'3p'
sed-nr'3s#^.*t(.*)/24.*$#\1#gp'
[root@oldboymeng~#ipaseth0|sed-nr'3s#^.*t(.*)/24.*$#\1#gp'
[root@oldboymeng~#ipaseth0|grepglobal
[root@oldboymeng~#ipaseth0|grepinet
inet6fe80::20c:29ff:fe37:df1b/64scopelink
[root@oldboymeng~#ipaseth0|grep-winet
[root@oldboymeng~#ipaseth0|grep-winet|grep"[0-9].[0-9].[0-9].[0-9]"
[root@oldboymeng~#ipaseth0|grep-winet|grep"[0-9]+.[0-9]+.[0-9]+.[0-9]+"
[root@oldboymeng~#ipaseth0|grep-winet|grep-E"[0-9]+.[0-9]+.[0-9]+.[0-9]+"
[root@oldboymeng~#ipaseth0|grep-winet|grep-E"[0-9]+.[0-9]+.[0-9]+.[0-9]+"-o
10.0.0.255
[root@oldboymeng~#ipaseth0|grep-winet|grep-E"[0-9]+.[0-9]+.[0-9]+.[0-9]+"-o|head-1
[root@oldboymeng~#ipaseth0|grep-winet|grep-E"([0-9]+.){3}[0-9]+"
[root@oldboymeng~#ipaseth0|grep-winet|grep-E"([0-9]+.){3}[0-9]+"-o
[root@oldboymeng~#ipaseth0|grep-winet|grep-E"([0-9]+.){4}"-o
10.0.0.201/
[root@oldboymeng~#ipaseth0|grep-winet|grep-E"([0-9]+.){4}"
[root@oldboymeng~#ipaseth0|grep-winet|grep-E"([0-9]+\.){4}"
[root@oldboymeng~#ipaseth0|grep-winet|grep-E"([0-9]+\.){4}"-o
awk???
sed-streameditorforfilteringandtransformingtext
流编辑器工具(文件字符流进行处理编辑)
作用:擅长对文件的行进行处理修改编辑文件内容
语法:sed[参数]'条件指令(如何处理)'文件信息
sed-n'/oldboy/p'oldboy.txt
参数:
-n取消默认输出
-i真实修改文件内容
-e识别多个指令信息,可以让多个指令同时执行
-r识别扩展正则符号信息
指令:
pprint输出信息
ddelete删除文件信息
iinsert在指定条件行的上面添加信息
aappend在指定条件行的下面添加信息
ssubstitute取代==替换
gglobal将所有匹配的信息都做替换(没有将一行中第一个匹配的信息做替换)
cchange修改替换指定的整行信息
sed命令执行原理:---按行处理文件信息
sed命令能完成什么事情:增删改查(处理文本文件配置文件-sed日志文件-grep/awk)
测试环境准备:
cat>person.txt< 101,oldboy,CEO 102,zhaoyao,CTO 103,Alex,COO 104,yy,CFO 105,feixue,CIO EOF 需求:查询单行信息: 1.将第3行信息进行显示 [root@oldboymeng~#sed-n'3p'person.txt 2.将有oldboy的行进行显示 [root@oldboymeng~#sed-n'/oldboy/p'person.txt 需求:查询多行信息 1.将第3行~第5行信息进行显示 #sed-n'3,5p'person.txt 2.将oldboy~alex信息进行显示 #sed-n'/oldboy/,/Alex/p'person.txt 3.只查看第3行和第5行内容 #sed-n'3p;5p'person.txt 111,Alex,CEO 4.只查看有oldboy和alex信息 #sed-n'/oldboy/p;/Alex/p'person.txt 需求: 01.将第三行信息进行删除 [root@oldboymeng~#sed'3d'person.txt [root@oldboymeng~#catperson.txt [root@oldboymeng~#sed-i'3d'person.txt 02.将有oldboy信息的行进行删除 sed'/oldboy/d'person.txt sed-i'/oldboy/d'person.txt 03.将oldboy和Alex信息的行进行删除 [root@oldboymeng~#sed'/oldboy/d;/Alex/d'person.txt [root@oldboymeng~#sed-r'/oldboy|Alex/d'person.txt 01.在第3行后面增加新的一行内容oldboy61 [root@oldboymeng~#sed'3aoldboy61'person.txt oldboy61 02.在第5行前面增加新的一行内容oldboy61 [root@oldboymeng~#sed'5ioldboy61'person.txt 03.在第3行前面加oldboy61,同时在第5行后面加oldboy61 [root@oldboymeng~#sed-e'3ioldboy61'-e'5aoldboy61'person.txt 04.在文件最后一行后面,添加多行信息 [root@oldboymeng~#sed-e'$aoldboy61'person.txt [root@oldboymeng~#sed'$aoldboy61\noldboymeng'person.txt oldboymeng 需求 01.将123456信息显示为<123456> [root@oldboymeng~#echo123456|sed-r's#(.*)#<\1>#g' [root@oldboymeng~#echo123456|sed's#.*#<&>#g' [root@oldboymeng~#echo123456|sed-r's#([0-9]+)#<\1>#g' 02.将123456信息显示为<123><456> [root@oldboymeng~#echo123456|sed-r's#([0-9]{3})#<\1>#g' <123><456> [root@oldboymeng~#echo123456|sed-r's#(.{3})#<\1>#g' 03.将123456信息显示为<1><2><3><4><5><6> [root@oldboymeng~#echo123456|sed-r's#([0-9])#<\1>#g' <1><2><3><4><5><6> [root@oldboymeng~#echo123456|sed-r's#([0-9]{1})#<\1>#g' [root@oldboymeng~#echo123456|sed-r's#(.)#<\1>#g' 修改文件内容: 使用-i参数问题: 01.-i.bak表示对源文件进行备份--i参数后面不能跟其他参数 #sed-ri.bak's#(.*)#<\1>#g'oldboy.txt #lloldboy.txt* -rw-r--r--.1rootroot9Oct1013:52oldboy.txt -rw-r--r--.1rootroot7Oct1013:52oldboy.txt.bak 02.在利用-i替换文件内容信息,-i参数和-n参数一定不能同时使用 替换的错误方法 [root@oldboymeng~#sed-n'/Alex/s#COO#CEO#gp'person.txt 103,Alex,CEO [root@oldboymeng~#sed-ni.bak'/Alex/s#COO#CEO#gp'person.txt [root@oldboymeng~#catperson.txt.bak 正确替换方法 [root@oldboymeng~#sed-i'/Alex/s#COO#CEO#g'person.txt 02.批量修改文件扩展名称 方法一: find/oldboy-maxdepth1-typef-name"oldboy*.txt"|sed-r's#(.*)txt#mv\1txt\1jpg#g'|bash mv/oldboy/oldboy.txt/oldboy/oldboy.jpg mv/oldboy/oldboy01.txt/oldboy/oldboy01.jpg mv/oldboy/oldboy02.txt/oldboy/oldboy02.jpg mv/oldboy/oldboy03.txt/oldboy/oldboy03.jpg mv/oldboy/oldboy04.txt/oldboy/oldboy04.jpg mv/oldboy/oldboy05.txt/oldboy/oldboy05.jpg mv/oldboy/oldboy06.txt/oldboy/oldboy06.jpg mv/oldboy/oldboy07.txt/oldboy/oldboy07.jpg mv/oldboy/oldboy08.txt/oldboy/oldboy08.jpg mv/oldboy/oldboy09.txt/oldboy/oldboy09.jpg mv/oldboy/oldboy10.txt/oldboy/oldboy10.jpg 方法二: [root@oldboymeng/oldboy#lsoldboy*.txt|xargs-n1|sed-r's#(.*)txt#mv&\1jpg#g' mvoldboy01.txtoldboy01.jpg mvoldboy02.txtoldboy02.jpg mvoldboy03.txtoldboy03.jpg mvoldboy04.txtoldboy04.jpg mvoldboy05.txtoldboy05.jpg mvoldboy06.txtoldboy06.jpg 方法三:利用rename #rename"修改文件名称什么信息""修改成什么"修改什么文件 rename".txt"".jpg"oldboy*.txt 03.取出文件权限数值信息 [root@oldboymeng~#stat/etc/hosts|sed-nr'4s#^A.*s:\((.*)/-.*$#\1#gp' 0644 [root@oldboymeng~#stat/etc/hosts|sed-n'4s#^A.*s:(\(.*\)/-.*$#\1#gp' 方法二:??? [root@oldboymeng~#ll/etc/hosts|sed-r's#^-(.*)\.1.*$#\1#g' rw-r--r-- [root@oldboymeng~#ll/etc/hosts|sed-r's#^-(.*)\.1.*$#\1#g'|tr"rwx-""4210" 420400400 04.特殊替换文件内容信息: [root@oldboymeng~#sed-n'3s/#103/103/gp'person.txt [root@oldboymeng~#sed-n'3s#\#103#103#gp'person.txt 05.修改整行信息: [root@oldboymeng~#sed'3coldboy61'person.txt 06.取消空行不要显示 [root@oldboymeng~#sed'/^$/d'person.txt #103,Alex,COO [root@oldboymeng~#sed-n'/^$/!p'person.txt 扩展:利用sed命令显示文件行号信息 sed'='person.txt|xargs-n2 1)作用:擅长取列擅长统计运算 2)语法:awk[参数]'模式(条件){动作}(指令)'文件信息 awk命令参数: -F:指定分隔符号信息":""[:/]""[:/]+" -v:设置变量信息 awk命令动作: print:打印输出信息空格,""字符串"oldboy"变量信息oldboy指定列$1$NF$(NF-1)$0(所有列) gsub:替换指定列的信息gsub(/要替换的内容/,"替换成什么",$N) 计算: 累加运算:i=i+1i++ 求和运算:i=i+$n awk内置变量: FSNFNR 模式:常用模式特殊模式(BEGINEND) 3)原理: gawk-patternscanningandprocessinglanguage 模式扫描(条件匹配)and程序语言 awk:擅长取列擅长统计分析(nginxzabbixtomcat...SSH)ELKawk [root@oldboymeng~#whichawk /usr/bin/awk [root@oldboymeng~#ll/usr/bin/awk lrwxrwxrwx.1rootroot4May3116:06/usr/bin/awk->gawk 把文件内容按列对齐: column-ttest.txt cat>oldboy.txt< ZhangDandan41117397:250:100:175 ZhangXiaoyu390320151:155:90:201 MengFeixue80042789:250:60:50 WuWaiwai70271111:250:80:75 LiuBingbing41117483:250:100:175 WangXiaoai3515064655:50:95:135 ZiGege1986787350:250:168:200 LiYoujiu918391635:175:75:300 LaoNanhai918391635:250:100:175 01.显示xiaoyu的姓氏和ID号码 满足需求不符合规范 [root@oldboymeng~#awk'/Xiaoyu/{print$1$3}'oldboy.txt Zhang390320151 [root@oldboymeng~#awk'/Xiaoyu/{print$1,$3}'oldboy.txt [root@oldboymeng~#awk'/Xiaoyu/{print$1""$3}'oldboy.txt 按照指定列进行搜索信息 [root@oldboymeng~#awk'/Xiaoyu/'oldboy.txt---将匹配信息的行直接显示 Xiaoyuzhang390320151:155:90:201 [root@oldboymeng~#awk'$2~/Xiaoyu/'oldboy.txt---指定列信息匹配 [root@oldboymeng~#awk'$2!~/Xiaoyu/'oldboy.txt 满足要求,正确语法格式 [root@oldboymeng~#awk'$2~/Xiaoyu/{print$1,$3}'oldboy.txt PS:awk命令默认区分大小写没有类似grep命令-i参数功能 02.姓氏是zhang的人,显示他的第二次捐款金额及他的名字 第一历程:找出姓氏是张的人 [root@oldboymeng~#awk'$1~/Zhang/'oldboy.txt 第二历程:显示出名字信息和所有捐款记录 [root@oldboymeng~#awk'$1~/Zhang/{print$2,$4}'oldboy.txt Dandan:250:100:175 Xiaoyu:155:90:201 PS:awk默认使用空格进行作为列分隔符 第三历程:指定字符信息作为分隔符 [root@oldboymeng~#awk-F"[:]+"'$1~/Zhang/{print$2,$5}'oldboy.txt Dandan100 Xiaoyu90 总结: 01.awk默认使用空格分隔列 02.可以使用-F指定分隔列的符号信息 03.利用-F"[:]+"+表示将多个连续的分隔符汇总为一个整体 03.显示所有以41开头的ID号码的人的全名和ID号码 第一个历程:找出匹配id号码是41开头的行信息---找出东西(模式写好) [root@oldboymeng~#awk'$3~/^41/'oldboy.txt 第二个历程:显示出人的全名和ID号码---对找出东西进行处理(执行动作) [root@oldboymeng~#awk'$3~/^41/{print$1,$2,$3}'oldboy.txt|column-t ZhangDandan41117397 LiuBingbing41117483 04.显示所有ID号码最后一位数字是1或5的人的全名 第一个历程:找出id号码以1或5结尾信息---找出信息 awk'$3~/1$|5$/'oldboy.txt awk'$3~/[15]$/'oldboy.txt 第二个历程:显示全名信息---找出信息做处理 awk'$3~/[15]$/{print$1,$2}'oldboy.txt|column-t 05.显示文件中第二行,第三列的信息 第一个历程:匹配第二行 [root@oldboymeng~#awk'NR==2'oldboy.txt 第二个历程:显示第三列 awk'NR==2{print$3}'oldboy.txt 测验:利用awk取出IP地址信息(grepsed) 第一个历程:定位有IP地址的行---找出信息 ipaseth0|awk'NR==3' 第二个历程:只显示IP地址---做处理 [root@oldboymeng~#ipaseth0|awk-F"[/]+"'NR==3{print$3}' 说明:在不指定-F参数信息, 1.默认将多个连续的空格汇总为整体 2.默认将一行头部开始空格信息忽略不计 [root@oldboymeng~#ipaseth0|awk-F"[^0-9.]+"'NR==3{print$2}' 06.显示Xiaoyu的捐款,每个捐款数值都有以$开头,如$110$220$330 [root@oldboymeng~#awk-F"[:]"'$2~/Xiaoyu/{print"$"$2"$"$3"$"$4}'oldboy.txt??? $155$90$201 [root@oldboymeng~#awk'$2~/Xiaoyu/{print$4}'oldboy.txt|sed's#:#$#g' [root@oldboymeng~#awk'$2~/Xiaoyu/{print$4}'oldboy.txt|tr":""$" 方法三:awk替换功能sedtr gsub(/要替换的信息/,"替换成什么",将第几列进行替换) [root@oldboymeng~#awk'$2~/Xiaoyu/{gsub(/:/,"$",$NF);print$NF}'oldboy.txt 利用awk排除指定信息不要显示 awk'!/^$/'oldboy.txt 正则表达式作为模式 ^还可以表示某一列的开始 $还可以表示某一列的结尾 比较表达式作为模式 [root@oldboymeng~#awk'NR==1{print$NF}'oldboy.txt :250:100:175 范围模式 awk'NR==1;NR==2'oldboy.txt---只查看第1和第2行 awk'NR==1,NR==3'oldboy.txt---查看第一到第三行 BEGIN在处理文件之前先执行的动作 1)生成文件内容表头信息 [root@oldboymeng~#awk'BEGIN{print"姓氏","名称","id号码","捐款记录"}{print$0}'oldboy.txt|column-t 姓氏名称id号码捐款记录 MengFeixue800412789:250:60:50 2)用于在系统中进行运算数值 awk'BEGIN{print2+3}' 3)修改或设置变量信息 a.awk命令中,会直接将字符串信息当成变量$1$NF$0(取一行中所有列) [root@oldboymeng~#awk'BEGIN{oldboy=62;printoldboy}' 62 [root@oldboymeng~#awk'BEGIN{oldboy=62;print"oldboy"}' oldboy b.awk命令中,变量分类: 自定义变量:oldboy=62 内置变量: NF:显示最后一列信息$(NF-1)取倒数第2列 NR:表示行号信息,取出第几行NR==2NR>=2NR<=2 FS:指定分隔符信息-F [root@oldboymeng~#awk-F":"'NR==1{print$2}'oldboy.txt 250 [root@oldboymeng~#awk'BEGIN{FS=":"}NR==1{print$2}'oldboy.txt [root@oldboymeng~#awk-vFS=":"'NR==1{print$2}'oldboy.txt END在处理文件之后再执行的动作*** 1)显示表格补充信息 [root@oldboymeng~#awk'BEGIN{print"姓氏","名称","id号码","捐款记录"}{print$0}END{print"总结:这是一个学生登记表"}'oldboy.txt|column-t 总结:这是一个学生登记表 2)显示计算的最终结果OK awk'/^$/{i=i+1}END{printi}'/etc/services i=i+1-->i++ 练习题01:统计一个文件中有多少个空行 第一个历程:找出空行 awk'/^$/'/etc/services 第二个历程:做运算处理 [root@oldboymeng~#awk'/^$/{i=i+1;printi}'/etc/services 11 13 14 15 16 17 [root@oldboymeng~#awk'/^$/{i=i+1}END{printi}'/etc/services 练习题02:统计/etc/passwd文件中最后一列有/sbin/nologin的出现了多少次 [root@oldboymeng~#awk-F":"'$NF~/nologin$/{i++}END{printi}'/etc/passwd [root@oldboymeng~#awk'/nologin$/{i++}END{printi}'/etc/passwd i=i+$n 实践操作: [root@oldboymeng~#seq10|awk'{i=i+$1;printi}' 21 28 36 45 55 [root@oldboymeng~#seq10|awk'{i=i+$1}END{printi}' 1.开机加电自检---检查bios中识别的硬件信息是否正常 2.开机MBR引导---/boot分区引导系统启动的记录信息(MBR引导记录--系统启动文件信息/分区表信息) 3.grub选择菜单---可以选择系统内核信息/可以选择进入单用户模式 4.加载内核信息---用于管理控制硬件 5.启动系统进程---/sbin/init---后续进程启动(串型) 6.加载启动级别文件---加载/etc/inittab选择不同级别启动系统 7.运行初始化脚本---/etc/rc.d/rc.sysinit设置主机名称设置网卡地址信息 8.执行服务运行脚本---/etc/rc.d/rc实现服务开机自动运行 CentOS6串行启动,执行完一个,再执行下一个 3.grup选择菜单---可以选择系统内核信息/可以选择进入单用户模式 5.启动系统进程---/usr/lib/systemd/systemd---后续进程启动(并型) 6.加载启动target文件---/etc/systemd/system/default.target选择不同级别启动系统 7.加载系统初始化文件---/usr/lib/systemd/system/sysinit.target设置主机名称设置网卡地址信息 8.执行服务运行脚本---/etc/systemd/system实现服务开机自动运行 /usr/lib/systemd/system/保存系统中所有程序启动文件 CentOS7并行启动,一起执行 1.利用/etc/rc.local 2.利用chkconfig命令---centos6 chkconfig--list|grep服务名称---检查服务开机自启状态 chkconfig服务名称on/off---设置234级别开机自动 chkconfig服务名称--level级别---设置指定级别开机自启 3.利用syetemctl命令---centos7 systemctldisable/enable服务名称---设置服务开机自启 /etc/skel---是用户家目录的样板房 01.此目录中有什么数据,新建的用户家目录中就有什么 02.恢复普通用户提示符信息 cp-a/etc/skel/.bash*/home/oldboy/ 他是Linux中的重要系统文件之一,主要作用是存储系统用户的信息。 文件中的每一行表示一个用户信息。仔细观察可以发现他们之间通过“:”号划分成了多个字段,共7段,他们分别定义了用户的不同属性 root :x :0 :: :/root :/bin/bash 用户名称 :用户密码 :用户UID :用户组GID :用户注释 :用户家目录 :shell解释器 用户UID一般是由一个整数表示的,默认范围是0~60000,最大可以到65535 centos6中普通用户UID从500开始,包含500。 centos7中普通用户UID从1000开始,包含1000 默认创建的用户每次创建比上次创建加1 由于passwd文件必须要被所有的用户读,所以会带来安全隐患,shadow文件就是为了解决这个安全隐患而增加的。 useradd-u---指定用户uid数值1000oldboy1001oldgirl useradd-g---指定用户gid数值 groupadd-g666oldboy666 useradd-u666-g666oldboy666 useradd-G---指定用户属于哪个附属组 useradd-u666-g666-Goldboyoldboy666 useradd-M---指定创建用户时,不创建家目录 useradd-c---指定用户注释信息 创建虚拟用户:useraddwww-M-s/sbin/nologin PS:linux系统有几种shell形式cat/etc/shells usermod-u---指定用户uid数值1000oldboy1001oldgirl usermod-g---指定用户gid数值及主要组 usermod-u666-g666oldboy666 usermod-G---指定用户属于哪个附属组 usermod-u666-g666-Goldboyoldboy666 usermod-c---指定用户注释信息 groupadd-g---指定用户组gid信息 groupdel---删除用户组信息(了解) groupmod---修改用户组信息(了解) PS:root用户可以修改所有用户密码信息 普通用户只能修改自己的密码信息(密码复杂度数字加字母>=8个字符) 免交互创建密码--stdin(只有root用户可以操作) echo******|passwd–stdin文件名 企业生产场景:用户及密码管理 密码要复杂,12位以上数字字母特殊字符 企业中:如何管理用户密码 01.编写用户密码信息文档 02.利用密码管理软件 本地管理密码软件--keepass 在线管理密码软件 03.域控管理服务器 04.动态密码 echostu{1..10}|xargs-n1|sed-r's#(.*)#useradd\1;echo123456|passwd--stdin\1#g'|bash [root@oldboyedu~]#pass=`date+%N|md5sum|cut-c1-8` [root@oldboyedu~]#echo$pass 192d2eb2 [root@oldboyedu~]#pass=$(date+%N|md5sum|cut-c1-8) b6daea4a echostu{1..10}|xargs-n1|sed-r's#(.*)#useradd\1;pass=$(date+%N|md5sum|cut-c1-8);echo$pass\1>>pass.txt;echo$pass|passwd--stdin\1#g'|bash 把密码存入2.txt chownoldgirl.oldgirl/oldboy/oldboy.txt -R递归修改注意在相对路径下使用 chown-Roldgirl.oldgirl/oldboy---递归修改目录权限信息 修改远程连接端口,禁止使用22端口,除非是不对外访问的服务器(内部测试) 更改默认的段口,修改ssh配置文件 vim/etc/ssh/sshd_config 查看/var/log/secure安全日志 给系统常用命令加-i 给系统配置文件加-a 文件内容的变化==指纹变化检查文件内容是否被改了 给文件创建指纹:md5sum+文件名 把指纹记录下来:md5sum+文件名>police.md5 police.md5是指纹库 如何进行对比:md5sum-cpolice.md5显示OK则正常,显示FAILED,说明文件被修改, 查看是不是自己的人修改了文件,如果是,先关掉警报,然后重新生成指纹。如果不是自己人修改,可使用备份恢复。 要定时检查,使用md5命令判断文件是否发生了变化 多个文件做md5指纹: find.-typef-name“*.txt”|xargsmd5sum>police.md5 id w top---检查负载情况/内存/CPU使用情况 每个进程消耗的系统资源情况 id:空闲状态: htop---top一个升级版 安装: yum-yinstallepel-release yum-yinstallhtop iotop---检查确认磁盘的IO消耗情况 free iftop---检查网络带宽使用情况 netstat(ss)-lntup|grepssh---检查网络状态信息命令,已知服务,获得对应端口号 -l列表显示网络服务状态信息 -n网络中的端口号码以数字形式显示 -t显示网络的tcp协议服务信息 -u显示网络的udp洗衣服务信息 -p网络协议服务进程信息进行显示 修改ssh端口号: vi/etc/ssh/ssh_config port端口号 lsof-i:端口号---检查网络服务信息,已知端口号,获得对应服务进程名 chattr---将文件数据进行上锁命令 +i---对文件进行上锁 -i---对文件进行解锁 lsattr---查看文件锁定状态 su-root---知识root用户密码 chmodo=rwx-R/oldboy/oldboy01/---递归修改目录权限信息 第一个历程:配置sudo文件 visudo(推荐--配置文件语法检查功能)==vim/etc/sudoers 101oldboyALL=(ALL)/bin/cat/etc/shadow 101oldboyALL=(ALL)NOPASSWD:/bin/cat/etc/shadow---免密码执行 sudo提权操作: 开发人员:需要有什么权限查看权限 数据库人员:需要有什么权限查看权限mysql服务命令的权限(mysqlmysqladminmysqldump) 运维人员:需要有什么权限查看权限创建数据信息的权限部分修改编辑权限部分数据删除 第二个历程:利用oldboy进行测试权限 sudocat/etc/shadow 第三个历程:查看root用户授予的权限信息 [oldboy@oldboymeng~]$sudo-l Useroldboymayrunthefollowingcommandsonoldboymeng: (ALL)NOPASSWD:/bin/cat/etc/shadow [root@oldboymeng~]#sudo-v---文件配置语法检查 >>>/etc/sudoers:syntaxerrornearline101<<< sudo:parseerrorin/etc/sudoersnearline101 sudo:novalidsudoerssourcesfound,quitting sudo:unabletoinitializepolicyplugin 01.利用命令编辑提权信息visudo==vim/etc/sudoers 02.利用命令查看权限信息sudo-l 03.利用命令检查配置语法sudo-v 04.利用命令清除密码记录sudo-k chmodu+s/usr/bin/cat 在某些情况下,以root用户身份访问系统有潜在危险,并可能导致系统和数据损害。 我们可以用setuid程序,例如su和sudo解决 只有/etc/sudoers配置文件中列出的用户才可以使用该sudo命令,命令在用户的shell中执行,而不是在rootshell中执行。这意味着root可以完全禁用shell。 每个使用该sudo命令的成功身份验证都会记录到/var/log/messages,并将的用户和发出的命令记录到文件/var/log/secure中 要赋予某人完全的管理权限: 用visudo命令编辑/etc/sudoers 用户名ALL=(ALL)ALL#允许用户使用sudo执行任何命令 赋予部分管理权限: %usersALL=/sbin/mount/mnt/cdrom,/sbin/umount/mnt/cdrom#允许users组中的成员执行执行的挂载磁盘命令 不需要输入sudo密码执行一组命令 Cmnd_AliasSYS_BACKUP=/bin/su-root-c-> ->/usr/locale/sbin/sys_backup.sh,/mnt/cdrom insmsop1ALL=(ALL)NOPASSWD:SYS_BACKUP Defaultstimestamp_timeout=value#value=0,每次sudo都需要输入密码 如果某个帐户遭到入侵,攻击者可以使用以下sudo管理权限打开一个新的shell: Linux文件或目录的基础权限位是由9个字符来控制的,每3位字符为一组。 r(4)w(2)x(1)-(0) r-读:是否可以查看文件内容 w-写:是否可以编辑文件内容 x-执行:是否可以直接运行一个文件 文件权限总结: 01.root用户可以随时查看/编辑任意文件,没有任何权限,只是不能执行文件(root用户就是无敌的存在) 02.属主用户想编辑查看文件,最好属主用户拥有读(*)和写 03.文件权限中最重要权限为r权限 拥有r权限,可以结合w权限,正常编辑和查看文件 拥有r权限,可以结合x权限,正常执行和查看文件 r-读:读取显示目录下面文件名称信息 w-写:是否可以在目录中创建删除数据信息 x-执行:是否可以进行目录的切换 目录权限总结: 01.root用户对目录管理是无敌的权限 02.目录权限中最重要权限为x权限 拥有x权限,可以结合r权限,正常查看目录中数据信息 拥有x权限,可以结合w权限,正常在目录中创建或删除数据 默认文件权限:644rw-r--r--600 默认目录权限:755rwxr-xr-x700 单独修改指定用户权限 chmodu+rwx---属主添加指定权限 chmodu-rwx---属主删除指定权限 chmodu=rwx---属主直接设置权限 chmodg+rwx---属组添加指定权限 chmodg-rwx---属组删除指定权限 chmodg=rwx---属组直接设置权限 chmodo+rwx---其他用户添加指定权限 chmodo-rwx---其他用户删除指定权限 chmodo=rwx---其他用户直接设置权限 批量修改所有用户权限 chmod权限数值---批量修改 chmoda+rwx---所有用户添加指定权限 chmoda-rwx---所有用户删除指定权限 chmoda=rwx---所有用户设置指定权限 文件权限数值==666-umask数值 umask数值为偶数:666-umask(066)数值==600 umask数值为奇数:666-umask(066)==644 目录权限数值==777-umask数值 1)创建的文件权限默认都是600 umask066 2)创建的目录前线默认都是700 umask077 3)创建的文件权限默认都是633 chmod if[$UID-gt199]&&["`/usr/bin/id-gn`"="`/usr/bin/id-un`"]条件表达式 then---条件为真 umask002娶白富美 else---条件为假 umask022娶个女的 fi >greaterthangt =equaleq >=greaterequalge <=lessequalle <>noequalne 文件属性信息: 12位权限位第一个三位(属主权限位)第二个三位(属组权限位)第三个三位(其他用户权限位) setuid:让其他用户拥有文件属主的能力u+ss=4 [root@oldboymeng~]#ll/usr/bin/cat rwxr-xr-x.1rootroot54160Oct312018/usr/bin/cat [root@oldboymeng~]#chmodu+s/usr/bin/cat rwsr-xr-x.1rootroot54160Oct312018/usr/bin/cat setgid:让其他用户组拥有文件属组的能力(了解)g+ss=2 chmodg+s/usr/bin/cat stickybit:可以创建一个共享目录/共享目录中的数据不能被别的用户修改o+tt=1 chmodo+t/share 12位权限位: 124124124124-->/tmp1777/bin/cat4755/bin/cat2755 方法1使用rwx 例1:属主去掉写入权限使用chmodu-w1.sh 例2:属主同时给rwx权限=先清除在赋值权限 例3:属主属组其他用户同时增加x执行权限 例1:使用a对所有用户删除x执行权限a=ugo 例2:使用a对所有用户增加x执行权限 例3:直接增加x权限(注只对x使用此种方法rw建议使用ugo方式) 方法2使用数字进行权限修改(常用) 例1:文件修改为644权限rw-r--r— 例2:文件修改为755权限rwx-r-xr-x 最终要求(独立解决文件权限问题Permissiondenied) 环境准备: 两个窗口一个root(权限修改)oldboy(测试)保证oldboy用户正常使用 脚本中放一个命令 测试文件的rwx含义 修改2.sh所有者为oldby 例1:测试r权限 root执行 oldboy测试除了可读不可写和执行 例2:测试w权限 root修改 oldboy测试可写不可读不可执行 注意:权限的特殊性 是否能修改文件的内容,需要有r权限配置 只有w强制保存退出会导致源文件内容清空 root下查看源文件 oldboy下写入命令whoami并强制保存退出 root下查看内容内容被覆盖 例3:测试x权限 oldboy测试什么权限都没有因为bash不知道文件里有什么内容看不到,所以x也不允许执行 x想要执行则需要r配置rx 文件权限小结: r显示文件内容 w是否能修改文件的内容需要有r权限配置 只有w的时候保存退出会导致源文件内容清空 x是否有执行权限需要有r可读权限配置 r是否能查看目录的内容ls w是否能在目录中创建删除重命名文件权限 x是否有进入目录路的权限cd 注意: 1.r是否能查看目录内容ls需要x权限配合 2.w是否能在目录中创建删除重命名文件权限需要x权限配合 3.x是否能进入到目录权限cd是否能修改或查看目录中文件属性 Linux下所有的目录大部分都是755权限 例1:测试目录的r权限 在/oldboy/下创建目录和文件 oldboy测试 例2: oldboy测试没有任何权限需要x权限配置 修改 测试 问答: root修改文件权限1.sh 在oldboy下是否可删除1.sh 权限拒绝排查流程 odlboy用户下面几个操作报错原因: [oldboy@lzyoldboy]$cat/etc/shadow cat:/etc/shadow:Permissiondenied [oldboy@lzyoldboy]$echo'#'>>/etc/passwd -bash:/etc/passwd:Permissiondenied [oldboy@lzyoldboy]$touch/etc/passwd.txt touch:cannottouch‘/etc/passwd.txt’:Permissiondenied [oldboy@lzyoldboy]$rm-rf/etc/shadow rm:cannotremove‘/etc/shadow’:Permissiondenied [oldboy@lzyoldboy]$ls/root/ ls:cannotopendirectory/root/:Permissiondenied 一,添加一个UID是888的虚拟用户mysql写出命令 useradd-u888-s/sbin/nologinmysql 二,测试环境如下,请完成后面题的要求 [root@oldboyedu~]#catdatafile SteveBlenheim:238-923-7366:95LathamLane,Easton,PA83755:11/12/56:20300 BettyBoop:245-836-8357:635CutesyLane,Hollywood,CA91464:6/23/23:14500 IgorChevsky:385-375-8395:3567PopulusPlace,Caldwell,NJ23875:6/18/68:23400 NormaCorder:397-857-2735:74PineStreet,Dearborn,MI23874:3/28/45:245700 JenniferCowan:548-834-2348:583LaurelAve.,Kingsville,TX83745:10/1/35:58900 JonDeLoach:408-253-3122:123ParkSt.,SanJose,CA04086:7/25/53:85100 KarenEvich:284-758-2857:23EdgecliffPlace,Lincoln,NB92086:7/25/53:85100 KarenEvich:284-758-2867:23EdgecliffPlace,Lincoln,NB92743:11/3/35:58200 FredFardbarkle:674-843-1385:20ParakLane,DeLuth,MN23850:4/12/23:780900 LoriGortz:327-832-5728:3465MirloStreet,Peabody,MA34756:10/2/65:35200 PacoGutierrez:835-365-1284:454EasyStreet,Decatur,IL75732:2/28/53:123500 EphramHardy:293-259-5395:235CarltonLane,Joliet,IL73858:8/12/20:56700 JamesIkeda:834-938-8376:23445AsterAve.,Allentown,NJ83745:12/1/38:45000 BarbaraKertz:385-573-8326:832PonceDrive,Gary,IN83756:12/1/46:268500 LesleyKirstin:408-456-1234:4HarvardSquare,Boston,MA02133:4/22/62:52600 WilliamKopf:846-836-2837:6937WareRoad,Milton,PA93756:9/21/46:43500 SirLancelot:837-835-8257:474CamelotBoulevard,Bath,WY28356:5/13/69:24500 JesseNeal:408-233-8971:45RoseTerrace,SanFrancisco,CA92303:2/3/36:25000 ZippyPinhead:834-823-8319:2356BizarroAve.,Farmount,IL84357:1/1/67:89500 ArthurPutie:923-835-8745:23WimpLane,Kensington,DL38758:8/31/69:126000 PopeyeSailor:156-454-3322:945BlutoStreet,Anywhere,USA29358:3/19/35:22350 TommySavage:408-724-0140:1222OxbowCourt,Sunnyvale,CA94087:5/19/66:34200 YukioTakeshida:387-827-1095:13UnoLane,Ashville,NC23556:7/1/29:57000 VinhTranh:438-910-7449:8235MapleStreet,Wilmington,VM29085:9/23/63:68900 1.显示包含San的行 2.显示以J开头的人名所在的行 3.显示700结尾的行 4,显示不包834的行 6,显示姓以K或k开头的行 三,创建一个用户用户UID为666组属于为test不创建家目录并且为其非交互式创建一个秘密123456 useradd-u666-Mmyusermod-Gtestmyecho123456|passwd–stdinmy useradd-u666-gtest-Mbairihong;echo123456|passwd--stdinbairihong 四,统计/var/log下文件的个数。 五,创建一个bairihong的用户-----并设置密码为123.com-----切换到bairihong用户------然后显示当前用户名。 useraddbairihongpasswdbairihong123.comsu–bairihongwhoami 六,取出网卡ip地址(至少2种方法) [root@oldboyedu~]#ipa 1:lo: link/loopback00:00:00:00:00:00brd00:00:00:00:00:00 inet127.0.0.1/8scopehostlo 2:eth0: link/ether00:16:3e:01:4c:a6brdff:ff:ff:ff:ff:ff inet172.31.196.105/20brd172.31.207.255scopeglobaleth0 ipa|awk-F“[/]+”‘NR==6{print$2}’ ipa|sed-rn‘s#.*et(.*)/20br.*#\1#p’ hostname-I 七,使用awk取出/etc/passwd第一列数据也就是取出用户名。 八,用awk命令打印文件所有行的第一个字段 awk‘{print$1}’ 九,写出目前所学过的系统优化和具体执行的命令例如selinux如何永久关闭给出详细信息 1.yum源选择国内的yum源仓库aliyun/etc/yum.repos.d/yum源配置文件 2.创建普通用户useradd 3.关闭SElinux(必须关)/etc/selinux/configSELINUX=disabled 4.关闭防火墙systemctlstopfirewalldsystemctldisablefirewalld 5.字符集,乱码 6.安装常用工具软件,命令 7.网络服务,永久和临时关闭systemctldisableNetworkManager 十,用命令行更改config.txt文件,把里面所有的“name”更改为“address” sed-ni‘s#name#address#gp’config.txt 十一,显示/etc/passwd文件中其默认shell为/bin/bash的用户 十二,显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户 cat/etc/passwd|grep-v‘/sbin/nologin’ 十三,写出CentOS6的启动流程 1.按下电源 2.开机自检(BIOS) 3.MBR引导 4.GRUB菜单 5.加载内核 6.运行INIT进程 7.读取/etc/inittab 8.读取/etc/rc.sysinit初始化系统 9.根据运行级别运行/etc/rc数字.d下面的脚本 十四,翻译下面错误语句 1,nospaceleftondevice磁盘空间不足 Nopackageipavailable没有可用的包ip 3,-bash:LS:commandnotfound命令没有找到 4.mkdir:cannotcreatedirectory‘aa.txt’:Permissiondenied 无法创建目录'aa。txt:权限拒绝 5.id:zhangsan:nosuchuser没有这样的用户 什么是定时任务 闹钟Alarmy叫醒方式:算法(加减乘除2位)动作(5次)拍照() 定时任务实现方法:cronie 实现方式: 1.系统默认定时任务 /etc/cron.daily---每天执行的任务 logrotate脚本---实现日志文件切割功能 切割文件过程 01.将源文件进行重命名 02.重启程序服务,生成源文件 /etc/cron.hourly---每小时执行的任务 /etc/cron.monthly---每个月执行的任务 /etc/cron.weekly---每周执行的任务 2.自定义定时任务 一个命令: crontab-l---显示定时任务配置信息 crontab-e---编写定时任务配置信息visudo 两个文件: /var/spool/cron/root(oldboy)---root用户编写的定时任务配置信息/etc/sudoers /var/log/cron---定时任务日志文件(排错) /etc/cron.deny---定义定时任务用户黑名单(了解) cp mv tar 游戏公司5-6点左右 公司的网站12点左右 电商(京东淘宝当当拼多多唯品会聚美) crontable crond(crontab)定时任务软件(软件包cronie) 800M左右直接卡死系统 数据的统计分析 crontab-l:查看定时任务 crontab-e:检测语法编辑定时任务文件写入定时任务==编辑/var/spool/cron crontab-r:删除当前用户的所有定时任务,若仅要删除一项,请用-e去编辑 crontab-u:只有root才能进行这个任务,也即帮其他用户新建/删除crontab工作调度 *****command minutehourdaymonthweekcommand 分时天月星期命令 minute:表示分钟,可以是从0到59之间的任何整数。 hour:表示小时,可以是从0到23之间的任何整数。 day:表示日期,可以是从1到31之间的任何整数。 month:表示月份,可以是从1到12之间的任何整数。 week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。 user-name:用户名 command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件 查看服务是否已经运行用ps-ax|grepcron chkconfig–listcrond查看crond是否开机自动启动 chkconfig–level35cronon设置crond开机自动启动 每天的上午8点30分,来学校上车(gotoschool) 分时日月周 308*** 每天晚上12点准时,回家自己开车(gotobed) */3000***gotobed *代表每一分钟都执行任务特殊字符: 星号(*):代表每的意思,例如month字段如果是星号,则表示每月都执行该命令操作。 逗号(,):表示分隔时段的意思,例如,“1,3,5,7,9”。 ***** 每天的上午7点到上午11点每一个小时运行CMD命令 0007-11***CMD ##分钟写上00 笔试题:要求每日的凌晨执行一条定时任务xxx *00***xxxx错误的 0000***xxx正确的 0007-11***pwd 每分钟把自己的名字追加到/oldboy/oldboy.txt crontab-e编辑文件写入定时任务 crontab-l查看当前用户的定时任务 超过两条命令,都是用脚本(命令大礼包) 定时任务中-命令或脚本结果(正确及错误)定向到黑洞(>/dev/null2>&1)或追加到文件中>>/tmp/oldboy.txt2>&1 要领1:定时任务要加注释 要领2:定时任务命令或脚本结尾加&>/dev/null或>/dev/null2>&1或1>/dev/null2>/dev/null 要领3:定时任务执行shell脚本前加/bin/sh,定时任务执行shell脚本不必添加执行权限 要领4:定时任务命令或程序尽量写到脚本里,定时任务只要执行脚本即可 注意操作步骤: (1)命令行执行 (2)编写脚本 (3)测试脚本 (4)设置定时任务 要领5:生产任务程序不要随意打印输出信息 要领6:定时任务执行的脚本要规范路径(例如/server/script) 要领7:配置定时任务要规范操作过程 要领8:定时任务执行特殊的字符需要进行转义,否则会报错,例如百分号% [oldboy@oldboymeng~]$ps-ef|grepcron root638910Jun2300:00:01/usr/sbin/crond-n 格式信息: *****具体做的事情 测验01:每天晚上9:30上床睡觉---3021***上床睡觉 测验02:每天早上7:00起床上学---0007***起床上学 测验04:上午10点整11点整12点整都要进行休息---0010-12***进行休息 测验05:上午10点整休息12点整下午15点整下午17点整---0010,12,15,17***进行休息 *每每分钟每小时每天每月每周 /每隔*/1每隔一分钟每隔1小时 -间隔(连续)10-1210111210:0010:0110:0211:0011:01 ,间隔(不连续)10,12 测验06:每月5号周三晚上12点整和女朋友睡觉 PS:日期和星期不能同时出现 ntpdatentp1.aliyun.com */3****/usr/bin/ntpdatentp1.aliyun.com 第三步:编写定时任务注释说明 */3****ntpdatentp1.aliyun.com 2)每隔1小时的整点,执行数据备份任务(cp/etc/hosts/tmp/hosts.bak) 00*/1***cp/etc/hosts/tmp/hosts.bak **/1***cp/etc/hosts/tmp/hosts.`date+%T` 第一个历程:执行命令测试 cd/ tarzchf/tmp/oldboy_$(date+%H-%M).tar.gz./etc/hosts./etc/rc.local./server/scripts/ 第二个历程:编写脚本信息 #!/bin/bash 第三个历程:测试执行脚本 /bin/sh/server/scripts/compress.sh 第四个历程:编写定时任务 crontab-e *****/bin/sh/server/scripts/compress.sh&>/dev/null 第五个历程:验证定时任务 如果定时任务规则结尾不加>/dev/null2>&1或者追加到文件中>>/tmp/oldboy2>&1,很容易导致硬盘inode空间被占满,从而系统服务不正常。 Youhavemailin/var/spool/mail/root /dev/null 1正确输出 1>>oldboy.txt 2>>test.txt >/dev/null2>&1 ntpdatentp1.aliyun.com>/dev/null2>&1 每天凌晨1点把/etc/目录打包备份/tmp目录下要求每天的名字不同。 date+%F tarzcfxx.tar.gz/etc #命令的解析方式 第一种``引号中写命令例如`pwd` 第二种$()括号中写命令例如$(pwd) [root@oldboyeduscripts]#echo`pwd` /server/scripts [root@oldboyeduscripts]#echo$(pwd) [root@oldboyeduscripts]#echo`date+%F` 2019-05-29 [root@oldboyeduscripts]#echo$(date+%F) 每天创建一个创建一个以ip地址命名的目录,并把/etc/目录打包压缩放在里面,保持每天的压缩包名字不同 1.如何取IPipifconfig+三剑客取出IP ifconfig|awk'NR==2{print$2}' 方法1变量dir=`ifconfig|awk'NR==2{print$2}'` 方法2mkdir`ifconfig|awk'NR==2{print$2}'` 2.到/进行打包放在第一步创建好的目录并且名称每天不一样 cd/&&tarzcf/root/$dir/`date+%F`.tar.gzetc time=`date+%F` dir=`ifconfig|awk'NR==2{print$2}'` [-d/data/$dir]||mkdir/data/$dir cd/&&tarzcf/data/$dir/$time.tar.gzetc 3.x写入定时任务 *****sh/root/tar.sh 报错: [root@oldboyedu~]#cat/tmp/ip.log /root/tar.sh:line2:ifconfig:commandnotfound 解决方法1 命令加全路径执行 解决方法2 在脚本的开头./etc/profile /var/log/cron Jun2417:44:57oldboymengcrontab[13105]:(root)BEGINEDIT(root) Jun2417:45:34oldboymengcrontab[13105]:(root)REPLACE(root) Jun2417:45:34oldboymengcrontab[13105]:(root)ENDEDIT(root) Jun2417:45:40oldboymengcrontab[13107]:(root)LIST(root) Jul700:03:01oldboymengCROND[13127]:(root)CMD(ntpdatentp1.aliyun.com) 010203 02.主机名称信息 03.什么用户执行了定时任务 1)定时任务中命令信息最好使用绝对路径 定时任务执行时识别PATH环境变量信息:/usr/bin:/bin 2)定时任务中命令信息中特殊符号无法直接识别 方法一:特殊符号加\ 方法二:将命令信息写成脚本 3)定时任务编写不正确,会产生错误信息 postfix邮件服务开启 错误信息存放位置:/var/spool/mail/rootblock占用过多,造成磁盘存储资源减少 postfix邮件服务关闭 错误信息存放位置:/var/spool/postfix/maildrop/inode占用过多,造成磁盘存储资源减少 解决方式:将邮件服务开启,将产生错误信息追加到黑洞中 **/1***/bin/sh/server/scripts/backup_file.sh&>/dev/null 4)执行一些命令时,尽量较少命令信息输出(错误输出/正确输出) 5)完成任务大于两个命令,就需要编写脚本 6)脚本编写是需要有注释信息 7)定时任务执行java程序操作时,需要编写环境变量!!! 需要在脚本里定时java程序环境变量 JAVAHOME="XXXX" CLASSPATH="XXXX" PATH="$PATH:JAVAXXX" ./catlina.shrestart #变量 PS1 LANG RANDOM echo$RANDOM PATH变量存放着命令的路径 echo$PATH 永久生效更改/etc/profile 命令的执行过程 1.输入命令 2.查找PATH变量中有没有命令 3.如果有则执行 4.如果没有commandnotfound 1.Linux下配置一条默认网关 routeadddefaultgw10.0.0.254 routedeldefaultgw10.0.0.254 2.配置一条静态路由 iprouteadd0/0via10.0.0.254 iproutedel0/0via10.0.0.254 3.策略路由(在centos下使用vpn拨号的情况下)安全的给test表设置一个默认路由 iprouteadd0/0via10.0.0.254tabletest ipruleaddfrom10.0.0.1viatable 查看磁盘分区 fdisk-l 磁盘分区 fdisk/dev/sdb fdisk m帮助 naddanewpartition分区创建一个新的分区 p查看分区printthepartitiontable d删除deleteapartition w保存退出writetabletodiskandexit 格式化 mkfs.xfs===mkfs-txfs 查看磁盘分区的UUID ls-l/dev/disk/by-uuid blkid/dev/sdb 如何开机自动挂载 1./etc/rc.local====/etc/rc.d/rc.local 2./etc/fstab UUID=1efb0ec2-67c7-4a90-838/xfsdefaults00 UUID=445c8f39-9c6c-4e10-941/bootxfsdefaults00 UUID=85441e97-fdf4-4fefswapswapdefaults00 设备名/UUID挂载点系统文件类型挂载属性(开机是否备份)(开机是否自检磁盘) 传统的MBR(MasterBootRecord)分区方式,有一个局限: 无法支持超过2TB的硬盘的分区(或单个分区超过2TB) 如果大于2TB就用GPT(GloballyUniqueIdentifierPartitionTableFormat)分区的概念 GPT的分区表很好了解决了传统MBR无法逾越2TB的限制。 但是在Linux系统中,传统的fdisk命令无法支持gpt分区方式。 (在红帽企业版Linux4Update4之后的版本提供了对大于2terabytes(TB)的磁盘设备的支持) parted的操作都是实时的, 也就是说你执行了一个分区的命令,他就实实在在地分区了, 而不是像fdisk那样,需要执行w命令写入所做的修改,所以进行parted的测试千万注意不能在生产环境中! 简述:parted是一个磁盘分区管理工具, 它比fdisk更加灵活,功能也更丰富,同时还支持GUID分区表(GUIDPartitionTable), 这在IA64平台上管理磁盘时非常有用,它同时支持交互模式和非交互模式.它除了能够 进行分区的添加,删除等常见操作外,还可以移动分区,制作文件系统,调整文件系统大小, 复制文件系统。 需求:现有一个做了RAID5的硬盘,要求分三个区 硬盘总分区大小:6.2T /data04.8T /data11T 4G(无需格式化,作DRBD用) 具体操作方法如下: 1、分区 parted/dev/sdbmklabelgpt parted/dev/sdbmkpartprimary04800000 parted/dev/sdbmkpartprimary48000015800001 parted/dev/sdbmkpartprimary58000025804098 parted/dev/sdbp [root@drbd01~]#parted/dev/sdbp Model:DELLPERCH700(scsi) Disk/dev/sdb:6998GB Sectorsize(logical/physical):512B/512B PartitionTable:gpt NumberStartEndSizeFilesystemName标志 117.4kB4800GB4800GBext3primary 24800GB5800GB1000GBext3primary 35800GB5804GB4097MBprimary 2、格式化 mkfs.ext3/dev/sdb1 mkfs.ext3/dev/sdb2 3、挂载 mount/dev/sdb1/data0 mount/dev/sdb2/data1 4、查看分区结果 [root@drbd01~]#df-h 文件系统容量已用可用已用%挂载点 /dev/sda220G2.7G16G15%/ /dev/sda5875G1.1G829G1%/elain /dev/sdb14.3T1.3G4.1T1%/data0 /dev/sdb21000G1.1G998G1%/data0 /dev/sda1494M17M452M4%/boot 大于2T硬盘parted分区演示: parted/dev/sdcmklabelgpt parted/dev/sdcmkpartprimary0200 parted/dev/sdcp parted/dev/sdcmkpartprimary201400 parted/dev/sdcmkpartprimary401900 [root@oldboy~]#parted/dev/sdcp Model:VMware,VMwareVirtualS(scsi) Disk/dev/sdc:1074MB NumberStartEndSizeFilesystemNameFlags 117.4kB200MB200MBprimary 2200MB400MB200MBprimary 3400MB402MB2000kBprimary Information:Don'tforgettoupdate/etc/fstab,ifnecessary. [root@oldboy~]#ll/dev/sdc* brw-r-----1rootdisk8,32Mar1804:41/dev/sdc brw-r-----1rootdisk8,33Mar1804:41/dev/sdc1 brw-r-----1rootdisk8,34Mar1804:41/dev/sdc2 brw-r-----1rootdisk8,35Mar1804:41/dev/sdc3 mkfs.ext3/dev/sdc1 tune2fs-c-1/dev/sdc1 ==================================================== parted具体操作方法如下: GPT分区全名为GloballyUniqueIdentifierPartitionTableFormat,是指全局唯一标示磁盘分区表格式。 由于MBR分区表的最大可寻址的存储空间只有2Tb(232×512字节)。因此,在大硬盘出现的现在,MBR分区方式逐渐被GUID分区表取代。 1、非交互分区手动输入提示实例 parted/dev/sdbmkpartprimary0500 parted/dev/sdbmkpartprimary5011000 mkfs-text4/dev/sdb1/dev/sdb2 mount/dev/sdb2/tmp 2、非交互分区忽略提示实例: parted/dev/sdbmklabelgptyes parted/dev/sdbmkpartprimaryext40100Ignore parted/dev/sdbmkpartprimarylinux-swap1018192Ignore parted/dev/sdbmkpartlogicalext48193100GBIgnore parted/dev/sdbmkpartlogicalext4101GB3000GBIgnore parted/dev/sdbquit parted与fdisk区别: 1、支持gpt分区表,可以对大于2T的磁盘分区。 2、分区直接生效,不需要使用命令写入磁盘,最好partprobe/dev/sdb。 3、格式化挂载等和fdisk无区别。 更改GPT前的格式: [root@oldboy/]#parted/dev/sdbp Disk/dev/sdb:107MB PartitionTable:msdos 更改后: partprobe 实验:100M盘(一键完成) parted/dev/sdbmklabelgptYes parted/dev/sdbmkpartprimary010Ignore parted/dev/sdbmkpartprimarylinux-swap1121Ignore parted/dev/sdbmkpartlogicalext42232Ignore 更改分区格式:(一键完成)推荐 #parted/dev/sdbmklabelgptYes #parted/dev/sdbmkpartprimary010Ignore #parted/dev/sdbmkpartprimary1121Ignore #parted/dev/sdbmkpartlogical2232Ignore #parted/dev/sdbp parted/dev/sdbmklabelmsdosYes parted/dev/sdbmkpartprimary1121Ignore parted/dev/sdbmkpartextended22100Ignore parted/dev/sdbmkpartlogical2232Ignore parted非交互式创建分区 创建200M分区 ddif=/dev/zeroof=/tmp/200mbs=1Mcount=200 挂载到swap 激活swap 第一层:物理结构信息接口内部和外部结构 第二层:逻辑结构信息RAIDLVM 第三层:磁盘分区概念分区命令分区原则 第四层:创建文件系统磁盘格式化 第五层:磁盘管理应用挂载操作 外部结构:磁盘接口转速信息(10K15K)盘片主轴机械臂磁头 内部结构:磁道Track(多个同心圆)扇区sectors(存储数据最小单位-512字节)柱面Cylinder(多个盘片按照柱面读取数据) 算出磁盘大小: 方法一:一个扇区大小*扇区总的数量 方法二:柱面数量*单元块大小(1个柱面大小) 方法三:扇区大小*一个磁道扇区数量*一个盘片磁道数*磁头 磁盘读取数据原理: 需要在一定时期,进行磁盘维护 RAID:速度更快更安全容量更大 RAID5:特点:即安全性能又好只能坏一块硬盘,少一块盘容量 RAID10:特点:即安全性能又好建议只能坏一块硬盘,少一半容量 RAID01:特点:即安全性能又好建议只能坏一块硬盘,少一半容量 如何配置RAID: LVM:逻辑卷管理弹性扩容和缩容磁盘缺陷:存储效率较低 配置方法:??? 01.分区创建PE信息 02.创建VG将PE加入到VG 03.创建LV 04.进行挂载 准备知识:MBR引导信息+分区表信息=512字节 主分区:4个1-4 扩展分区:1个 逻辑分区:n个5-x 准备环境:添加一块磁盘---查看fdisk-l 分区操作过程: 第一个历程:进行分区 第二个历程:设置分区方案 ddeleteapartition 删除分区 gcreateanewemptyGPTpartitiontable 创建一个新的空的GPT分区表(对大于2T磁盘进行分区) llistknownpartitiontypes 列出已知的分区类型 mprintthismenu naddanewpartition***** 创建分区 ocreateanewemptyDOSpartitiontable(对小于2T磁盘进行分区) 创建一个新的空的Dos分区表 pprintthepartitiontable***** 显示分区信息 qquitwithoutsavingchanges 不保存退出 tchangeapartition'ssystemid 显示分区系统编号 uchangedisplay/entryunits wwritetabletodiskandexit****** 保存退出 输入n创建p主分区e扩展分区 分区开始不用设置 分区结束需要设置:+NK+NM+NG 输入p进行查看 第三个历程:分区确认后进行保存 w保存分区表信息 分区指令信息: mklabel(创建分区表MRB-msdos/gpt) createanewdisklabel(partitiontable)mklabelgpt/msdos mkpart(创建新的分区) makeapartitionmkpartprimary020M print(显示分区表信息) displaythepartitiontable rm(删除指定分区信息) deletepartitionNUMBER quit(退出分区界面) exitprogram 第一步:修改分区表 mklabelgpt 第二步:创建分区 mkpartprimary020M 第三步骤:退出格式化 mkfs.xfs/dev/sdd1 GPT分区表:可以分大于2T的磁盘 DOS分区表:可以分小于2T的磁盘 格式化==创建文件系统 文件系统:组织文件数据存储的方式 linux:ext3/ext4xfs存储数据效率/大容量磁盘效率较高 nfs网络文件系统通过网络存储数据 mfsfastdfs分布式存储系统 格式化命令: mkfs-txfs/dev/sdb1 a没有退出挂载目录 b挂载点目录中有数据被进程调用 c其他情况 解决方式:强制卸载 umount-lf/mnt -llazy(懒惰)---不用退出挂载点目录进行卸载 -fforce(强制)---强制进行卸载 a文件系统损坏了 b磁盘出现坏道 mount-oremountrw/ inode不够用 block不够用 如何快速清空目录中的数据: rsync命令 i_link数为0:确保文件硬链接数为0 i_count数为0:调用文件的进程数为0 方法一:重启系统 方法二:利用命令让内核识别硬盘信息 partprobe/dev/sdd 方法一:/etc/rc.local(执行权限) 条件挂载命令 echo'mount/dev/sdc1/oldboy01'>>/etc/rc.local 方法二:/etc/fstab 文件格式信息: UUID=f06d6457-4eb0-4dc1-a790-feff4873fc3eswapswapdefaults00 /dev/cdrom/mntiso9660defaults00 010203040506 01:存储设备文件信息UUID信息获取 02:存储设备挂载点目录 03:挂载存储设备文件系统类型centos7-xfscentos6-ext3/ext4 04:挂载参数信息默认参数信息:rw,suid,dev,exec,auto,nouser,andasync 05:是否自动备份磁盘信息lost+found 06:是否自动检查磁盘信息fsck修复检查磁盘文件系统 默认挂载参数: rw:让挂载点目录具有可读可写权限相反ro suid(setuid):让挂载点目录中的文件特殊权限位生效相反nosuid安全 dev:让挂载点目录存储设备文件保持属性不变 exec:让挂载点目录中的执行文件可以执行相反noexec auto:让挂载点目录实现快速自动挂载相反noauto nouser:让普通用户是否可以卸载和挂载目录相反user了解 async:数据异步存储概念???相反sync同步存储??? manmounts 服务比较消耗内存:java语言程序---tomcat 消耗内存资源:(测试) ddif=/dev/zeroof=/dev/nullbs=1500Mcount=100 第一个历程:将磁盘中取出一部分空间用于扩充swap分区 ddif=/dev/zeroof=/tmp/1Gbs=10Mcount=100 第二个历程:将取出文件空间用于swap使用 mkswap/tmp/1G 第三个历程:加载swap标识文件,增加swap分区大小 swapon/tmp/1G--增加 swapoff/tmp/1G--还原 1)mkdir创建目录信息 -p可以创建多级目录 2)touch创建文件 3)ls列表查看目录或文件信息 ls-d查看目录是否存在 ls-l显示文件或目录的详细属性信息 ls-h以人类可读方式显示信息 ls-a显示隐藏文件数据信息 ls-r反向排序信息 ls-S按照文件大小进行排序 ls-i查看文件inode号码信息 4)pwd显示当前所在路径(绝对路径) 5)cat直接查看文件内容信息 zcat直接查看压缩包中的文件信息 6)vi直接编辑修改文件内容 vi-r恢复临时文件中内容 7)echo将信息输出到屏幕上 8)cd切换目录路径 cd.. cd~ 9)cp复制备份数据 cp-r复制备份目录 cp-a复制备份目录 cp-t指定复制的目标路径 10)mv移动备份数据(剪切) mv-t指定移动的目标路径 11)tree显示目录结构(树形结构显示) 12)rm删除系统数据信息 -f强制删除数据 -r递归删除数据(删除目录) 13)shutdown关机重启命令 -h关机操作 -r重启操作 14)mount挂载命令 -oremout重新挂载 -orw/ro指定挂载点目录权限为读写/只读 15)umount卸载命令 -lf强制卸载 16)df查看磁盘挂载信息/磁盘使用情况 -h以人类可读方式查看信息 17)export用于修改设置环境变量 18)source/.立即加载文件配置信息 19)alias查看别名设置和修改别名设置 20)unalias取消别名功能 21)hostname显示主机名称和修改主机名称 hostname-I显示网卡地址信息 22)systemctl用于启动/停止/重启服务程序 systemctlstart/stop systemctlstatus/is-active/is-enabled 23)hostnamectl永久和临时修改主机名称 24)ifup/ifdown控制指定网卡启动或停止 25)tail查看文件结尾信息 tail-5查看倒数几行(默认倒数10行) tail-f/-F追踪实时监控文件的信息变化 26)head查看文件头部信息 head-5查看头部几行(默认开头10行) 27)rpm管理软件包命令 -ivh安装软件参数 -ql查看软件安装的数据信息路径 -qa查看软件是否安装成功 -qf查看软件命令属于哪个软件大礼包 -qc查看软件配置文件路径信息 rpm-etree--nodeps---卸载指定软件 28)uniq去重命令 uniq-c将重复信息进行统计 29)wc统计字符信息 wc-l统计行数 30)w显示系统连接用户信息/显示负载信息 31)free显示内存信息 free-h人类可读显示信息 32)lscpu显示系统CPU硬件信息 33)uname显示系统信息 -a显示系统详细信息 34)useradd创建用户 35)passwd设置用户密码 --stdin免交互设置密码 36)su切换用户 su- 37)whoami显示当前用户信息 38)yum用于安装系统软件 yuminstall-y安装指定软件 yumgroupinstall-yxxx安装指定包组 yumgrouplist显示可以安装包组信息 yumlist显示可以安装软件包信息 yumrepolist显示使用的yum源信息(baseepel) yumprovides显示指定命令属于哪个软件大礼包 yumremove移除(卸载)指定软件程序(建议不要使用,容易卸载依赖软件) 39)setenforce临时修改selinux状态 getenforce查看selinux状态信息 40)ps-ef查看系统进程信息 41)kill杀死进程信息 kill-9强制杀死指定进程(慎用) 42)history调取历史命令记录信息 history-w将历史命令保存到~/.bash_history文件中 history-c清空历史记录 43)less/more逐行和逐页查看文件信息 44)tr替换文件信息(显示时替换)sedvim> 45)whereis查看命令所在路径 46)locate/updatedb查看系统文件所在路径 47)file查看文件类型 48)xargs实现对信息进行分组 xargs-n2 find|xargs-icp{} 49)tar压缩数据命令 h压缩软连接文件时,将其指向源文件进行压缩 50)id查看用户uidgid以及所属组信息 date"+%F" date"+%F"-d"-1day" date-s"20201010" ntpdatentp2.aliyun.com 53)stat显示数据详细属性信息 statoldboy.txt 54)ln创建链接命令 ln-s创建软连接 55)crontab编写定时任务 crontab-l查看定时任务信息 56)ping测试网络连通性 -c指定ping多少个包 -q只显示ping包结果 -f极速ping 1)grep过滤筛选文件信息命令 grep-i忽略大小写进行过滤 grep-A2查看指定行的后几行内容 grep-B2查看指定行的前几行内容 grep-C2查看指定行的前后几行内容 grep-c统计显示的行数信息 zgrep直接过滤压缩包中的数据信息 zgrep-a 2)sed对文件中行进行处理/替换修改文件内容 -i真正修改替换文件内容 p输出指定信息 s###g替换指定信息 3)awk 4)find查找系统文件数据 tab对命令信息或者路径文件信息进行补全操作 ctrl+l清屏操作 ctrl+a将光标快速移动到命令行的行首 ctrl+e将光标快速移动到命令行的行尾 ctrl+←→将光标按照单词快速移动 ctrl+ccancel(取消)快速终止或取消命令操作 esc+.调用上一个命令最后输入的参数信息 ctrl+u将光标所在位置之前的内容进行删除(剪切) ctrl+k将光标所在位置之后的内容进行删除(剪切) ctrl+w将光标之前的一个连续字符串信息进行删除(剪切) ctrl+y将剪切的内容进行粘贴 ctrl+s将xshell界面进行了锁定 ctrl+q进行解锁 ctrl+r快速检索历史命令(条件:需要有历史命令记录) ctrl+z中断(暂停)程序脚本的运行---死循环??? ~表示家目录信息 ..表示上一级目录 -表示上一次所在的目录信息 >表示标准输出重定向 >>表示标准输出追加重定向 <表示标准输入重定向 <<表示标准追加输入重定向符号 *表示匹配所有内容通配符号 .隐藏文件 表示当前目录 &&表示前一个命令执行成功,再执行后一个命令 $调用变量信息 |管道符号将前一个命令执行的结果,交给管道后面的命令进行处理 $调取上一个命令返回数值,数值为0表示执行正确数值不为0表示执行失败 {..}生成序列信息通配符号 ``将引号中的命令先执行,将执行结果交给引号外面的命令进行处理 !在find命令使用时,表示进行取反排除 1)-bash:tree:commandnotfound命令没有找到 2)mkdir:cannotcreatedirectory‘oldboy’:Fileexists不能创建oldboy目录,目录已经存在 3)omittingdirectory‘oldboy01/’无法进行目录直接复制 4)oldboy.txt:Permissiondenied操作权限阻止 1)操作完检查~ 基础部分回顾: *服务器硬件组成CPU内存硬盘风扇电源 *服务器硬件详细说明 CPU核数路数 内存缓冲缓存 *企业数据存储案例:高并发存储/保证数据安全性 *系统的组成:鸡蛋(内核shell解释器外围软件程序) *系统的历史:GNUGPL *系统的安装:虚拟主机如何配置centos7系统安装(网络配置-网卡名称设置磁盘分区-3种软件安装--最小化安装1236) *如何配置网络信息(修改网卡文件nmtui图形化方式进行修改--NetworkManager需要开启) *利用xshell实现远程连接(xshell软件如何初始化配置)secureCRT *实现远程连接(远程连接异常排查三步曲) *引入系统操作命令cpmvrmlspwdmkdirtouch... *磁盘挂载概念mount *详细的目录结构说明 /etc /usr/local /var(messagessercurecron) /proc 省略 [root@oldboy-xiaodao.com.cn~]#ls-lih/etc/ total1.2M 101115776drwxr-xr-x.3rootroot101Dec2916:33abrt 34011044-rw-r--r--.3rootroot16Dec2916:35adjtime 33596583-rw-r--r--.1rootroot1.5KJun72013aliases 33554501-rw-r--r--.1rootroot12KDec2916:42aliases.db 33583455drwxr-xr-x.2rootroot236Dec2916:33alternatives 34030593-rw-------.1rootroot541Apr112018anacrontab 33880205-rw-r--r--.1rootroot55Apr112018asound.conf 101198241drwxr-x---.3rootroot43Dec2916:33audisp &^.+{}[] 系统特殊符号分类 系统通配符号分类find-name"*oldboy"(find命令常见用法) 系统正则符号分类(基础正则-grepsedawk扩展正则-egrep/grep-Esed-rawk) *命令的执行原理 *命令的语法格式 01.找出满足条件一行信息 02.对一行信息进行处理 *命令应用说明 增删改查 *awk命令还有统计功能 awk运算方法(累加运算i=i+1/i++求和运算i=i+$n/i+=$n) useradduserdelusermodpasswd groupaddgroupdelgroupmod *文件权限说明 普通文件权限有什么rwx 目录文件权限有什么rwx *特殊权限说明(普通用户如何获得root权限) 1)su- 2)sudo 3)设置特殊权限位setuidsetgid粘滞位 *文件或目录的默认权限 文件644目录755 umask命令生成的数值,进行运算获得默认文件(666)或目录(777)权限数值 *一个文件(/var/spool/cron/root)和一个命令crontab *配置文件编写方法 *1-5***定时操作任务命令 分时日月周需要执行任务 *掌握定时任务的编写规范 *掌握定时任务编写的注意事项 按照层次结构进行掌握 第一个层次磁盘的结构(外部结构内部结构) 第二个层次RAID(哪些级别)LVM 第三个层次磁盘分区方法(fdisk--2T以下磁盘MBRparted--2T以上磁盘GPT) 第四个层次磁盘格式化(创建文件系统) 第五个层次磁盘挂载应用(如何实现自动挂载-2种) 企业案例:服务器种java程序耗费内存比较多的时候,如何进行临时调整 解决方法:临时增加swap分区空间大小dd/dev/zero(/dev/null) ============================================= 1)云主机如何进行操作配置ECSRDS 2)记录一些硬件服务器品牌 3)服务器硬件组成部分 CPU(内核几路)内存(缓冲缓存进程守护进程)硬盘(阵列RAID0151001) 研究扩展:线程协程 4)如何记录学习笔记 文本信息:标题(多级列表)正文(中文字体-微软雅黑英文信息-Arial3级正文)注释(表格注释提示信息) 表格信息:表格模板修改 图片信息:格式-修改列宽/边框/阴影 代码信息:样式-代码 1)系统发展史中GNUGPL 2)系统发行版本Centos7/6Ubuntudebian 3)系统虚拟化vmwareworkerstaion虚拟主机(虚拟硬件)快照克隆 问题:网络(NAT桥接仅主机)服务问题(services.msc)虚拟主机数据有问题 4)安装操作系统 1.系统网卡名称需要修改 2.配置网卡信息/磁盘分区/指定软件包(最小化1236) 1)xshell软件如何进行配置 2)xshell软件远程连接排错(大保健-三步曲) 确认链路是否正常 确认链路是否阻塞(安全策略开启) 确认服务是否开启 3)虚拟主机三种网络模式 NAT:外网小孩(虚拟主机网卡地址10.0.0.201)--->大人(本地网卡地址192.168.20.100) NAT网络地址转换技术 优点:不容易造成地址冲突 缺点:不容易让其他物理主机访问 桥接:外网成人(虚拟主机网卡地址192.168.20.2xx)==大人(本地网卡地址192.168.20.100) 缺点:不容易造成地址冲突 优点:容易让其他物理主机访问 仅主机:不能访问外网 优点:安全性高 缺点:不能访问外网能访问外网(操作系统路由信息) 1)关闭和重启命令 2)帮助命令man 3)系统基础操作命令cdpwdmkdirtouchlscpmvrmechocatlessmoretailhead 4)如何编辑文件vim/viiesc:wq!/q! 命令模式--编辑模式转换---命令模式 命令模式--底行模式转换---命令模式 1)什么是系统的挂载 2)系统常用重要目录结构 /etc---配置文件保存的路径 /var---日志保存的目录 /home---普通用户家目录 /root---root管理员家目录 /tmp---临时目录 /mnt---临时挂载目录 /proc---存储数据到内存中 /bin---命令文件保存路径 /sbin---命令文件保存路径 3)系统环境变量/etc/profileexportPATH="$PATH:/XXX" PS1PATHLANG 别名功能 1)掌握命令提示符优化 2)掌握yum源优化 base: epel: 基础yum软件下载: yuminstall-yvimwgettreelrzsznet-toolsbash-completion vimvi编辑的升级版软件 wget下载软件命令 tree列出目录结构信息 lrzsz下载上传数据信息linux--windows net-tools兼容centos6网络命令功能 bash-completion对centos7部分命令参数进行自动补全systemctl 3)系统安全优化 将防火墙服务关闭:临时关闭永久关闭 将selinux服务关闭:临时关闭永久关闭 4)系统字符集优化 临时永久localectlset-localeLANG="xxx" 第一步:用RANDOM生成随机数 第二步:创建多个用户 seq-w10|sed-r's#(.*)#useraddoldboy\1#g' 第三步:批量创建用户/设置密码信息(用RANDOM随机生成密码) #seq-w10|sed-r's#(.*)#useraddoldboy\1;User_Pass=$RANDOM;echo"$User_Pass"|passwd--stdinoldboy\1;echo$User_Passoldboy\1>>/tmp/user_info.txt#g'|bash useraddoldboy01;User_Pass=$RANDOM;echo"$User_Pass"|passwd--stdinoldboy01;echo$User_Passoldboy01>>/tmp/user_info.txt useraddoldboy02;User_Pass=$RANDOM;echo"$User_Pass"|passwd--stdinoldboy02;echo$User_Passoldboy02>>/tmp/user_info.txt useraddoldboy03;User_Pass=$RANDOM;echo"$User_Pass"|passwd--stdinoldboy03;echo$User_Passoldboy03>>/tmp/user_info.txt useraddoldboy04;User_Pass=$RANDOM;echo"$User_Pass"|passwd--stdinoldboy04;echo$User_Passoldboy04>>/tmp/user_info.txt useraddoldboy05;User_Pass=$RANDOM;echo"$User_Pass"|passwd--stdinoldboy05;echo$User_Passoldboy05>>/tmp/user_info.txt useraddoldboy06;User_Pass=$RANDOM;echo"$User_Pass"|passwd--stdinoldboy06;echo$User_Passoldboy06>>/tmp/user_info.txt useraddoldboy07;User_Pass=$RANDOM;echo"$User_Pass"|passwd--stdinoldboy07;echo$User_Passoldboy07>>/tmp/user_info.txt useraddoldboy08;User_Pass=$RANDOM;echo"$User_Pass"|passwd--stdinoldboy08;echo$User_Passoldboy08>>/tmp/user_info.txt useraddoldboy09;User_Pass=$RANDOM;echo"$User_Pass"|passwd--stdinoldboy09;echo$User_Passoldboy09>>/tmp/user_info.txt useraddoldboy10;User_Pass=$RANDOM;echo"$User_Pass"|passwd--stdinoldboy10;echo$User_Passoldboy10>>/tmp/user_info.txt foruserin{01..10} do User_Pass=6678 useraddoldboy02 echo"6678"|passwd--stdinoldboy02 echo6678oldboy02>>/tmp/user_info.txt4565oldboy01 done6678oldboy02 第一步:用MD5生成随机数 pass=$(date+%N|md5sum|cut-c1-8);echo$pass\1 echostu{1..10}|xargs-n1|sed-r's#(.*)#useradd\1#g’ 第三步:批量创建用户/设置密码信息(用MD5随机生成密码) 1)系统文件属性: 2)文件类型: 类型分类:d-l 文件命令:搜索文件find寻找范围条件 如何将/oldboy有权限为644文件,移动到/tmp(至少三种方法) 压缩文件tar(压缩数据查看压缩包解压)unzip/zip 3)文件权限: rwx--用户(属主属组其他用户)--文件(r) rwx--用户(属主属组其他用户)--目录(x) 4)属主属组 用户分类:管理用户虚拟用户普通用户 用户编号:iduidgid 用户和组的关系:1v11vnnvnnv1 5)inode/block 概念: 如何查看: 6)硬链接/软连接 概念:inode号01110110 如何配置ln 特点: 不同的分区不能创建硬链接 /dev/sda3(/)---/oldboy/oldboy.txt源100oldgirl.txt /dev/sdb2(/mnt)---/oldboy/oldboy_hard.txt目标100oldboy.txt 以上方法创建硬链接会失败 nginx---/application/nginx-1.17.0/sbin/nginx软连接/application/nginx 脚本:cmd_path="/application/nginx/sbin/" 基础符号信息:引号系列路径符号重定向符号逻辑符号 通配符号信息:*{}cp/etc/oldboy.txt{,.bak} 正则符号信息:grepsedawk 基础正则;^$^$.*.*[][^]\grepsedawk 扩展正则:+(){}|egrepsed-rawk 测验题:如何取出IP地址(grepsedawk) 1)概念作用 擅长取行修改文件 2)语法结构(执行原理) sed[参数]’条件指令‘文件 3)实践操作: 增删替换查询 4)扩展说明 擅长取列统计分析 awk[参数]'模式{动作}' 删替换gsub(//,"",$n)统计(累加统计i++/i=i+1求和统计i=i+$n) BEGIN、ENDFSNFNR a直接su-变为root b修改指定数据权限chmodugoa644755chown c指定用户提权visudosudo(大宝剑) d设置特殊权限位setuid(u+s(4))setgid(g+s(2))粘滞位(o+t(1))12个权限位 文件默认权限:644目录默认权限:755 umask数值如何运算 /etc/skel /etc/passwd/etc/shadow useradd(虚拟用户)参数?usermoduserdel-r groupadd passwd idlastlastlogwhoamiw 1)如何编写定时任务systemctlstartcrond 一个命令crontab-e PS:日星期不能同时用 *10***10点每分钟都执行0010**6每周610点整 2)如何查看定时任务成功 一个文件/var/log/cron 3)编写定时任务注意事项 1)注意命令使用绝对路径 2)注意特殊符号信息 3)尽量编写脚本信息放入定时任务中 4)需要编写注释 5)尽量将执行任务后面加上重定向到空&>/dev/null 6)脚本中的命令执行不要显示输出信息-v取消-s-q 7)脚本中需要指定特殊环境变量java-tomcat 0X.企业案例01:数据存储方案 高并发存储方案:数据存储--内存(写-缓冲)--磁盘中--内存(读-缓存)--用户读取数据 低并发存储方案:数据存储--磁盘中--内存(读-缓存)---用户读取数据 0X.技术原理总结: 1)磁盘数据读取原理(inodeblock) /etc/oldboy/oldboy.txt 2)硬链接和软链接工作特点区别 3)如何表示数据被真正删除 i_link=0i_count=0 1.date'+%Y%M%D'按照格式显示当前日期,结果如下: [root@oldboymeng~]#date"+%Y-%m-%d%H:%M:%S" 2019-05-2919:19:05 [root@oldboymeng~]#date-s"2019052919:20:30" WedMay2919:20:30CST2019 [root@oldboymeng~]#yum-yinstallntp Loadedplugins:fastestmirror Loadingmirrorspeedsfromcachedhostfile [root@oldboymeng~]#ntpdate-untp1.aliyun.com 29May19:24:04ntpdate[17835]:steptimeserver120.25.115.20offset-2.276150sec ntp常用服务器: 阿里云:ntp1.aliyun.com ntp2.aliyun.com ntp3.aliyun.com ntp4.aliyun.com ntp5.aliyun.com ntp6.aliyun.com ntp7.aliyun.com 中国国家授时中心:210.72.145.44 NTP服务器(上海):ntp.api.bz 美国:time.nist.gov 复旦:ntp.fudan.edu.cn 微软公司授时主机(美国):time.windows.com 北京邮电大学:s1a.time.edu.cn 清华大学:s1b.time.edu.cn 北京大学:s1c.time.edu.cn 台警大授时中心(台湾):asia.pool.ntp.org 4.时区操作 查看时区 date"+%Z" [root@oldboymeng~]#date"+%Z" CST hwclock clock-w [root@oldboymeng~]#hwclock Wed29May201907:55:27PMCST-0.990765seconds [root@oldboymeng~]#hwclock-w Wed29May201907:57:00PMCST-0.434109seconds 命令:取nginx进程pid号,并结束进程 [root@lzy~]#psaxu|grepnginx|grep-vgrep|awk'{print$2}' 3911 3912 [root@lzy~]#psaxu|grepnginx|grep-vgrep|awk'{print$2}'|xargskill-9 [root@oldboyedu~]#cattar.sh 在Linux下,基于开源的数据恢复工具有很多,常见的有debugfs、R-Linux、ext3grep、extundelete等,比较常用的有ext3grep和extundelete,这两个工具的恢复原理基本一样,只是extundelete功能更加强大; Extundelete能够利用inode信息结合日志去查询该inode所在的block位置,以次来查找和恢复所需的数据,该工具最给力的一点就是支持ext3/ext4双格式分区恢复,基于整个磁盘的恢复功能较为强大。 注意事项 因为将文件删除后,仅仅是将文件的inode结点中的扇区指针清零,实际文件还存储在磁盘上,如果磁盘以读写模式挂载,这些已删除的文件的数据块就可能被操作系统重新分配出去,在这些数据块被新的数据覆盖后,这些数据就真的丢失了,恢复工具也回力无天。 所以,以只读模式挂载磁盘可以尽量降低数据块中数据被覆盖的风险,以提高恢复数据成功的几率。 3.tar-xvjfextundelete-0.2.4.tar.bz2 4.cdextundelete-0.2.4#进入程序目录 5../configuremake&&makeinstall 在演示通过extundelete恢复数据之前,我们首先要模拟一个数据误删除环境,这里我们以ext3文件系统为例,在ext4文件系统下的恢复方式与此完全一样。 简单的模拟操作过程如下: [root@cloud1~]#mkdir/data [root@cloud1~]#mkfs.ext3/dev/sdc1 [root@cloud1~]#mount/dev/sdc1/data [root@cloud1~]#cp/etc/passwd/data [root@cloud1~]#cp-r/app/ganglia-3.4.0/data [root@cloud1~]#mkdir/data/test [root@cloud1~]#echo"extundeletetest">/data/test/mytest.txt [root@cloud1~]#cd/data [root@cloud1data]#md5sumpasswd 0715baf8f17a6c51be63b1c5c0fbe8c5passwd [root@cloud1data]#md5sumtest/mytest.txt eb42e4b3f953ce00e78e11bf50652a80test/mytest.txt [root@cloud1data]#rm-rf/data/* 在将数据误删除后,立刻需要做的就是卸载这块磁盘分区: [root@cloud1data]#cd/mnt [root@cloud1mnt]#umount/data 在Linux下可以通过“ls–id”命令来查看某个文件或者目录的inode值,例如查看根目录的inode值,可以输入: [root@cloud1~]#ls-id/ 2/ 通过extundelete命令可以查询/dev/sdc1分区可恢复的数据信息: [root@cloud1/]#extundelete/dev/sdc1--inode2 ...... Filename|Inodenumber|Deletedstatus .2 ..2 lost+found11Deleted passwd49153Deleted test425985Deleted ganglia-3.4.0245761Deleted 根据上面的输出,标记为Deleted状态的是已经删除的文件或目录。同时还可以看到每个已删除文件的inode值,接下来就可以恢复文件了。 extundelete恢复单个文件的参数是“--restore-file”,这里需要注意的是,“--restore-file”后面指定的是恢复文件路径,这个路径是文件的相对路径。相对路径是相对于原来文件的存储路径而言的,比如,原来文件的存储路径是/data/passwd,那么在参数后面直接指定passwd文件即可,如果原来文件的存储路径是/data/test/mytest.txt,那么在参数后面通过“test/mytest.txt”指定即可。 执行如下命令开始恢复文件: [root@cloud1/]#extundelete/dev/sdc1--restore-filepasswd Loadingfilesystemmetadata...40groupsloaded. Loadingjournaldescriptors...54descriptorsloaded. Successfullyrestoredfilepasswd [root@cloud1/]#cdRECOVERED_FILES/ [root@cloud1RECOVERED_FILES]#ls [root@cloud1RECOVERED_FILES]#md5sumpasswd 在文件恢复成功后,extundelete命令默认会在执行命令的当前目录下创建一个RECOVERED_FILES目录,此目录用于存放恢复出来的文件,所以执行extundelete命令的当前目录必须是可写的。 根据上面的输出,通过md5sum命令校验,校验码与之前的完全一致,表明文件恢复成功。 extundelete除了支持恢复单个文件,也支持恢复单个目录,在需要恢复目录时,通过“--restore-directory”选项即可恢复指定目录的所有数据。 继续在上面模拟的误删除数据环境下操作,现在要恢复/data目录下的ganglia-3.4.0文件夹,操作如下: [root@cloud1mnt]#extundelete/dev/sdc1--restore-directory/ganglia-3.4.0 Loadingjournaldescriptors...247descriptorsloaded. Searchingforrecoverableinodesindirectory/ganglia-3.4.0... 781recoverableinodesfound. Lookingthroughthedirectorystructurefordeletedfiles... 4recoverableinodesstilllost. [root@cloud1mnt]#ls RECOVERED_FILES [root@cloud1mnt]#cdRECOVERED_FILES/ ganglia-3.4.0 可以看到之前删除的目录ganglia-3.4.0已经成功恢复了,进入这个目录检查发现:所有文件内容和大小都正常。 当需要恢复的数据较多时,一个个地指定文件或目录将是一个非常繁重和耗时的工作,不过,extundelete考虑到了这点,此时可以通过“--restore-all”选项来恢复所有被删除的文件或文件夹。 仍然在上面模拟的误删除数据环境下操作,现在要恢复/data目录下所有数据,操作过程如下: [root@cloud1mnt]#extundelete/dev/sdc1--restore-all Searchingforrecoverableinodesindirectory/... 0recoverableinodesstilllost. ganglia-3.4.0passwdtest [root@cloud1RECOVERED_FILES]#du-sh/mnt/RECOVERED_FILES/* 15M/mnt/RECOVERED_FILES/ganglia-3.4.0 4.0K/mnt/RECOVERED_FILES/passwd 8.0K/mnt/RECOVERED_FILES/test 可以看到所有数据全部完整地恢复了。 我们首先假定在/data目录下有个刚刚创建的压缩文件ganglia-3.4.0.tar.gz,然后删除此文件,接着卸载/data分区,开始恢复一小时内的文件,操作如下: [root@cloud1~]#cd/data/ [root@cloud1data]#cp/app/ganglia-3.4.0.tar.gz/data [root@cloud1data]#date+%s 1379150309 [root@cloud1data]#rm-rfganglia-3.4.0.tar.gz [root@cloud1mnt]#date+%s 1379150340 [root@cloud1mnt]#extundelete--after1379146740--restore-all/dev/sdc1 Onlyshowandprocessdeletedentriesiftheyaredeletedonorafter1379146740andbefore9223372036854775807. 779recoverableinodesfound. ganglia-3.4.0.tar.gz 可以看到,刚才删除的文件,已经成功恢复,而在/data目录下还有很多被删除的文件却没有恢复,这就是”--after“参数控制的结果,因为/data目录下其他文件都是在一天之前删除的,而我们恢复的是一个小时之内被删除的文件,这就是没有恢复其他被删除文件的原因。