week5

systemctl get-default
systemctl set-default graphical.target 由命令行模式更改为图形界面模式systemctl set-default multi-user.target 由图形界面模式更改为命令行模式

systemctl restart network.service:重启网卡 ascii
vim /etc/sysconfig/network-scription/ 修改ip地址
echo 123|passwd --stdin root 修改口令
(centos7)
添加相应组件
rpm -i /run/media/root/CentOS\ 7\ x86_64/Packages/screen-4.1.0-0.25.20120314git3c2946.el7.x86_64.rpm
(centos6)
添加相应组件
rpm -ivh /media/CentOS_6.10_Final/Packages/screen-4.0.3-19.el6.x86_64.rpm
–rzsz rpm -ivh /run/media/root/CentOS\ 7\ x86_64/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm (黏贴互传)
【entos6】 rz安装路径
rpm -ivh /media/CentOS_6.10_Final/Packages/lrzsz-0.12.20
–finger(centos7):rpm -ivh /run/media/root/CentOS\ 7
x86_64/Packages/finger-0.17-52.el7.x86_64.rpm
–patch rpm -ivh /run/media/root/CentOS\ 7\ x86_64/Packages/patch-2.7.1-8.el7.x86_64.rpm (备份补丁)
–tree rpm -ivh /run/media/root/CentOS\ 7\ x86_64/Packages/tree-1.6.0-10.el7.x86_64.rpm (文件树形结构显示)
–nmap rpm -ivh /run/media/root/CentOS\ 7\ x86_64/Packages/nmap-6.40-13.el7.x86_64.rpm (扫描网络工具)

字体颜色格式\e[F;Bm…\e[0m
F B 前="\e[1;31m]" 后="\e[m]" 红色高亮
30 40 黑色
31 41 红色
32 42 绿色
33 43 黄色
34 44 蓝色
35 45 紫红色
36 46 青蓝色
37 47 白色
----------------------------------------------------------------------I
第二节课 2018年9月19日09:45:01
----------------------------------------------------------------------I
主分区 一个硬盘最多4个 只能有1个活动 不可分割 1-4
扩展分区 一个硬盘最多一个 (划分更小的逻辑分区) 1-4 扩展+主分区<4
逻辑分区 5以后
fdisk -l /dev/sda
查看sda的分区情况
du -sh /boot:查看boot目录有多大
分区规划:/ 50G /boot 1G /data 30G swap交换分区 7.5:4G 6.10:2G
(win 拿文件来模拟内存 linux 拿分区模拟内存/进行交换)
sha1sum /dev/sr0:计算校验码
vmnet1 34网段 192.168.34.1 centos6 34.6 centos7 34.7
本地网卡映射成vmnet0
cat /proc/meminfo:安装系统前查看内存
cat /proc/partitions:安装系统前查看系统硬盘情况
rpm -qa|wc -l:查看包的数量
命令 init 3 5 6 0 runlever startx halt(6关机且断电)(7关机不断电)
whoami tty chvt(1-6) id -u uname -r lscpu free -h lsblk
mii-tool eth0(网卡) echo $SHELL cat /etc/shells pwd help
enable type:判断内外部命令 type enable /bin/csh
>:创建空文件 hostname echo $PS1 df hash sleep (秒)
修改命令行提示符头部颜色 /etc/profile.d/env.sh
nano etc/motd:登录提示
type -a enable -n显示所有禁用命令 enable -n :禁用命令
which:查看某个外部命令路径
whereis:查看某个外部命令路径及对应帮助文档
系统查找命令对应的方式:内部命令–hash–PATH变量
centos7 nmcli connetion modify ens33 connection.autoconnect yes
centos6 其他方法
cat /etc/centos-release:查看系统版本
lsb_release -a:6 查看系统版本
PS1="[\e[1;33m][\u@\h \W]$[\e[0m]" centos6 黄色高亮 背景字体字符
centos7 绿色高亮
PS1路径:/etc/profile.d/env.sh
【练习】
1、显示当前时间,格式:2016-06-18 10:20:30
date “+%F %T”
2、显示前天是星期几
#date -d -2day +%w
3、设置当前日期为2019-08-07 06:05:10
date -s “2019-08-07 06:05:10”

【练习】
1、在本机字符终端登录时,除显示原有信息外,再显示当前登录终端号,主机名和当前时间
who am i
2、今天18:30自动关机,并提示用户
shutdown 18:30 ; wall “system is 18:50 shutdown!!”
----------------------------------------------------------------------I
第三节课 2018年9月21日09:04:22
----------------------------------------------------------------------I
命令 type which:判断外部命令 hexdump -c :查看底层字符 man ascii
echo “ibase=16;obase2;3ab2” |bc: 16进制2进制转换
iconv -l:显示系统中各种字符
iconv -f gb2312 w.txt -o:把w文件转成utf-8 linux能识别的文件
centos6版本:echo /etc/centos-release 内核版本:echo kerner
history pwd -P显示真实路径
basename /etc/sysconfig/
* 基名
dirname /etc/sysconfig/** 目录名
{ } 组合引用,显示打印字串的简单形式
‘’ 强引用:只显示字符 “”弱引用:能识别变量
绝对引用:能识别命令和变量(用途:一个命令调用另外一个命令时用)$()

ASCII码:计算机内部使用 127位 1字节
UTF-8码:世界通用 2-4字节
TAB补全 ctrl+r 搜索历史 ctrl+g 退出历史 alt加. 恢复上一条命令

查看时区:ll etc/localtime
列出所有的时区列表:timedatectl list-timezones
centos7 调整时间:timedatectl set-timezone Asia/Shanghai
cal:日历 cal -y:某年日历 cal 08 2008

HISTCONTROL=ignoredups 忽略连续且重复的命令
ignorespace 忽略以空格开头的命令
ignoreboth 上面两个命令的组合
erasedups 删除重复的命令
存放点:etc/profile 或 ~/.bash_profile

外部命令查看帮助 ** --help
echo ‘- - - ’ > /sys/class/scsi_host2/Centos 7 x86_64
触发 主机硬件更新
nano etc/DIR_COLOR 修改/定义文件颜色

空格:翻屏 b:向文件首部翻屏 d:向文件尾部半屏 u:向首部半屏
q;退出 #**:跳到第几行 1G:首部 G:尾部
n:下一个 N:上一个 ==配合/和?用的
?keyword:从当前位置出发,向文件首部搜索关键字
/keyword:从当前位置出发,向文件尾部搜索关键字
man bash > bash.txt:导出bash.txt文件
cat bash.txt
sz bash.txt 复制到Windows
下载 sublime可以编辑TXT排版

echo $HISTSIZE
cat /etc/profile (查看histsize 1000)
. /etc/profile (立即生效)
HISTFILE:存放历史文件
history -c:清空历史
history -a:刚添加的命令添加到历史文件后面
history -r:读取历史文件的内容添加到列表 (会全部重复存放)
history -w:保存历史列表到指定的历史文件夹(另存为)
history -p* *:把命令展示成多行 (命令不记录)
$() $() 也可以
history -s *:展开历史参数成一行,但不执行,附在列表后面
histtimeformat(大写)="%F %T–":历史记录后显示时间
nano /etc/profile:里面修改后,时间后缀才生效
nano /etc/profile.d/env.sh→添加histtimeformat(大写)="%F %T–" 也可以

HISTIGNORE=ls:hostname :历史记录不显示ls/hostname命令(精确匹配)
环境变量:HISTCONTROL
HISTCONTROL=ignoredups 忽略连续且重复的命令
=ignorespace 忽略所有以空白开头的命令
=ignoreboth 相当于以上两个
=ereasedups 删除重复命令
ctrl+l 清屏,相当于clear米宁
ctrl+o 执行当前命令,并重新显示本命令
ctrl+s 阻止屏幕输出,锁定 ctrl+q 允许屏幕输出
ctrl+c 终止命令
ctrl+z 挂起命令
ctrl+a 光标移到最前面 ctrl+e 光标移到最后面
ctrl+xx 光标在行首和目前位置来回切换
alt+r 删除当前整行
ctrl+u 光标之前的内容全删除 ctrl+k 光标之后的内容全删除
alt+n 重复显示某个**
alt+r 清空本行
ctrl+shift+n 开启多个窗口 ctrl+shift+q 删除多个窗口
ctrl+shift+t 开启多个标签页 ctrlshift+w 删除多个标签页
ctrl+shift + 字体变大 ctrl+shift - 字体变小

ll /proc/$$/df 查看打开的文件对应的数字
exec 8 <>/data/hosts:把hosts对应对应编号改为8

标准输入和输出 先执行0,然后1,其次2
cat < :标准输入重定向(把内容显示出来)
ls > ** 标准输出1的重定向,会覆盖
ls >> ** 追加重定向
ls > /dev/pts/5:把信息重定向到pts5
ls /error /data >all.log 2>&1 正确和错误重定向全部发往all.log
ls ** ** &>all.log :1/2全部重定向到*
(ls ** ** 2>&1)>all.log:1/2全部重定向到*
set -C禁止覆盖 set +C 允许覆盖 >|强制允许
(1;2) >all:1,2全部重定向到all,而不发生覆盖
更改口令:echo Redhat |passwd --stdin wang 把wang改成Redhat
更改口令:echo Redhat |passwd --stdin root &> /dev/null 提示信息隐藏

面试题
A cmd > log 2>&1 log 有错有对
B cmd 2>&1 > log log 只有对
C cmd &> log log 有错有对
D cmd 2>log >&2 log 有错有对

----------------------------------------------------------------------I
第四节课 2018年9月24日09:02:32
----------------------------------------------------------------------I
ls -I:忽略

  • :通配符
    ?:匹配任何单个字符 (小写)
    ~ :当前家目录
    cd - 回到之前的目录
    [*] 或 [^]除了

预定义的字符类:man 7 glob
[:digit:] 0-9 任意 [[:digit:]] [0-9] 其中一个
[:lower:] a-z 任意 [[:lower:]] [a-z] 其中一个
[:upper:] A-Z 任意 [[:upper:]] [A-Z] 其中一个
[:alpha:] 任意大小写字母 [[:alpha:]] 任意大小写字母其中一个
[:alnum:] 任意数字和字母 [[:alnum:]] 任意数字/字母的其中一个
[:space:] 任意空白字符 [[:space:]] 任意单个空白字符

练习题:
1:显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现至少一位数
字的文件或目录
ls /var/1*[0-9][[:lower:]]
2:显示/etc目录下以任意一位数字开头,且以非数字结尾的文件或目录
ls -d /etc/[[:gidit:]]
[1]
3: 显示/etc/目录下以非字母开头,后面跟了一个字母及其它任意长度任意字符
的文件或目录
ls -d /etc/[2][[:alpha:]]*
4.显示/etc/目录下所有以rc开头,并后面是0-6之间的数字,其它为任意字符
的文件或目录
ls -d /etc/rc[0-6]*
5 显示/etc目录下,所有以.d结尾的文件或目录
ls /etc/.d
6 显示/etc目录下,所有.conf结尾,且以m,n,r,p开头的文件或目录
ls /etc/[mnrp]
.conf
7、只显示/root下的隐藏文件和目录
ls -d /root/.*
l. 当前目录为root
8、只显示/etc下的非隐藏目录
ls -d /etc/[^.]*

–touch 创建空文件 (可以刷新文件的时间戳 3个数据都刷新)
stat anaconda-ks.cfg
(ll 默认只显示修改时间)
ll --time=atime * :显示 读时间
ll --time=ctime * :显示 元数据 时间
ll * :显示 改内容 (更改数据)


-a ===只更改 atime读 c元数据
touch -a *
-m ===只更改 mtime写 c元数据
touch -m *
-t ===只更改 atime读 mtime写
touch -t 201910200830.20 * (只限于-t用)

-c ===只刷新时间戳,文件不存在,则不予创建) (读a 写m 元数据c)

CP 复制 (只适合复制普通文件,内容复制,属性变化)
cp -T 复制一个文件(可忽略) cp -t 复制多个文件夹 cp -t 目标 文件夹

cp -i 如覆盖会提示(root下 默认有)
cp -r 递归(复制文件夹所有内容)
cp -n 不覆盖
cp -a (相当于 -d -r -preserve)归档、备份
cp -v 显示详细的过程
cp -p 保留权限 所有者 时间戳
cp -d 保留链接属性(软链接)
cp -u 只复制比你新的文件 (更新文件)
cp -b/–backup 备份 --backup=numbered 备份文件加数字后戳
cp -f 强行复制(删除再复制)
cp f1 – -f1:复制为-f1 文件,-- 也可以用于压缩和删除带-文件

练习题
1、定义别名命令baketc,每天将/etc/目录下所有文件,备份到/app独立的子目
录下,并要求子目录格式为 backupYYYY-mm-dd,备份过程可见
alias baketc='cp -av /etc/ /app/backupdate +%F

?2、创建/app/rootdir目录,并复制/root下所有文件到该目录内,要求保留原文件的所有权限。
cp -rp /root/ /app/rootdir

–mv 移动和重命名文件
mv -i 提示 -f 强制 -b 若目标存在,覆盖前先备份

–rm 删除(usr/bin/rm)
-i 提示 -r 递归 -f 强制

alias rm=“mv -t /data” (任何文件都复制到data)
缺陷:rm 加上选项后不能生效

把文件清空(重定向) >> 不存在,创建空文件or存在,叠加,不刷新属性

rename 1 2 con 把1批量换成2,符合con的文件(批量替换/改名)

touch – -a 或者touch ./-a 创建-a
touch ~a 或者touch ./~a 创建~a
rm -f ~wang 或者 rm -f ./~wang 删除wang

–tree 目录
tree -d :只显示目录/文件夹
-L 1:只显示1层
-p /*:只显示由指定名称显示的目录

–mkdir 创建目录
mkdir -p:创建多层目录
-v:显示过程
-m:创建指定权限

–rmdir 删除空目录
rmdir -p :递归删除空目录 逆向

练习
(1) 如何创建/testdir/dir1/x, /testdir/dir1/y, /testdir/dir1/x/a,
/testdir/dir1/x/b, /testdir/dir1/y/a, /testdir/dir1/y/b
mkdir /testdir/dir1/{x,y}/{a,b}

(2) 如何创建/testdir/dir2/x, /testdir/dir2/y, /testdir/dir2/x/a,
/testdir/dir2/x/b
mkdir -p /data/testdir/dir2/{x/{a,b},y}

(3) 如何创建/testdir/dir3, /testdir/dir4, /testdir/dir5, /testdir/dir5/dir6,
/testdir/dir5/dir7
mkdir -p testdir/dir{3,4,5/dir{6,7}}

–inode 索引节点

ll -i :节点编号
df 默认空间大小
df -i;显示每个分区最多的节点编号
dd if=/dve/zere of=/boot/bigfile bs=1M count=860M

touch f{1…520843}| xargs touch 强制创建多个空文件

*面试题:磁盘节点编号占光了,会有什么提示?
no space left on device;会跟磁盘空间占满提示一样,设备没有可用空间

*网易面试题
假设dir1 和 dir2是不同目录,mv /dir1/f1 /dir2/ 会有什么区别?
/dir1 /dir2
同一分区:数据在在磁盘空间没有变动,只改变目录内容(文件名),节点编号不变,磁盘空间数据不变。
不同分区:数据从一个分区搬家到别的分区,分配新的节点编号,新的节点记录,生成各种属性。原来的空间清除之前的节点编号,加标记,表明空闲。

新的节点编号,新的目录 ll -i(前面节点编号,后面链接数)

硬链接:对一个文件起多个名称 指向的文件名
不能跨区,不支持目录,

软连接 用途广,支持跨区,支持目录 指向的数据块
ln -s f2 f2.link
链接红色:表示指向的原始文件没有了

原始文件一般路径用相对路径,相对路径一定相对于软链接文件的路径

绝对路径就是 以 / 根目录为参照的路径名;
相对路径就是以当前目录为参照的路径名;

硬链接和软链接区别:
硬 软
1)同一个文件 不同文件
2)不能跨分区 能跨分区
3)连接数不增长 链接数增加
4)节点编号一样 节点编号不一样
5)原始文件删除,硬链接正常访问 原始文件删除,软链接失效
6)相对路径写法不一样 大小不一样
7)不支持目录创建 支持目录创建
8)相对路径 一样 相对路径 节点不一样

–file 确定文件类型/内容
file -b:只显示结果,不显示文件名称
-l:查看软链接对应的文件类型(也可以查文件对应的路径文件类型)
-F“-”:分割替换,默认“:”

reset:当出现乱码,可以重置

*面试题

–标准输入输出:I/O 0:键盘输入 1:标准输出 2:错误输出
fd:文件描述符 vim:进程 df(文件描述符)
ps aux|grep vim

键盘输入: 0
标准输出:1 当前输出窗口
错误输出:2 当前输出窗口
hostnema > dev/pts/2:把当前命令重定向到pts2

set -C :禁止覆盖 set +C :允许覆盖 >| file 强行覆盖file
dev/null 垃圾箱

all&>覆盖重定向 all&>>追加重定向
&=所有 2>&1 把错的变成对的
1>&2 把对的变成错的

新浪
A cmd &> /dev/null
B cmd > /dev/null 2>&1
C cmd 2>&1 > /dev/null √
D cmd 2> /dev/null 1>&2

) > /data/cat.txt 多个命令重定向到txt
echo magedu | passwd --stdin wang
(显示密码magedu输入给wang账号)

标准输入的重定向
bc < f1.txt > bc.log 批量计算 f1.txt(2*3)
cat < fi.txt > f2.txt 输出复制

–tr 转换和删除字符 (1:1对应的) --也是标准输出
tr ‘a-z’ ‘A-Z’ 把小写字母转换成大写字母
tr‘abcd’ ‘123’ 输入:abcd=123d 1=1对应,剩余直接输出
tr ‘abcd’ ‘123’ 输入:abcdef=1233 1=1对应,没对应符号对应最后一位
tr -t ‘abcd’ ‘123’ 输入abcdef=123def 对等转换,多出来的不做转换
tr -d ‘abc’ :abc删除,其余的显示
tr -d ‘0-9’ :把数字全删除,剩下的显示
tr -dc ‘0-9’ :c(反向)除了0-9,其余的全部删除
tr -s ‘ab’ :s(压缩)压缩aaabbb,结果显示为ab
tr " " + < who.log 把who.log内容的空格替换成+
(ctrl+d退出) \n 换行 \r 回车 ^M=换行+回车 \t Tab键盘
hexdump -C:查看当前

----------------------------------------------------------------------I
第五节课 2018年9月26日09:00:01
----------------------------------------------------------------------I
三种I/0设备 | 把I/O重定向至文件 | 使用管道

cat > f1 cat > f1 <<a(开始) 推荐用EOF
aa > 123
bb > abc
单行重定向 > a(结束) 多行重定向

–发邮件:
实例:mail -s “1hello” root <<END ;goodmorning!END:
内容:发送邮件给root,主题是hello,用END结尾(区分)且单独起一行

–管道(STDERR默认不能通过管道转发,可利用2>&1 或|& 实现)
cmd1 | cmd2 | cmd3 | > 输出,< 输入
命令(cmd1)一必须标准输出
如要错误命令正常输出:2>&1 或者|& 管道前面加上&
管道中-符号 tar:打包命令
tar -cvf - /home |tar -xvf -:把home目录打包给-,然后再把-解包,给-
(- 打包生成的文件名;-cvf:其中c打包,如xvf中x则是解包)

–重定向tee

*面试题
1+2+…100=?
echo {1…100} | tr ’ ’ + | bc

tee 命令 |tee
tee -a :不覆盖,追加

练习
1、将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中
cat /etc/issu|tr ‘a-z’ ‘A-Z’ >/tmp/issue.out
2、将当前系统登录用户的信息转换为大写后保存至/tmp/who.out文件中
who am i | tr ‘a-z’ ‘A-Z’ >/tmp/who,out
3、一个linux用户给root发邮件,要求邮件标题为”help”,邮件正文如下:
mail -s “help” root <<EOF
Hello, I am who,The system version is here,please help me to check it ,thanks!cat etc/centos-release <<EOF

4、将/root/下文件列表,显示成一行,并文件名之间用空格隔开
ls /root|tr “\n” " "

5、计算1+2+3+…+99+100的总和 echo {1…100} | tr ’ ’ ‘+’ | bc

6、删除Windows文本文件中的‘^M’字符
dos2unix file

7、处理字符串“xt.,l 1 jr#!KaTeX parse error: Expected 'EOF', got '#' at position 48: …cho 'xt.,l 1 jr#̲!mn 2 c*/fe 3 uz 4’ | tr -dc '[0-9] ’

8、将PATH变量每个目录显示在独立的一行
echo $PATH | tr ‘:’ ‘\n’

9、将指定文件中0-9分别替代成a-j
cat file|tr “0-9” “a-j”>file

10、将文件/etc/centos-release中每个单词(由字母组成)显示在独立一行,并无空行
cat /etc/centos-release | tr -d " "

–用户和组以及权限管理
系统用户:1-499,1-999 (centos7)
对守护进程获取资源进行权限分配
登录用户:500+,1000+(centos7)
用户ID:uid 组ID:gid id -u / id

【组/用户信息】
linux 组:groupname
管理员组:root,0
普通组:系统组1-499,1-999 普通组500+ 1000+
win:用户名组;不能同名 sid
linux:用户名/组名;可以同名 uid
(当创建一个新用户,默认会创建一个相同名称的主组对应新用户)
一个组队对个用户;一个用户对多个组;多对多的关系

etc/passwd:用户信息及其属性(名称、UID/主GID)
etc/group:组/属性

etc/shadow:用户密码/相关属性 (限管理员查看)
etc/gshadow:组密码/ 相关属性 (限管理员查看)

【passwd格式】
例: wang❌1000:1000:wang:/home/wang:/binbash
对应关系: name:password:UID:GID:GECOS:directory:shell
pwunconv:转换加密口令→etc/passwd
pwconv:返回加密口令

–passwd 设置密码
getent shadow mage
-e **:强制用户下次登录修改密码
-d **:删除指定用户密码

【误删改uid为0的用户,恢复方法】
重启→按e键→在linux16尾部输入:init=/bin/bash
→ctrl+x 启动→cd /root ;mount -o rw,remount / ;
nano etc/pswd→然后更改该目录下root uid权限→重启

chfn user:修改user→passwd文件注释信息(GECOS)按回车键,清空信息
finger user:查看该用户passwd文件注释信息(GECOS)
chsh -s /sbin/nologin wang:修改wang账户的shell类型为nologin
(nologin:不能登录的账户Shell类型,一般给进程和服务用)

getent passwd:查看passwd文件(等价于cat /etc/passwd)
passwd user:查看user单个或多个passwd属性
shadow user:查看user密码单个或多个shadow属性

grub-md5-crypt:生成MD5加密算法(centos 6)

【shadow格式】
·密码(已加密)
·更改时间(距离1970.1.1多少小时)
·更改期限 (0表示随时可更改;只针对用户;root随时可改)
·过期时间(99999表示永不过期)
·警告时间(提前几天通知)
·宽限时间 (默认不设置;如设置,过期会被锁定;day)
·保留字段

–chage 更改口令属性及相关设置
-l 查看相关信息
-d0 设置口令过期,下次登录必须更改口令
chage root:更改口令属性(如最短/长时间,提前/到期警告等)

【加密算法】
cat /etc/login.defs:查看加密算法及其他相关信息
更改加密算法:(只影响之后创建的新用户)
authconfig --passalgo=sha256 --update
$1:128位加密算法
$5:256位加密算法
$6:512位加密算法

openssl rand -base64 12:随机生成一段16位口令

!!:(禁用口令) !:有口令
【组/用户 密码】
getent group :查看组 【组:密码 :编号 :成员】
nano etc/group:修改组 (多个成员用逗号隔开;gshadow也要修改才行)

–groupmems (更改/查看组成员)
-a mage -g wang:把mage加到wang组(附加组)
-d mage -g wang:把mage移除wang组
-l :查看组成员
-p :清除组所有成员
(gpasswd -a mage wang/gpasswd -d mage wang :效果一样)

newgrp mage:临时把mage变成自己的主组,(之前的主组改为附加组)
(不建议这样用;不安全;退出时root不需要输入口令)

scp list.txt 192.168.34.2: (远程复制,若有该文件则覆盖)
newusers /data/list.txt 批量账号创建
groups name:查看name用户组名

echo 123|passwd --stdin lh 或↓
nano pass.txt(输入口令)例:app1:123 app2:234 :app3:345
cat pass.txt|chpasswd:批量更改app1/app2/app3的口令

–gpaasswd
-mage:给mage组添加口令
-A user1,user3 group : 设置user1,user2为group组管理员
-r mage:删除mage组的空口令
-a wang bin:把wang账号添加到bin组
-d wang bin:把wang账号删除bin组
getent gshadow :查看组密码 【组 :密码 :当前管理员 :成员】

【文件操作】 (vi 具有语法检查功能,输错会提示,优于nano)
vipw 等价于vim /etc/passwd
vigr 等价于wim /etc/group
pwck 等价于getent passwd ftp (默认不存在)
grpck 等价于gentent group ftp (默认不存在)

【用户/组管理命令】
(etc/default/useradd 创建用户时,目录默认属性)
group user:查看用户都属于那些组

–useradd **:创建用户
-U :解禁用户的空口令
-L :把用户锁定
-u ** user:指定user的UID
-d **:指定家目录
-o :忽略user的UID的唯一选项 (配合-u)
-d /data/hudir hu:创建hu用户到/data/hudir目录下
-r :创建系统账号(系统默认不需要~目录)默认用较小ID
-s:指定shell类型 (etc/bash)
-c:添加描述
-g 主组 app3:把app作为app3用户的主组
-N :把users作为自己的主组
-m 强制创建家目录 (比如系统用户)
-M 不创建加目录(比如普通用户)
-D 显示etc/default/useradd

–usermod
-aG root wang:把wang账号加入root组
G 附加组 -a 附加组不会丢失
(清空附加组 usermod “” wang ;usermod wang wang)
-s 修改shell类型
-U **:解禁用户密码 (空口令不能解禁)
-L :给用户加锁
-l newuser user:把user用户改名为newuse-sr

–userdel
-r mysql 删除mysql用户
(邮件也必须删除 rm -rf /var/spool/mail/mysql)

【文件/文件夹权限】 --更改立即生效
(u:管理员 g:组内成员 o:其他 a:所有人)
–chmod 更改文件权限 (更改权限:管理员不受限制)
o+w *:给f1其他人添加写入权限
u=rwx,g=r,o=r f1:给3类人分别赋予权限
a=r *:给所有人赋予权限r
wang f1:把f1所有者权限改为wang
chgrp lh f1:f1改为lh组
–chmod 修改权限
-R:递归
a-:所有成员-
+X:只针对文件夹添加执行权限
-g:修改shell类型
(如果一个文件有x权限,那上一层目录加X,也会其他用户x权限)
chmod --reference f2 dir/wang1:把f2的权限复制给wang1
chmod who opt per file
+权限 -权限 =覆盖权限

练习题:
1、创建用户gentoo,附加组为bin和root,默认shell为/bin/csh,注释信息为
“Gentoo Distribution”。
useradd gentoo -G bin,root -s /bin/csh -c GentooDistribution

2、创建下面的用户、成员关系
名字为webs 的组 usergroup webs
用户nginx 使用webs 作为附属组 ! useradd -Ga webs nginx
用户varnish,也使用webs 作为附属组 ! useradd -Ga wbs varnish
用户mysql,不可交互登录系统,且不是webs 的成员,nginx,varnish,
mysql密码都是magedu
usermod -s /sbin/nologin -G “” mysql
echo passwd|passwd --stdin nginx
varnish
mysql

–su 切换用户(非完全切换)保留邮件、当前目录
- user 完全切换
- 默认切换到root
-c (例:cp - -c **)切苏换到root执行命令完后在自动回来

groupadd–创建组
-g GID:创建GID
-r ** :创建系统组

groupdel–删除组 (主组 不能删除,有用户占)

例:
gpasswd 更改组密码
gpasswd -a mage sales:把mage添加到sales组
-d mage sales:把mage删除sales组

groupadd -g 123 lh
useradd -g lh -u 123 lh
(创建组lh,用户lh,使其id/主组保持一致)

对于文件
r read 读 文本文件 【看内容】
w write 写 == 文本文件 【写内容】
x excute 执行
程序(二进制/脚本) 【执行】【基础权限】搭配用

对于目录
r read 读 可浏览文件列表
w write 写 可以创建/删除文件(配合x权限才行)
x excute 执行 cd访问目录内的文件

例子:chown name f2 :把f2所有者为wang (更改u或g)
chgrp webs name:把name所属组改成webs
chown -R mage.root f2 f2管理员mage,主组root

模式法
who:u g o a
opt:+ - =
per:r w x

数字法
chmod 755 file rwxr-xr-x
chmod 764 f2 rwxrw-r–

rx属于目录的基础权限
(对于二进制可执行文件,r权限不是必须的,没有也不受影响)
(rw禁用对于root账户不受限制,要执行,必须加上x)
(对于目录,如果没有x权限 不能 查看文件属性/进入目录/访问文件内容)
(对于文件,如果没有x权限 不能 运行)

实验:删除家目录,恢复
cp -r /etc/skel /home/mage
chown -R mage.mage /home/mage :把/home/mage目录递归 mage.mage(u/g)
chown wang file:把file的所有者改成wang
chgrp webs name:name所属组改成webs

chmod 700 /home/mage:把所有者权限更改为7

【练习】
1、当用户docker对/testdir目录无执行权限时,意味着无法做哪些操作?
不能 查看文件属性/进入目录/访问文件内容

2、当用户mongodb对/testdir目录无读权限时,意味着无法做哪些操作?
不能ls该目录属性,也不能复制其他文件属性

3、当用户redis对/testdir目录无写权限时,该目录下的只读文件file1是否可修改和删除?
不能

4、当用户zabbix对/testdir目录有写和执行权限时,该目录下的只读文件file1是否可修改和删除?
可以

5、复制/etc/fstab文件到/var/tmp下,设置文件所有者为tomcat读写权限,所属组为apps组有读写权限,其他人无权限
cp -a /etc/fstab /var/tmp;chown app.tomcat fstab;chmod 440 fstab

6、误删除了用户git的家目录,请重建并恢复该用户家目录及相应的权限属性
cp -r /etc/skel /home/git
chown -R git.git git


第六节课 2018年9月28日09:00:01

–umask 设置默认权限: (用户 .bashrc) 全局:(etc/bashrc)
默认权限 777-002(文件夹) 666-002(文件)

umask -* 设置默认权限
umask -S:显示u,g,o的权限(新建文件夹默认权限)
umask -p :显示umask值和命令
用法:umask -p >> ~wang/.bashrc(可把前面的值覆盖)

▲对于文件 666-umask 如果是奇数,则将权限+1
▲对于文件夹 777-umask umask值 计算方式不变

【特殊权限】
▲SUID/SGID只继承在二进制的可执行程序上
▲sticky只作用在文件夹上

SUID ( 继承所有者的权限;用chmod 4*** file或u+s file 表示)
例:chmod u+s /file 删除s:chmod 0*** /file

SGID (继承所属组的权限 用chmod 2*** files或 g+s files表示)
例:chomod g+s /file 删除s:chmod 0*** /file

Sticky (只能删除此目录中自己的文件,root不受限 用chmod 1***/o+t表示)
例:chmod 1*** /files 删除t:chmod 0*** /files

设定文件特殊属性(防止误操作、删改移除都不行)
–chattr (扩展元数据)
+ i file 禁止root删改文件 (包括所在目录)
- i file 去除禁用属性
+ a file (只能看/追加)
- a file (去除属性)
lsattr file 查看特殊属性

访问控制列表ACL
–setfacl :显示所有成员的权限
-m u:wang:- f1 (wang用户→f1无权限)
-m u:mage:rwx f1 (mage用户→f1有rwx权限)
-m g:webs:rw f1 (wibs组→f1有rw权限)
-aG webs zhang(zhang 用户添加到webs组)
-x u:wang (删除wang用户的f1权限)
-X file /data/f1 :读取file内容,批量删除f1
-b files:(删除files的acl权限) 例:setfacl -R -b .删除目录权限
-R :递归
-M file /data/f1:读取file的acl,批量应用到f1
-k file 删除默认files的默认ACL权限
-d:默认文件夹权限(例:setfacl -R -m d:u:mage:rw dir)
(mage用户默认dir下设置rw权限,包括后期新建的文件)
-m mask::r f1(限制所有人的权限为r)
(chmod g=r f1 能攻实现同样的效果)

–getfacl file:查看file设置的acl权限
getfacl f1 | setfacl --set-file=-f3
(读取f1的内容,把相应权限设置到f3)

ACL生效顺序:所有者→自定义用户→自定义组→其他

备份和恢复ACL
getfacl -R file > file1(备份file)
setfacl --restore file1(还原file)
(ACL只支持ext4,xfs ;centos 6后分区不支持ACL功能,7支持)
▲备注: tune2fs –o acl/dev/sdb1
mount –o acl/dev/sdb1 /mnt/test
(cento7之前版本,装完系统后,人为分区无法使用ACL功能)

【练习】

1、在/testdir/dir里创建的新文件自动属于webs组,组apps的成员如:tomcat能对这些新文件有读写权限,组dbs的成员如:mysql只能对新文件有读权限,其它用户(不属于webs,apps,dbs)不能访问这个文件夹

先创建所有组以及用户:
groupadd webs;groupadd apps;groupadd dbs;
useradd tomcat;useradd mysql
把相应用户添加到组:
gpasswd -a tomcat apps;
gpasswd -a mysql dbs;
创建/testdir/dir目录并设置相应权限:
mkdir -p /testdir/dir
setfacl -R -m g:apps:wrx /testdir/dir
setfacl -R -m g:dbs:rx /testdir/dir
chown webs.webs /testdir/dir -R
chmod 2770 /testdir/dir

2、备份/testdir/dir里所有文件的ACL权限到/root/acl.txt中,清除/testdir/dir中所有ACL权限,最后还原ACL权限
getfacl -R /testdir/dir > /root/acl.txt
setfacl -b /testdir/dir
cp /root/acl.txt /testdir/dir
setfacl --restore /root/acl.txt

–抽取文本的工具
文件内容:less

–cat 查看所有(不分页)
-n 加行号
-b 只对内容加行号
-s 压缩连续的空行成一行
-A 能看空格和Tab键(^I) $结尾
-E 显示换行符(\n) $结尾
(cat < f1 > f1 :清空 cat < f1 >> f1 :无限循环)

tac:反向显示(行) rev:反向显示(字符)
more:查看文件 (到最后一行退出)
less:分页查看文件 (/ 搜索 n:下 N:上)

grep:检索目标行命令

【显示文本前行或后行的内容】 /dev/urandom (随机字符)
–head:显示头部(默认前十行)
-n 3 file:只显示前3行 (-3也行)
-c 2:取前2个字节
数字/字母/下划线 -前10个

–tail 显示尾部 (默认后十行)
-n 后几行
-c 后几个字节 或 -*
-f 跟踪文件内容变化,常用日志监控
-F 跟踪文件名和文件状态(文件描述符)
-3 显示后三行
tailf 类似tail -f,只监控文件增长的时候(节省服务资源)

–cut 显示列
-d 指定分隔符(默认tab)
-f 列
-c 字符
–output-delimiter=+ 输出结果用“+”作为分隔符

–paste 黏贴 横向合并显示 (cat f1 f2 纵向合并显示)
-d 分隔符
-f 所有的行合成一行
-s 合成一行显示

ss -tn:查看当前链接数

–wc (Word count 统计单词) 1:行 2:单词数 3:字节
-l 总行数
-w 单词总数
-c 字节总数
-m 字符总数
-L 最长行的长度

例:cat /user/share/dict/words |wc -l :统计该文档总行数

【sort文本排序】
sort file:默认a-z 相同的内容在一起 排序
-t 制定分隔符
-k 第几列
-n 按数字大小整理 number
-r 倒叙
-R 随机排序
-u 去重
-k 制定排序的栏位(配合-t使用)

(例sort -nrk 3 -t: 按照数字大小排序,-r是以相反顺序,-k是指定需要排序的栏位,-t指定栏位分隔符为冒号)

netstat:访问链接状态 win:tasklist:显示运行在计算机上的所有进程
netstat -no | findstr **:查看具体的进程编号
【uniq】唯一
–uniq 删除连续的相邻重复行
-c:显示重复行的次数
-d:仅显示重复的行
-u:显示没有重复过的行(不相邻)

【diff】 区分不同之处 【patch】 -b 备份
-u 详细区分
diff -u f1 f2 > diff.log 生成f1/f2 补丁文件
rm -f f2 删除f2
pathch -b f1 diff.log 备份f1(原f1文件为f1.orig f1为f2)

练习
1、找出ifconfig “网卡名”命令结果中本机的IPv4地址
ifconfig|tr -dc [0-9.]\n|cut -dn -f3
2、查出分区空间使用率的最大百分比值
df|grep sda|tr -s " “|cut -d” " -f5|sort -nr|head -1

3、查出用户UID最大值的用户名、UID及shell类型
getent passwd|cut -d: -f1,3,7|sort -nrt : -k 2|head -1

4、查出/tmp的权限,以数字方式显示
stat /tmp|grep Uid|tr “/” “(”|cut -d"(" -f2

5、统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序
netstat -na|grep ESTABLISHED|tr -s " " :|cut -d: -f6|sort|uniq -c|sort -nr

–grep:文本过滤 (行) grep- 选项 模式 文件
-v **: 取反
-i :忽略大小写
-n :显示行号
-c :统计匹配的行数
-o :仅显示匹配到的字符串 (换行)
-q :静默模式 不显示结果
-A3 :包含后面三行都显示
-B3 :包含前面的三行都显示
-C3 :包含前后各三行都显示
-e 1 -e 2:包含1或者2的都显示
-w :匹配整个单词 (中横杠,数字,字母相连都算一个单词)
-f f1 f2:判断f1内容,哪些跟f2相同 (取交集)
-F 相当于fgrep,不支持正则表达式(取文件里的参数)相当于-e
-E 扩展正则表达式
【正则表达式】REGEXP regular expressions
基本正则表达式:BRE grep -E
扩展正则表达式:ERE egrep
查看帮助:man 7 regex

【字符匹配】 \ 转义
* :匹配前面的字符任意次,包括0次
贪婪模式:尽可能长的匹配
. :任意一个字符
?:匹配前面字符0或1次
+:匹配前面字符1次以上
{n}:匹配前面的字符n次
{m,n}:匹配前面的字符至少m次,至多n次
{,n}:匹配前面的字符至多n次
{n,}:匹配前面的字符至少n次

【位置锚定】 定位
^* :行首锚定,用于模式的最左侧
*$ :行尾锚定,用于模式的最右侧
^**$ :匹配固定字符
^$ :空行 -v ‘^ ’ : 非 空 行 [ [ : s p a c e : ] ] ∗ ’:非空行 ^[[:space:]]* :[[:space:]] 空白行
< 或\b:词首锚定
> 或\b:词尾锚定
<word>匹配整个单词
(不能是数字,字母,下划线 _ ;其他的都可以做单词分隔符)

【分组】 把(abc)做一个整体处理
列: (abc).(xyz).
\1:再次调用前面第一个分组 如:(abc).(xyz).(abc)
\2:再次调用前面第二个分组 如:(abc).(xyz).(xyz)
【或者】:|

练习
1、显示/proc/meminfo文件中以大小s开头的行(要求:使用两种方法)
cat /proc/meminfo | grep -i “^s”
cat /proc/meminfo | grep “<[Ss]”

2、显示/etc/passwd文件中不以/bin/bash结尾的行
cat /etc/passwd | grep -v “bin/bash”$

3、显示用户rpc默认的shell程序
getent passwd rpc

4、找出/etc/passwd中的两位或三位数
cat /etc/passwd|grep -o “<[0-9]{2,3}>”

5、显示CentOS7的/etc/grub2.cfg文件中,至少以一个空白字符开头的且后面有非空白字符的行
cat /etc/grub2.cfg|grep “3”"{1,}"[^[space]]

6、找出“netstat-tan”命令结果中以LISTEN后跟任意多个空白字符结尾的行
netstat -tan|grep “LISTEN”[:space:]">"

7、显示CentOS7上所有系统用户的用户名和UID
getent passwd

8、添加用户bash、testbash、basher、sh、nologin(其shell为/sbin/nologin),找出/etc/passwd用户名和shell同名的行
useradd basher -s /sbin/nologin;
useradd bash -s /sbin/nologin;
useradd basher -s /sbin/nologin;
useradd sh -s /sbin/nologin;
useradd nologin -s /sbin/nologin;
getent passwd|grep ^“shell”

9、利用df和grep,取出磁盘各分区利用率,并从大到小排序
df|grep sda|tr -s " " %|cut -d% -f5|sort -nr

正则表达式
1, QQ号 grep [1-9]"[0-9]{4,10}"
2,身份证号 grep -i [1-8][0-9X]"{16}"$
3,手机号 grep 1"[0-9]{10}"
4,邮箱
grep [[:alnum:]]"{1,}"@[[:alnum:]]"{1,}".[[:alnum:]]"{1,}"

----------------------------------------------------------------------I
第七节课 2018年10月8日09:08:34
----------------------------------------------------------------------I
(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]) egrep ip地址过滤
【扩展正则表达式】

练习
1、显示三个用户root、mage、wang的UID和默认shell
getent passwd|egrep mage"|"root"|"^wang|cut -d: -f1,3,7

2、找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟 一个小括号的行
cat /etc/rc.d/init.d/functions|egrep ^"[[:alnum:]_]".*"[()]"

3、使用egrep取出/etc/rc.d/init.d/functions中其基名
echo “etc/re.d/init.d/functions”|grep -Eo “[^/]+$”

4、使用egrep取出上面路径的目录名
echo “/etc/re.d/init.d/functions”|egrep -o “.*/”

5、统计last命令中以root登录的每个主机IP地址登录次数
last|grep pts|grep root|tr -s " “|cut -d” " -f3|sort|uniq -c

6、利用扩展正则表达式分别表示0-9、10-99、100-199、200-249、250-255
echo {1…300} | egrep -o “\b[0-9]\b”
echo {1…300} | egrep -o “\b[0-9]{2}\b”
echo {1…300} | egrep -o “\b1[0-9]{2}\b”
echo {1…300} | egrep -o “\b2[0-4][0-9]\b”
echo {1…300} | egrep -o “\b25[0-5]\b”

7、显示ifconfig命令结果中所有IPv4地址
ifconfig|egrep -o “(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])”

ifconfig|egrep -o “([0-9]{1,3}.){3}[0-9]{1,3}”

8、将此字符串:welcome to magedulinux中的每个字符去重并排序,重复次数多的排到前面
echo welcome to magedulinux|grep -o [[:alpha:]]|sort|uniq -c|sort -r

【–vim 文本编辑器_增强版】
+# 打开文件跳到第几行行首
+/# 跳到到第一个匹配#的行
- d file1 file2… 比较多个文件
- m file 只读打开文件
ex file或vim -e 直接进入ex扩展模式

I 行首输入  A 行位输入
o 光标下方插入新行  O光标上方插入新行

【使用多个“窗口”】
vim -o|-O FILE1 FILE2 …
-o: 水平分割
-O: 垂直分割
–在窗口间切换:Ctrl+w, Arrow

–单文件窗口分割:
Ctrl+w,s: split, 水平分割
Ctrl+w,v: vertical, 垂直分割
ctrl+w,q:取消相邻窗口
ctrl+w,o:取消全部窗口
:wqall退出

【命令模式】

–命令模式:ZZ保存退出 ZQ不保存退出

r file 读文件内容到当前文本
w file 当前内容写入到外部file
!cmd  执行命令
r!cmd 读入命令的输出
w下一个单词  e 当前/下一单词词尾    b 上一个单词词首

–行首行尾跳转:
^: 跳转至行首的第一个非空白字符
0: 跳转至行首
$: 跳转至行尾

–行间移动:
#G、扩展命令模式下:# 跳转至由#指定行
gg: 第一行
G:最后一行

–句间移动:(.点儿结尾,算一句话)
):下一句(:上一句
?段落间移动:(空行隔开的,算段落)
}:下一段{:上一段

–字符编辑
x:删除光标处的字符
#x:删除光标处的#个字符
xp:剪切,粘贴(相当于位置交换)
~:转换大小写
J:删除当前行后的换行符
–替换命令(r, replace)
r: 替换光标所在处的字符
R:切换成REPLACE模式
0Gu 行 首 到 行 尾 变 成 大 写 0 g u 行首到行尾 变成大写 0gu 0gu行首到行尾 变成小写

–删除命令(delete 也是剪切)
dKaTeX parse error: Expected 'EOF', got '#' at position 46: … dd: 删除光标所在的行 #̲dd:多行删除 D:光标处删…
0dgg:当前行首删除上面所有
0dG: 当前行首删除下面所有
di:删除“ ”之间内容
dix:从当前删除字符直到第一个x

–复制命令(y, yank):
y$:复制到行尾
y0:复制到行首
y^:复制非空行
yw:复制单词
yy:复制行
#yy: 复制多行
Y: 复制整行
yi:复制()之间的内容
ytx:从当前复制字符知道第一个x
vi 选中[]之间的内容

–粘贴命令 (p, paste):
p 复制到字符/行 后
P 复制到字符/行 前

–改变命令(c, change)【修改后切换到插入模式】
c$:当前位置删除到行尾
c^:当前位置删除到非空行首
c0:当前位置删除到行首
cb:当前位置往后删除单词
ce:当前位置往前删除单词
cc:删除当前行
C:当前光标删除到行尾

–撤销/重复 u/.
u:撤销前一次更改 . :重复前一个操作
U:撤销此行所有更改

–寄存器(可跨文本)
3"nyy 复制三行
np 粘贴3行
[a-z]:一共26个及寄存器和一个无名寄存器(默认复制)
数字寄存器:保存之前变更的内容[0-9]

–标记和宏
m[a-z]:把当前位置标记为[a-z]–最多26个标记
'[a-z]:转到标记所在的位置
q[a-z]:录制宏 q:停止录制宏
@[a-z]: 启用宏
@@:重复执行上次的宏

练习
1、复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的行首的空白字符
cp /etc/profile /tmp/
vim profile
%s@4{1,}@@g

2、复制/etc/rc.d/init.d/functions文件至/tmp目录,用查找替换命令为/tmp/functions的每行开头为空白字符的行的行首添加一个#号
cp /etc/rc.d/init.d/functions /tmp
vim /tmp/functions
%s@/tmp/functions@#&@g

第八节课 2018年10月10日09:05

SHEll 编程脚本基础
scp $1 wang@172.20.102.77:/home/wang/bin 复制$1到远程ip的wang/bin目录
字体颜色 31-37 背景颜色 41-47

【变量引用】 临时存放在内存中,注销失效
(1) 可以是直接字串; name=“root"
(2) 变量引用:name=" U S E R &quot; ( 3 ) 命 令 引 用 : n a m e = ‘ c m d ‘ n a m e = USER&quot; (3) 命令引用:name=`cmd` name= USER"(3)name=cmdname=(cmd) ——外面可加双引号
显示已定义的所有变量:set
删除变量:unset name
例:
cmd=hostname
$hostname:命令引用

【脚本调试】
检测脚本中的语法错误
bash -n /path/to/some_script
调试执行
bash -x /path/to/some_script
【练习】
练习
1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小
#!/bin/bash
#FileName:lh.sh
#2018年10月8日19:31:59
#--------------------
RED="\e[1;31m"
COLOREND="\e[0m"

echo -e “OS version is R E D ‘ c a t / e t c / c e n t o s − r e l e a s e ‘ RED`cat /etc/centos-release` REDcat/etc/centosreleaseCOLOREND”
echo -e “Kernel version R E D ‘ u n a m e − r ‘ RED`uname -r` REDunamerCOCOREND”
echo -e “The cpu type is R E D ‘ l s c p u ∣ g r e p − i o I . ∗ z RED`lscpu|grep -io I.*z REDlscpugrepioI.z$COLOREND" echo -e "the memory is $REDfree -h|grep Mem|tr -s " “|cut -d” " -f2$COLOREND" echo -e "The number of disk id $REDdf|grep /dev/sda|tr -s " " “:”|cut -d: -f5|sort -nr|head -n1$COLOREND" echo -e "The hostname is $REDhostname$COLOREND" echo -e "The ipaddr is $REDifconfig|grep -Eoe “(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])”|head -n1`$COLOREND”

2、编写脚本/root/bin/backup.sh,可实现每日将/etc/目录备份到/root/etcYYYY-mm-dd中
vim /root/bin/backup.sh
echo “backup is begin…”
today=date +%F
cp -av /etc/ /data/root /etc$today
unset today
echo “Backup is finished”

3、编写脚本/root/bin/disk.sh,显示当前硬盘分区中空间利用率最大的值
df|grep sda|tr -s " " %|cut -d% -f5|sort -nr|head -1$

4、编写脚本/root/bin/links.sh,显示接本主机的每个远程主机的IPv4地址和连接数,并按连接数从大到小排序
netstat -nt|grep ESTAB|tr -s " " :|cut -d: -f6|sort|uniq -c|sort -nr

pstree -p:(显示进程树)父子进程查看
echo $$查看子进程 (echo @BASHPID)
echo $ppid:当前进程的父进程

etc/profile.d 全局修改
readonly:常量查看 readonly file:常量设置
declare -r 同上
declare -x 环境变量
declare -p 显示 常量(只读)

echo “start sending …”
sleeep 1
scp $* wang@192.168.34.7:/data/bin
echo “send finished”
上传编写脚本

ping 192.168.34.1 -c1 -w1 (c 次数 w秒)
echo $RANDOM 数值的范围是32767 (15个1的二进制)

只读变量 readonly variable (不能删改)
readonly name=**:设置只读变量(退出失效)
redonly -p 查看只读变量

位置变量
$1, $2, …:对应第1、第2个参数,shift [n]换位置
$0: 命令本身(可配合basename
$*: 全部参数合为一个字符串
$@: 每个参数为独立字符串
(双引号包起来的时候才会有差异)
set --:清空所有位置变量

echo $? 判断前面命令是否成功
【练习】

ipconfig +网卡名称 = IP地址
ifconfig $1|grep inet|tr -s " “|cut -d” " -f3|head -1

【算术运算】
= - * / %取余 **乘方
实现算数运算:let n=1+2 显示结果:echo $n

也可以用$(()) $[] 进行运算,然后echo $*显cat示

–expr
ecpr 1 + 2 或者 expr 2 * 3 可直接输出结果

–declare -i
声明一个变量是整数 用法:declare -i n=3+4

–var(支持&& !!)
var ( ) v a r () var ()var{}

【练习】
1、编写脚本/root/bin/sumid.sh,计算/etc/passwd文件中的第10个用户和第20用户的ID之和
vim sumid.sh
cat /etc/passwd -b|grep “\s"10’|’”\s"20|cut -d: -f3|tr “\n” +|cut -d+ -f1,2|bc

2、编写脚本/root/bin/sumspace.sh,传递两个文件路径作为参数给脚本,计算这两个文件中所有空白行之和
echo “calculated…”$
sleep 3$
cat $1 KaTeX parse error: Expected group after '^' at position 12: 2|grep -n "^̲"|wc -l$

3、编写脚本/root/bin/sumfile.sh,统计/etc, /var, /usr目录中共有多少个一级子目录和文件
echo “reding…”
sleep 1$
etc= ( l s − l / e t c ∣ w c − l ) v a r = (ls -l /etc|wc -l) var= (lsl/etcwcl)var=(ls -l /var|wc -l)
usr= ( l s − l / u s r ∣ w c − l ) e c h o &quot; e t c = (ls -l /usr|wc -l) echo &quot;etc= (lsl/usrwcl)echo"etc=etc var= v a r u r e = var ure= varure=usr"
echo “OK!!”

–赋值
自增,自减:
let var+=1 let var++
let var-=1 let var–
例:var=5 let var+=1 echo $var var=6
let var++(原数值+1) let var++(原数值-1)

【与&】 :并且
1与1:1 1与0:0 0与0:0 0与1:0
(和0与 结果都是0!!)
例:echo $[12&24]

【或|】
只要有1个是1,结果就是1
例:echo $[12|25]

【非!】
取反: !1=0 !0=1

【异或】 (同性相斥0,异性相吸1)
^异或:相同为假0,不同为真1
例 1^0 为1 2^1为1 0^0 为0

【同或】 :相同为真1,不同为假0

–短路与:&&
如果cmd1为真,则执行cmd2
如果cmd1为假,则不执行cmd2
cmd1为真 短路与 cmd2 取值决定于cmd2的值

–短路或:||
如果cmd1为真,则不执行cmd2
如果cmd1为假,则执行cmd2

–条件测试:[空值最好用 " 引起来] 变量加[]
test[=] test [[=]] [ = ] (用【】显示前后要加空格)
[ “” ] :不空为真,空为假;可用来判断变量是否存在
[ $变量 ]:有内容是真0,无则是假的1
-z 如果字符串为空就是真(默认有内容是真)
-n 如果字符串不空就是真

判断里面的逻辑表达,是真还是假,真0 假1 ;
也可做字符串匹配,相等为真0 不成立为假1

【用法】
[ $path ] 有内容是真0
[ -z “path” ] 不空为真0
[ k"path"=k ]判断变量是否为空,空则等式成立,为真0

path=/data/test/
unset path 取消变量

-eq 等于 - ne 不等
-lt 小与 - le 小与等于
-gt 大于 - ge 大于等于
!= 是否不等于

(cd /etc/teset;rm -rf *)执行命令当前目录不变;

=~ 右边为正则表达式 (正则表达式不要加双引号)

配置文件

花括号{}是在一个进程里面,小括号[]/()会开启子进程

–判断文件
[ -x lh.txt ] 判断lh.txt是否有执行权限
-r 判断是否可读
-w 判断是否可写
-d 判断是否文件夹
-f 判断是否为文件
-z 判断是否为空
-e 判断是否存在 同/-a
-suid 是否有suid权限
-g 是否有sgid -k 是否有sticky位

大小测试 -s 判断是否存在且非空
是否打开 -t 判断是否终端已经打开
-N 上次读取后是否被修改
-O 当前用户是否为属主
-G 当前用户是否为属组
1 -ot 2 :1是否旧与2

[file -a ] [file -o ] [file -z ]
-a 并且 -o 或者 -z 是否为空
[[]]:只在通配符和正则表达式中使用

练习:判断lh.txt是否为.sh后缀,如果是,就加执行权限。
vim excute.sh;[[ KaTeX parse error: Can't use function '\.' in math mode at position 10: lh.txt =~\̲.̲sh ]] $$ chome +x $file
【练习】
1、编写脚本/root/bin/argsnum.sh,接受一个文件路径作为参数;如果参数个数小于1,则提示用户“至少应该给一个参数”,并立即退出;如果参数个数不小于1,则显示第一个参数所指向的文件中的空白行数
vim argnum.sh
[ $1 -lt=1 ]&&echo “At least one parameter should be given”&&exit||
cat 1 ∣ g r e p &quot; [ [ : s p a c e : ] ] 1|grep &quot;^[[:space:]] 1grep"[[:space:]]"|wc -l

2、编写脚本/root/bin/hostping.sh,接受一个主机的IPv4地址做为参数,测试是否可连通。如果能ping通,则提示用户“该IP地址可访问”;如果不可ping通,则提示用户“该IP地址不可访问”
vim hostping.sh
ping $1 -c3 -w3 &>/dev/null&&echo ‘IP addr is up’||echo ‘IP addr is down’

3、编写脚本/root/bin/checkdisk.sh,检查磁盘分区空间和inode使用率,如果超过80%,就发广播警告空间将满
vim checkdisk.sh
inode=df -i|grep sda|tr -s " " %|cut -d% -f5|sort -nr|head -1
space=df|grep sda|tr -s " " %|cut -d% -f5|sort -nr|head -1
[ $space -gt 80 -o $inode -gt 80 ]&&wall ‘Disk space will be full’

【练习】
1、编写脚本per.sh,判断当前用户对指定参数文件,是否不可读并且不可写
vim test.sh
read -p "请输入文件: " file
[ ! -r $file -a ! -w $file ] && echo “Unreadable and unwritable”||echo “ke du ke xie”
chomod +x test.sh

2、编写脚本excute.sh,判断参数文件是否为sh后缀的普通文件,如果是,添加所有人可执行权限,否则提示用户非脚本文件
read -p "Please input a filename: " file
[[ f i l e =   . ∗ s h file =~ .*sh file= .sh ]]&&chmod +x $file||
echo “Non-script file”

3、编写脚本nologin.sh和login.sh,实现禁止和允许普通用户登录系统
(touch /etc/nologin 可实现普通用户无法登录)
vim nologin.sh
touch /etc/nologin

vim login.sh
rm -f /etc/nologin

$-变量 hash i:交互 m B{ } h history
set +“himBh” 赋予 set -“himBh”
echo -n 不换行显示 echo -e 显示特殊字符
read -p 不换行显示

【read】读入内容给指定变量中
例:read "please input name:lh"name
(定义变量为lh)
$name 等于lh

-p 制定要显示的提示
-s 静默输入
-n 制定字符长度
-t ** 超时退出(秒)

对多个变量赋值: read a b c <<“xxx yyy zzz”

【鸡兔同笼】
输入头数:35 输入脚的个数:94
几只鸡:x 几只兔:y
x+y=头数 35
2x+4y=脚个数 94

(脚个数)94/2=**-35(头数)=12x兔子
35(头数)-12(x兔)=(y鸡)

【bash配置文件总结】
–全局配置
/etc/profile 1
/etc/profile.d/.sh 2 半1
/etc/bashrc 5
–个人配置
~/.bash_profile 3 半3
~/.bashrc 4 半2
完全切换:执行顺序 1 2 5 3 4
半切换:执行顺序 /etc/profile.d/
.sh–/.bashrc–/.bash_profile

【profile类】
通常用户:环境变量;运行命令和脚本
添加PATH路径:PATH=/data/bin:$PATH

【bash退出任务】
~/.bash_logout 退出shell的时候运行
用途:自动备份,清除临时文件

【$-】echo $- 系统默认变量
himBH h:hash i:交互式 m:监控模式
B:大括号扩展{ } H:命令历史
set +h 去掉 -h增加

【】练习】
1、让所有用户的PATH环境变量的值多出一个路径,例如:/usr/local/apache/bin
echo “PATH=$PATH:/usr/local/apache/bin”>>/etc/profile.d/path.sh

2、用户root登录时,将命令指示符变成红色,并自动启用如下别名:
rm=‘rm–i’
cdnet=‘cd /etc/sysconfig/network-scripts/’
editnet=‘vim /etc/sysconfig/network-scripts/ifcfg-eth0’
editnet=‘vim /etc/sysconfig/network-scripts/ifcfg-eno16777736 或ifcfg-ens33 ’ (如果系统是CentOS7)

cat >> ~/.bashrc <<EOF
alias rm=‘rm -i’
alias editnet=‘vim /etc/sysconfig/network-scripts/ifcfg-eth0’
alias editnet= ‘vim /etc/sysconfig/network-scrpts/if-ens33’
PS1="\e[1;31m[\u@\h \W]$\e[0m"

3、任意用户登录系统时,显示红色字体的警示提醒信息“Hi,dangerous!”
echo -e “\e[1;31m Hi,dangerous! \e[0m” >>/etc/motd

4、编写生成脚本基本格式的脚本,包括作者,联系方式,版本,时间,描述等

5、编写用户的环境初始化脚本reset.sh,包括别名,登录提示符,vim的设置,环境变量等


【文件查找和压缩】 (需要r和x的权限)

基于数据库搜索,系统建立的关联索引,新文件不会立即放入locate数据库
路径:/var/lib/mlocate/mlocate.db

–locate(定位)
路径:加双引号搜索全路径,不加可能只搜索当前目录
【updatadb:可更新于locate数据库】
特点:搜索比较快,依赖于数据库,搜索有擅长文件比较稳定的,不经常更改的文件,不影响服务器性能,搜索有局限性。
-i 忽略大小写
-n 只列举前N个匹配项
-r 正则表达式

【–find 查找(功能强大,对整个磁盘搜索)默认递归搜索】
特点: 精确查找,实时查找,速度略慢,消耗服务器性能。
查找路径:默认只搜当前目录
语法: find [OPTION]… [查找路径] [查找条件] [处理动作]
默认是并且的关系(选项里)

–常用命令
-maxdepth N 指定最大深度目录(1目录本身,2下级子目录…)
-mindepth N 指定最小深度目录
-depth:可先搜文件,后目录
-name 文件名/目录名
-inum 68:找节点编号68的文件
-ls 详细属性
-samefile f1 相同节点编号的文件(硬链接)
-link n :连接数为n的文件
-regex :所搜整个文件路径,而非文件全名

–根据属主、属组查找:
-user USERNAME:指定用户的文件
-group GRPNAME: 指定所属组的文件
-uid UserID:查找属主为指定的UID号的文件
-gid GroupID:查找属组为指定的GID号的文件
-nouser:查找没有属主的文件
-nogroup:查找没有属组的文件

–type(根据文件类型查找)
-f普通文件 -d目录 -l链接文件 -b块设备文件 -c字符设备 -p管道

-empty 搜索空文件(大小为0)
-prune 剪切

–组合条件 (与/且 -a 或 -o 非/取反 -not;!)
!A -a !B=!(A -o B)
!A -o !B=!(A -a B)
【示例】
查找/etc/下,除/etc/sane.d目录的其它所有.conf后缀的文件
find /etc/sane.d -prune “/etc/sane.d” -a –prune -o -name “*.conf”

查找/etc/下,除/etc/sane.d和/etc/fonts两个目录的所有.conf后缀的文件
find /etc ( -path “/etc/sane.d” -o -path “/etc/fonts” ) -a -prune -o -name “*.conf”

– size 根据文件大小来查找 k,M,G,c
/dir -size 10M (9-10M)
/dir -size -10M (0-9M)
/dir -size +10M (10M以上)
/dir -size +5M -size -10M (5-9M)

– 根据时间戳
-atime -mtime -ctime(天)
#: [#,#+1)
+#: [#+1,∞]
-#: [0,#)
-amin -mmin -cmin (分钟)
/file -mmin 最近一分钟内的文件

– perm 精确匹配
find -perm 644 精确查看644权限
/644 -ls 只要有一个满足u6/g4/o4 的就生效,如700/004
(或的关系)== +644 效果一样(7以前的版本 )
-664 -ls 必须满足644或以上才生效
(与的关系)必须的意思

– 处理动作
-print:默认显示至屏幕
-ls:类似于对查找到的文件执行“ls -l”命令
-delete:删除查找到的文件
-fls file:查找到的所有文件的长格式信息保存至指定文件中
(等价于 -ls >重定向)

-ok cmd {} /files \;  
对查找到的每个文件执行由cmd指定的命令,      
对于每个文件执行命令之前,都会询问
-exec cmd {} /files \; 
【{}代表前面搜索的文件名】

–xargs 参数替换
echo f{1…324}| xargs touch 创建f{324},不至于参数过多
把echo命令传给touch作为它的参数

实例:ls f*|xargs rm
	find /bin -perm 7000 | ls -l

练习
1、查找/var目录下属主为root,且属组为mail的所有文件
find /var -name root -group mail

2、查找/var目录下不属于root、lp、gdm的所有文件
find /var -type f ! ( -user root -o -user lp -o -user gdm )

3、查找/var目录下最近一周内其内容修改过,同时属主不为root,也不是postfix的文件
find /var -mtime -7 ! -user root ! -name “postfix”

4、查找当前系统上没有属主或属组,且最近一个周内曾被访问过的文件
find / ! ( -nouser -nogroup ) -atime -7

5、查找/etc目录下大于1M且类型为普通文件的所有文件
find /etc -size +1M -type f

6、查找/etc目录下所有用户都没有写权限的文件
find /etc ! -perm 222

7、查找/etc目录下至少有一类用户没有执行权限的文件
find /etc ! -perm /111

8、查找/etc/init.d目录下,所有用户都有执行权限,且其它用户有写权限的文件
find /etc/init.d -perm -112

---------------------------------------------------------------- ----I
第九节课 2018年10月12日09:00
---------------------------------------------------------------------I
【压缩、解压缩、归档工具】
–file-roller 图形化界面的压缩工具
file-roller file:解包

–compress file 压缩 (压缩完,源文件删除).Z后缀 (gz压缩比比z高)
uncompres :解压缩 (压缩完,源文件删除)
-d 解压缩 (必须是相关的,Z后缀)
-c 屏幕打印标准输出(可重定向备份)
-v 详情
例 compress -c file > file1(压缩并保存源文件)
zcat file > file1 (保存解压文件)

–gzip 解压缩 .gz 后缀 --gunzip:解压缩
-# 1-9 压缩比 例:gzip -9 file 默认6
-d 解压缩
-c 屏幕打印标准输出(可重定向备份)
> t.gz :把输入的内容输入到t.gz
zcat :预览压缩文件
zcat m.gz > m1 预览m.gz并且解压到m1

(不能保留文件属性)
(解压缩 zcai 支持 .gz .Z)

man bash > bash.txt

–bzip2 解压缩 压缩比更高 .bz2后缀 --bunzip2 解压缩
-k 压缩后保留源文件
-d 解压缩
-# 压缩比 默认6
bzcat:预览压缩文件
例: bzcat f.gz >f1 预览压缩包并且解压到f1

–xz 解压缩(压缩比例最高).xz后缀 --unxz 解压缩
-k 压缩后保留源文件
-d 解压缩
-# 压缩比 默认6
xzcat:预览压缩文件
-----------------------------------(以上都是压缩单个文件)---------
压缩比例:zip<gzip<bzip2<xz

–zip/unzip 压缩/解压 .zip (可对文件夹进行打包)
zip b a :a文件压缩成b.zip (保留源文件)
-r b ./a/ :把a目录打包压缩到b.zip
-p 保留属性
例:
cat /var/log/messages | zip messages -
压缩/messages到messages.zip

【tar】 主流打包工具
-cpvf:创建归档 c创建 p权限 v过程 f文件名
-cpvf etc.tar etc 创建归档(etc打包成etc.tar)

-r -f file.tar  m  追加文件
-t -f 预览文件	
-x -f 解包/展开归档
-C 指定目录(例 tar -xf etc.tavr -C /data 解压到/dadta目录)
-j 打包带压缩  z:gz格式  j:bz2格式  J:xz格式
         (例: tar zcvf 1.gz /data) 
   【z:gzip j:bzip2 J:xz】  打包后缀必须:. gz/.bz2/.xz
--exclude=file 排除 
(例: tar zcvf /a.gz --exclude=dir/c1 /b 打包b到a,并排除c )
-T 需要打包的文件  -x 不打包的文件
(文件里面指定可打包/不打包的文件列表)

【split】 分割一个tar大文件为多个小文件
-b 一个块的大小 G M K
-d 表示数字后缀的方式来显示切割块
split -b 1M -d file.tgz backup-parts 分割
cat file** > file.tar.xz 合并,且压缩

【cpio】打包、解包、预览 --不常用
解包文件: .cpio .tar .gz
-o 打包 -i 解包(.gz .tar) <默认输入方式解包
-d 生成目录 -v 过程 -A 追加 -O 指定文件名
-f 指定备份文件夹 -x 从备份文件中还源文件


【SED】stream editor 批量行编辑器 可读键盘输入
–常规选项
w 写入文件保存
‘p’ 重复显示
‘’ file 默认显示
-n 关闭自动打印到屏幕
-p 只显示被替换过的行
-e 多点编辑
-r 正则表达式 |可以直接用,不用|转换
-i.bak 编辑并备份原文件 -i 直接修改文件

–地址定界 \定界
1)不给地址:默认全文处理
2)单地址:#指定的行 $最后一行 /patt/匹配指定单词
3)地址范围:#,# #,+# /part1/,/part2/ #,/part/
4)~:步进 1~2 奇数行’1~2’
2~2 偶数行’2-2’

–编辑命令:
d 删除
a 行下追加
i 行上追加
c 替换
w 内容保存到指定文件
r 读入内容到指定位置下(变相实现追加)
= 行号
! 取反

s///  查找替换
p  显示替换成功的行
g  全局替换


nl 显示行号(空行不加)

【练习】:
@@@修改/etc/selinux/config文件;selinux=disabled策略
sed /^SELINUX=/cSELINUX=disabled /etc/selinux/config

@@@用sed取IP地址
ifconfig ens33|sed -nr ‘2s/.t (.) net.*/\1/p’

cat /etc/httpd/conf/httpd.conf最后几行去掉#字符(centos6)
sed -nr ‘/^#<VirtualHost /,/#</VirtualHost>$/s/#//p’ /etc/httpd/conf/httpd.conf

@@@echo /etc/sysconfig/network-scripts/取基名
echo /etc/sysconfig/network-scripts|sed -nr ‘s@./(.)/?$@\1@p’

@@@cat /etc/default/grub;最长行添加ifnames=0 xyz"
cat /etc/default/grub|sed -nr ‘/LINUX./s/(.)"/\1 xyz"/p’

@@@当系统是7版本才执行修改/etc/default/grub
version=cat /etc/centos-release|grep -o [[:digit:]]|head -1
版本号变量
[ $version =eq 7 ]
|| exit 1
&& sed -ir '/LINUX.*/s/(.*)"/\1 net.ifnames=0"/p' /etc/default/grub

【sed命令里面包含变量引用==特殊用法】
str=666
sed -nr ‘/.CMDLINE_LINUX./s#(.*)#\1 ‘’’$str’’’#p’ /etc/default/grub

nl:显示行号 (空行不加)

练习
1、删除centos7系统/etc/grub2.cfg文件中所有以空白开头的行行首的空白字符
sed -nr ‘s/($)+//’ /etc/grub2.cfg

2、删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符
sed -nr ‘s/^#\s+.*//’ /etc/fstab

3、在centos6系统/root/install.log每一行行首增加#号
sed -inr ‘s/.*/#&/p’ /root/install.log

4、在/etc/fstab文件中不以#开头的行的行首增加#号
sed -inr ‘s/[#]/#&/p’ /etc/fstab

5、处理/etc/fstab路径,使用sed命令取出其目录名和基名
echo /etc/fsab|sed -nr ‘s@/(.)/(.)@\1@p’ 目录名
echo /etc/fsab|sed -nr ‘s@/(.)/(.)@\2@p’ 基名

6、利用sed取出ifconfig命令中本机的IPv4地址
ifconfig |sed -nr ‘s/.inet (.) netmask.*/\1/p’

7、统计centos安装光盘中Package目录下的所有rpm文件的以.分隔倒数第二个字段的重复次数
ls(当前目录)/run/|rev|cut -d. -f2|rev|sort|uniq -c

8、统计/etc/init.d/functions文件中每个单词的出现次数,并排序(用grep和sed两种方法分别实现)
cat /etc/init.d/functions|egrep -o “<[[:alpha:]]+>”|sort|uniq -c|sort -nr 390
cat /etc/init.d/functions|egrep -o “<[[:alpha:]]+>”|sort|uniq -c|sort -nr 423

9、将文本文件的n和n+1行合并为一行,n为奇数行
seq 10|sed ‘N;s/\n//’

---------------------------------------------------------------------I
第十节课 2018年10月15日10:35
---------------------------------------------------------------------I
【软件包管理】 进入引导文件:实体 F2 delete /// 虚拟机按 esc
–软件运行和编译
ABI:应用程序二进制接口
win PE格式 linux ELF格式
API:应用程序编译接口

    库级别的虚拟化:
Linux: WINE
Windows: Cygwin

程序源代码–预处理–编译–汇编–链接

开发分类:应用–库--OS–硬件
–静态/动态链接
静态链接
把程序对应的依赖库复制一份到包
libxxx.a
嵌入程序包
升级难,需重新编译
占用较多空间,迁移容易
动态链接 (目录:/lib /lib64)
只把依赖加做一个动态链接
libxxx.so
连接指向
占用较少空间,升级方便

(使用链接调用库生成最终文件,能节约空间,优化系统资源)
ldd /bin/cat : 查看动态调用了那些库
.so 动态编译  .a  静态编译  

–系统级开发 C C++ 硬件 OS 底层
–应用级开发 java python go php网站开发 perl

程序包管理器:
debian:deb文件, dpkg包管理器
redhat:rpm文件, rpm包管理器
rpm:RedhatPackage Manager
RPM Package Manager

rpm包命名方式:
常见的arch:
x86: i386, i486, i586, i686
x86_64: x64, x86_64, amd64
powerpc: ppc
跟平台无关:noarch

rpm包命名:
name-version-n.release.arch架构.rpm
(version-编译打包的次数/基于linux版本进行编译-release)
(中间字段redhat后期添加)

库文件:
ldd /file 查看二进制程序所依赖的库文件

管理及查看本机装载的库文件
ldconfig  记载配置文件中指定的库文件
/sbin/ldconfig -p  显示本机已缓存的所有可用库及路径

管理及查看本机装载的库文件
ldconfig 加载库文件(个别包带脚本)
/sbin/ldconfig-p:
显示本机已经缓存的所有可用库文件名及文件路径映射关系
配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
缓存文件:/etc/ld.so.cache

数据库(公共) /var/lib/rpm 记录当时 安装包信息以及管理数据
程序包名称及版本
依赖关系
功能说明
包安装后生成的各文件路径及校验码信息

管理程序包的方式:
使用包管理器:rpm
使用前端工具:yum, dnf

获取程序包的途径:
(1) 系统发版的光盘或官方的服务器
CentOS镜像:
https://www.centos.org/download/
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirrors.163.com
(2) 项目官方站点

程序包来源:
(3) 第三方组织:
Fedora-EPEL:
Extra Packages for Enterprise Linux
Rpmforge:RHEL推荐,包很全
搜索引擎:
http://pkgs.org
http://rpmfind.net
http://rpm.pbone.net
https://sourceforge.net/
(4) 自己制作

【rpm 包管理】 安装、卸载、升级、查询、校验、数据库维护
rpm -i install 安装
-v verbose 显示详细过程 -vv 更详细
-h 以#显示程序包管理执行进度
例:rpm -ivh file
-q ** 查询安装成功 只输入包名称 -q scripts **
–scripts bash:查询包是否带脚本
-e ** 卸载软件包 只输入包名称

【rpm包 安装】
–test: 测试安装,但不真正执行安装,即dry run模式
–nodeps:忽略依赖关系
–replacepkgs| replacefiles只覆盖特定包 --force 相同效果
–nosignature: 不检查来源合法性 签名
–nodigest:不检查包完整性 不检查签名
–noscripts:不执行程序包脚本
%pre: 安装前脚本–nopre
%post: 安装后脚本–nopost
%preun: 卸载前脚本–nopreun
%postun: 卸载后脚本–nopostun

【rpm包升级】不建议用,建议直接安装
-U (upgrade) 安装有旧版程序包,则 “升级”
如果不存在旧版程序包,则“安装”
-F (freshen) 安装有旧版程序包,则 “升级”
如果不存在旧版程序包,则不执行升级操作
rpm -Uvh PACKAGE_FILE …
rpm -Fvh PACKAGE_FILE …
–oldpackage:降级
–force: 强制安装 (只能用于更新和升级)

例:
umount /misc/cd 卸载光盘
rpm -q kernel 查看内核版本
ll -d */     find -type d只查询当前目录
rpm  -qfl 查看为安装某个未安装程序的包信息

【rpm查询】
-q **:查看包名
-f **此文件来自于哪个rpm包
-a :查找所有包
(基于数据库查询 /var/lib/rpm)
-p rpmfile:针对尚未安装的程序包文件做查询操作 -q --whatprovides CAPABILITY:查询指定的能力由哪个包所提供
-q --whatrequires CAPABILITY:查询指定的能力被哪个包所依赖
rpm2cpio 包文件|cpio–itv预览包内文件
rpm2cpio 包文件|cpio–id “*.conf”释放包内文件

-c 查配置文件
-d 查文档
-i 查包说明信息
-l 文件列表  可配合|grep ** :模糊包名
--script 程序包自带的脚本
--provides: 列出指定程序包所提供的CAPABILITY
-R: 查询指定的程序包所依赖的CAPABILITY

rpm --import /misc/cd/RPM-GPG-KEY-Centos-7  导入秘钥
-K 查询秘钥

--root=/mnt/sysimage  指定/的位置

例:
/msic/cd df 可查看光盘和刷新
mount /dev/sro /mnt/cdrom 挂载光盘
rpm -ivh /mnt/cdrom/Pakages/Kernel-** --root=/mnt/sysimage/
指定某个目录为根,安装rpm到该路径下

which rpm ;rpm -qf /user/bin/rpm 查某个命令属于哪个rpm包
rpm2cpio:指定要转换的rpm包为cpio格式
(rpm2cpio …/libstdc+±4.3.0-8.i386.rpm | cpio -idv)

【包校验】
rpm {-V|–verify} [select-options] [verify-options]
S 文件大小
M 权限和文件类型
5 MD5
D 设备主次错配
L 路径/link
U 用户所有者
G 组所有组
T 修改时间
P 能力
Va 查询所有包
K 完整性和签名

【移动库以及修复】
mv /lib64/libc.so.6 /root/
按ESC进入引导程序 进入CM-ROM drive 光盘引导
troubleshooting 进入故障排除
Rescue a CentOS system 进入救援模式,
1)Continue 进入第一个选项
然后mv /dev/da2 找到所在文件移动恢复

【删除rpm,并且恢复】 /usr/bin/rpm
rm -f /usr/bin/rpm
rpm2cpio /run/media/root/CentOS\ 7\ x86_64/Packages/rpm-4.11.3-32.el7.x86_64.rpm | cpio -id user/bin/

ESC进入救援模式:
mkdir /mnt/cdrom
mount /dev/sr0 /mnt/cdrom

rpm -ivh /mnt/cdrom/Packages/rpm-4.0**.rpm --root=/mnt/sysimage/
ls -l /mnt/sysimage/bin/rpm 查看是否安装

–设置支持misc目录↓
systemctl enable autofs
systemctl start autofs

@ 表示已装好的包
anaconda:装系统时就已装好的包
/etc/yum.confg :yum主配置文件
yum repolist 仓库列表

【yum】解决包的依赖性
yum server
yum repodate 仓库
(rpm包)(meta元数据)repodata–存放元数据
yum client
*.repo 存放/etc/yum/repos.d/
(记录指定存放仓库服务器的路径)
(缓存meta元数据)(缺点:server更新包,只能删除再下载)

【安装yum client】
cd /etc/yum.repos.d/
mount /dev/sr0 /mnt/cdrom
vim base.repo
然后编辑vim:↓
[base]
name=cdrom
baseurl=file:///misc/cd/ 本地光盘文件夹路径
gpgcheck=0 (忽略秘钥检查)
gpgkey=file:///misc/cd/RPM-GPG-KEY-CentOS-7

【安装yum server】
yum install httpd 安装httpd-2.4.25服务
cd /var/www/html/
rpm -ql httpd|grep service
systemctl start httpd.service 开启http,启用http服务
systemctl statup stop firewalld 停止防火墙=disable
echo welcome to magedu ! > index.html 创建html文件可通过网页访问
mkdir -pv centos/{6,7}/os/x86_64/ 创建6和7的目录
monut /dev/sr0 /var/www/html/centos/7/os/x86_64/ 光盘挂载到centos/7
再加载另一个光驱 6.10 / 用scandisk 更新光驱
mount /dev/sr1 /var/www/html/centos/6/os/x86_64/ 挂载cento6到centos/6
再到centos6上复制$baseaurl路径,设置网络挂载enabled=0,禁用掉

cat /etc/yum.repos.d/bak/CentOS-Base.repo yum系统自带配置文件
rpm --import /run/media/root/CentOS\ 7\ x86_64/RPM-GPG-KEY-CentOS-7
导入证书秘钥
mirrorlist=(file)可以指定文本文件里面放http/ftp等多个路径

【设置别名】epel源
alias unepel=“ping www.baidu.com -c2 -w2 &>/dev/null||sed -i /enabled=1/cenabled=0 /etc/yum.repos.d/base.repo”

练习
1、查询命令java来自于哪个rpm包
rpm -q --whatprovides java

2、yum的配置和使用,包括yum仓库的创建

3、编写系统初始化脚本reset.sh,包括别名,提示符颜色,yum仓库配置文件,安装tree,ftp,lftp,telnet等包

4、在CentOS7上编译安装apache 2.4源码包,并启动此服务

yum history undo *:撤销历史步骤
um history redo 2:重新运行2步骤
dependencies:依赖关系

yum list autofs:查看autofs包是否安装
apm -q autofs:查看autofs包是否安装
yum repolist 查看仓库
yum deplist 查看依懒性
yum history 查看历史

yum clean all 清除现有缓存
info 2 查看第二个事件
undo 2 撤销第二个事件
redo 2 重做第二个事件

yum install 安装包
yum remove 卸载包-不含依赖包
yum groupinstall " "安装包组
yum groupremove 卸载包组
yum groupinfo 查看包信息
yum grouplist 查看包内容

yum --nogpgcheck 不检查key,直接安装
yum -q install samba -y 静默安装,不提示
yum -q remove Samba -y 静默卸载,不提示
yum clean all 清除缓存 yum makecache 构建缓存
yum-config-manager --disable “仓库名" 禁用仓库
yum-config-manager --enable “仓库名” 启用仓库
yum search 搜索rpm包
yum -nogpgcheck 不检查前面
createrepo /data/repodb 建立源meta数据 作为仓库路径
rebuild

【关闭防火墙】
centos7
systemctl disable firewalld 关闭防火墙
systemctl stop firewalld 立即马上关闭
systemctl status firewalld 查看防火墙状态
ss -tnl 查看端口
systemctl stop httpd停止httpd

yum remove libvirt-daemon 卸载多余网卡

centos6
chkconfig iptables off关闭防火墙
service iptables stop 立即停止

/etc/selinux/config 设置selinux=disable

---------------------------------------------------------------------I
第十一节课 2018年10月17日
---------------------------------------------------------------------I
【软件包编译】
C、C++:make项目管理器
cconfigure脚本—→makefile.in—→mmakefile

【httpd】源码编译安装 (所有操作要在安装目录下完成)
1)./configure (启用特性、安装路径、检查依赖性)
rz到data目录
tar xf httpd-2.4.25.tar.bz2 解包,还原文件
yum groupinstall “Development Tools” 安装编译包组
useradd -r -u 80 -d /data/www/ -s /sbin/nologin httpd 创建系统账号httpd
./configure --prefix=/app/httpd --sysconfdir=/etc/httpd24 --enable-ssl --disable-status 运行configure以及指定路径和功能
yum install apr-devel:补充安装依赖包
yum install apr-util-devel:补充安装依赖包
yum install openssl-devel:补充安装依赖包

2)make(根据Makefile文件,构建应用程序)
make 编译
3)make install (复制文件到相应路径)
make install 把编译完程序复制到安装目录下
echo ‘PATH=/app/httpd/bin:$PATH’ > /etc/profile.d/httpd.sh 定义别名

的 user/group daemon 改成 user/group httpd用户
ps aux 可查看该用户正在运行
vim /etc/man_db.conf centos7修改 vim /etc/man.config centos6修改
vim /etc/httpd24/httpd.conf 修改man帮助配置文件
/app/httpd/man 黏贴到man帮助


【cmatrix编译安装】
tar xf cmatrix-1.2a.tar.gz
./configure --prefix=/app/cmatrix
make && make install
yum install ncurses-devel

【磁盘存储和文件系统】

–硬盘术语
扇区:sectors 柱面:cylinders 磁道:track 磁头:heads
传统机械硬盘 3个盘片 每个盘片2个磁头
早期以柱面单位分区 8M,现在以扇面为单位分区512B,更精确(centos6以后)
服务器接口大多SAS

【早期硬盘容量计算】
柱面=扇区容量(512 )每磁道扇区数(63)(磁头 数)255=8M
硬盘总容量=柱面(8M)*每盘面磁道数(1024)=8G

磁道数和柱面数相同
每磁道扇区数:6bit 2^6=64 000000保留位 63
每盘面磁道数:10bit 2^10 1024
磁头数:8bit 2^8 255

机械硬盘HDD:价格、容量、使用寿命上占有绝对优势,硬盘破坏,数据无法修复。
固态硬盘SSD:防震抗摔、传输速率、功耗、重量、噪音有明显优势,硬盘损害无法修复,价格贵。

MBR最多4个主分区,单个分区不超过2T GPT 最多128主分区
fdisk -l /dev/sda 列出指定磁盘分区状况 (dos代表MBR分区)

【MBR分区结构】:
主分区:1-4
扩展分区:1 +主分区< =4
逻辑分区:n
MBR装GPT盘只能读数据,不能用来做引导盘

前面保留512byte:主引导程序446byte+主分区表DPT_64byte
每个分区:16byte 可以用来存放信息
16byte:每字节8位,一共128位__每分区
第前511,512字节的55 aa 表示经过分区

第一个byte:80 表示是活动分区 00表示非活动分区
(so,第447个byte表示第一个分区是否活动;80表示活动,00表示活动)
用hexdump 的查看第27行第15个字节是80/00_____1b0行 第15个byte
第二个byte:磁头数 20
第三个byte:扇区数 00000344
第四个byte:柱面数 44444444

【GPT】 支持128主分区,分区使用64位支持8Z/64Z数据
分区表自动备份在头和尾,不支持扩展分区
需要支持有UEFI启动程序才支持GPT分区,使操作系统启动,老版本是BIOS

【实验:分区表的备份和还原】第446到第512字节备份
/dev/sda
dd if=/dev/sda of=dpt bs=1 count=64 skip=446
导出/dev/sda 第446字节后64个字节到dpt
scp dpt root@192.168.34.128 /data 复制dpt文件到centos6
dd if=/dev/zero of=/d ev/sda bs=1 count=64 seek=446 清空分区表(危险)
重启进入救援模式
ifconfig ens33 192.168.34.3/24 指定IP地址
scp 192.168.34.128:/data/dpt /data 复制dpt到本地
dd if=dpt of=/dev/sda bs=1 count=64 seek=446 把文件替换到/dev/sda
sync 同步内存的信息到磁盘
退出查看!!

【管理分区】
列出块设备 lsblk
创建分区使用
fdisk 创建MBR分区
Gdisk 创建GPT分区
parted 高级分区操作
重新设置内存中的内核分区表版本 partprobe

cat /etc/fstab 查看UUID(全局唯一标识)
uuidgen随机生成UUID

【parted】分区工具→实时生效
parted 交互式 工具(管理分区,即时发生作用)
parted /dev/sdb mklabel msdos 创建MPR分区表
parted /dev/sdb mklabel gpt 创建GPT分区表
parted /dev/sdb mkpart primary 创建大小
parted /dev/sdb rm 1 删除
parted -l 列出分区信息
parted执行后立即生效

【fdisk】分区工具 →不推荐管理gpt
fdisk /dev/sdb
p 打印分区列表
n 选择主分区/扩展分区
1-4 选择分区编号 5以后 逻辑分区
分区大小 起始点 :2048-41***(可以默认)
结束点 :+1G (默认回车只分一个)
v 校验分区
u 转换单位
d 删除分区
w 存盘退出
q 不保存退出
t 更改分区类型

【同步分区表】
cat /proc/partition;ls /dev/sdb;lsblk 只能看到内存中的磁盘信息
disk -l /dev/sdb 能看到硬盘上实际的分区信息
partprobe /dev/* 刷新硬盘分区列表 centos7以后同步
partx -a /dev/* 新增分区 centos6
partx -d -nr --* /dev/sda 同步删除分区 centos6

uptime 开机时间

【文件系统】
把数据以文件方式进行组织
先写日志,后写数据
ll /lib/modules/uname -r/kerner/fs 查看支持的文件系统
XFS 支持限制 500TB
Ext4 支持限制 50TB 兼容Ext3、Ext2

【mkfs.ext*创建ext文件系统】进行格式化
mkfs.ext4 指定文件系统类型 (-t 功能类似)
-b 块大小 文件分配的最小单位 例:mkfd.ext4 -b 1024/dev/sda1
-m 5 保留5%比例空间
-h 查看超级块信息,不显示分组信息
-l 定义磁盘inode空间
-L 加卷标
-i 为数据空间中每多少个字节创建一个inode;不应该小于block大小
-N 指定iNode数量

–blkid:块设备属性信息查看
-U 指定UUID来查对应设备
-L 指定的卷标来查对应设备

–e2label:添加/查看卷标label
/dev/sda1 /boot 添加
/dev/sda1 查看

–findfs:查找分区 (类似blkid)
LABEL=
UUID= cat /etc/fstab

–tune2fs (设定ext系列文件参数的值) centos6
-l查看指定文件系统超级块信息;super block
-L 'LABEL‘修改卷标
-m #修预留给管理员的空间百分比
-j将ext2升级为ext3
-O文件系统属性启用或禁用bl,–O ^has_journal
-o 调整文件系统的默认挂载选项,–o ^acl
-U UUID修改UUID号
–dumpe2fs
块分组管理,32768块,系统默认备份超级块
超级块:存放元数据/文件属性
-h:查看超级块信息,不显示分组信息(不加h也可查看)

【文件系统检测和修复】
能修复文件系统,不确保恢复数据
fsck /dev/sdb1 能自动识别etx4/xfs
-p 自动修复
-r 交互式修复

e2fsck:ext系列文件专用的检测修复工具
	-y自动回答为yes
	-f强制修复

【mount挂载】

一个挂载点只能同时挂一个设备
一个设备可以同时挂多少目录
--mount挂载  --umount卸载

【新硬盘】:分区fdisk→创建文件系统mkfs.ext→挂载mount

【实验】:增加新硬盘,分区,创建文件系统 efs、ext4 挂载使用

【命令汇总】:
make & make install 编译安装
fdisk 管理mbr分区
gdisk 管理gbt分区
parted 磁盘分区
partx 同步硬盘分区 centos6
partprobe 同步硬盘分区 centos7
mkfs.ext 创建ext文件系统
blkid 文件类型
tune2fs 文件元数据
dumpe2fs 文件分组信息
e2label 卷标
findfs 搜索
fsck -y e2fsck 文件系统检测和修复
mount umount 挂载 卸载

---------------------------------------------------------------------I
第十一节课 2018年10月19日
---------------------------------------------------------------------I
【mount】 挂载 (设备文件、卷标、UUID)推荐指定UUID 临时生效
umount离开目录,才能卸载
-U (UUID)指定,挂载设备
-r 只读 -w 读写挂载(默认已添加)
-n 不更新/etc/mtab (隐藏挂载)
-a 自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有auto功能)
-L ‘LABEL’ 以卷标指定挂载设备
-U ‘UUID’ 以UUID指定要挂载的设备
-B --bind绑定目录到另一个目录上,目录挂目录
-a 查看挂载/etc/fstab中的所有文件系统

【mount -o】 常用选项(挂载文件系统的选项)
async 异步挂载 sync 同步挂载,内存更改时,同时写磁盘
atime/noatime 包含目录和文件时间(关闭可提高性能)
(↓↑只对设备挂载生效)
diratime/nadiratime 目录的访问时间戳
auto/noauto 是否在文件系统上运行应用程序
exec/noexec 是否在文件系统上使用设备文件
suid/nosuid 是否支持suid/sgid权限
remount 重新挂载,可修改文件系统特性 ▲
ro 只读 rw读写 ▲
user/nouser 是否允许普通用户挂载此设备,/etc/fstab使用
loop 是否允许文件挂载在目录上 centos7不用加该选项
defaults:相当于rw, suid, dev, exec, auto, nouser, async

mount -o remount,acl mnt/sdb1或tunne2fs -o acl /dev/sdb1 都可以加acl
(centos 7 acl默认就有)

vim /boot/grub/grub.conf →max_lop=100 centos6加loop重启生效 OS6
cat /etc/mtab 记录当前的设备挂载情况
cat /proc/mount 查看内核中已挂载的所有设备,隐藏也能看见
cat /proc/mtab 存放mount信息
losetup -a OS6 / losetup OS7 查看设备和文件对应关系

losetup /dev/loop10 /data/extrfile 关联设备到目录
mount /dev/loop10 /mnt/ext4 通过设备挂载
▲centso6挂载,需要加-o loop

【findmount卸载】
findmnt /boot 判断此目录是否是个挂载点
lsof /dir ;fuser -v /dir 查看目录是否在使用
fuser -km /mnt/sdb1 此目录所有进程,全部关闭
umount 卸载 设备/挂载点

【挂载点和/etc/fstab】 保存挂载信息
vim /etc/fstab 0 – dump备份命令 几天1次
0 – 在启动时是否以fsck检验分区 (0是不要检验,1是要检验 2也是要检验,不过1会比2早被检验。)

例:目录挂目录
/boot /mnt/boot none bind 0 0
文件挂目录
/data/ext4file /mnt/ext4 ext4 loop 0 0
光盘挂目录
/dev/sr0 /mnt/cdrom iso9660 defaults 0 0

【/etc/fstab文件错误修复】
1)进入救援模式
fsck -l /dev/sdb
2) mount -o remount ,rw / 把跟改成可读可写
vim /etc/fstab 把损害盘改成# 注释(7版本),或者把数字改成0 0

mem table 内存挂载信息

【swap】:模拟内存使用 当内存空间不够,临时存放数据(交换分区)
fdisk /dev/add;n ;p;默认;默认;+4G;t;82;w 分区
mkswap /dev/sdd1 创建swap系统
vim /etc/fstab 保存到fstab
swapon -a 刷新swap分区
swapon -s 查询 cat /proc/swaps也可以查询
▲调整优先级
vim /etc/fstab defaults改成 pri=1(值越大优先级越高)
swapoff 禁用 然后swapon -a 启用,就可以刷新,让参数生效

【以文件方式提供swap功能】
dd if=/dev/zero of=/swapfile bs=1M count=2048 创建2G文件
mkswaf /swafpfile 创建swap系统
vim /etc/fstab 保存参数 /swapfile swap swap defaults 0 0
swapon -a 刷新 swapon -s 查看
mv /swapfile /data/ 移动swap(vim /etc/fstab 修改路径)
▲删除swap分区
swapoff /data/swapfile 禁用
swapoff /data/swapfile /dev/sdd1 关闭↑以上两个swap分区
vim /etc/fstab 修改文件
rm -rf /data/swapfile / fdisk /dev/add1 d 删除以上分区和文件

实验:增加一块新硬盘,分区,创建文件系统,挂载
fdisk 分区 ; mkfs.ext4 创建系统 mount /dev/* /mnt/ 挂载

实验:/etc/fstab文件错误,无法启动,故障排错centos6,7
重启进入救援模式,vim /etc/fsta 修改成注释然后改后两位 0 0

实验:迁移/home目录到新分区中
fdisk /dev/sdd 10G 分区
mkfs.xfs /dev/sdd1 文件系统
mkdir /mnt/home 创建目录
▲mkfs -t xfs /dev/sdd1 格式化swap分区为xfs
mount /dev/sdd1 /mnt/home 挂载到目录
cp -a /home/. /mnt/home 复制/剪切 到/mnt/home
du -sh /mnt/home 查看内容
vim /etc/fstab 修改配置到文件生效
mount -a ;刷新 ls /home 查看
rm -rf /mnt/home/* umount /home ; fdisk d 最后卸载;删除

【光盘】
eject 弹出光驱 eject -t 弹入
cp /dev/sr0 /data/centos7.iso 创建ISO文件
mkisofs -r -o /data/etc.iso /etc 把/etc/打包到/root/etc.iso
wodim–v –eject centos.iso --刻录光盘

【USB】
dmesg | trep usb查看硬件信息
lsusb 查看usb是否识别 /var/log/messages 查看日志信息

文件字符输入会截断,设备输入不会

【常见工具】
–df 文件系统空间
-H 以1000/10^3为单位
-T 文件系统类型
-h 2^10为单位 -i 节点数 -P pssix兼容格式输出(自动对齐)

–du 目录总体空间占用状态
-h 读
-s 总容量

【工具dd】转换和复制文件__标准输出到屏幕
of=file 输出
if=file 读取
bs=size 块大小
skip=blocks 输入文件中,跳过N个block
seek=blocks 输出文件中,跳过N个block
count=n 块的数量
conv=** 用指定参数转换文件
(lcase小写 ucase大写 notrunc不截断输出 Fdatasync写入磁盘 )

【dd工具应用场景】__普通文件默认会截断输出,设备不会
–备份MBR
dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1
–破坏MBR中的bootloader
dd if=/dev/zero of=/dev/sda bs=64 count=1 seek=446
▲备份/dev/sdx全盘数据,并利用gzip压缩,保存到指定路径
dd if=/dev/sdx| gzip>/path/to/image.gz
▲将压缩的备份文件恢复到指定盘
gzip-dc /path/to/image.gz | dd of=/dev/sdx
▲拷贝内存资料到硬盘
dd if=/dev/mem of=/root/mem.bin bs=1024
▲从光盘拷贝iso镜像
dd if=/dev/cdrom of=/root/cd.iso
▲销毁磁盘数据
dd if=/dev/urandom of=/dev/sda1

▲测读写速度
dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000 写
dd if=/root/1Gb.file bs=64k | dd of=/dev/null 读
▲修复硬盘
dd if=/dev/sda of=/dev/sda

【练习】
1、创建一个2G的文件系统,块大小为2048byte,预留1%可用空间,文件系统ext4,卷标为TEST,要求此分区开机后自动挂载至/test目录,且默认有acl挂载选项
mkfs.ext4 -m 1 /dev/sdb1
mkdir /test
mount /dev/sdb1 /test
mount -o remount,acl /test
e2label /dev/sdb1 TEST
打开 vim /etc/fstabetc
添加 UID=** /test ext4 defaults 0 0
partprobe

2、写一个脚本,完成如下功能:
(1) 列出当前系统识别到的所有磁盘设备
(2) 如磁盘数量为1,则显示其空间使用信息
否则,则显示最后一个磁盘上的空间使用信息
vim disk.sh
disk_sum=fdisk -l /dev/sd*|grep -o "^Disk /dev/sd[a-b]"|wc -l
[ $disk_sum -eq 1] && df -H|grep “system|/dev/sd”|tr -s " " |cut -d" "
-f1,5||fdisk -l fdisk -l /dev/sd[a-z]|grep -o "^Disk /dev/sd[a-z]"|tail -1|cut -d" " -f2

3、将CentOS6的CentOS-6.10-x86_64-bin-DVD1.iso和CentOS-6.10-x86_64-bin-DVD2.iso两个文件,合并成一个CentOS-6.10-x86_64-Everything.iso文件,并将其配置为yum源

【RAID】廉价(独立)磁盘冗余阵列 两块磁盘空间一样_fd

RAID 0:
读、写提升,磁盘2+… 无容错能力,增大数据损坏几率
RAID 4:
占用其中一块硬盘空间,放校验值,对RAID0的补充,校验磁盘损坏几率较快,3+
RAID 5:
校验位分别放各个磁盘,3+…,最多支持一块损坏,标配
RAID 6:
校验位2份分别放各个磁盘,4+…最多支持两块损坏
RAID 1:
镜像,数据两份,2+…利用率低
RAID 10:
两份RAID1合成RAID0,每组最多坏1块,4+… 容错性1/3
RAID 01:
两份RAID0合成RAID1, 只允许一组有损坏, 容错性2/3
1;5;10比较常见

JBOD:一串磁盘 堆叠组合使用
RAID7:独立电脑,自带管理工具和系统,独立运行,性能最高,成本高
▲RAID:特征;容错性,提升性能

mdadm :模式化工具
-C 创建
-A 启用raid
-F 监控
-S 禁用
-D 详细信息
-G 增加新成员(默认)
-R 强制启动
-f 标记该磁盘损坏, -r 移除
-x 空闲盘/备用 -l raid级别 -c 块大小_k
-n n个设备创建raid -a {yes/no} 自动创建

【raid0配置】
fdisk t fd 指定磁盘容量类型
mdadm -C -a yes /dev/md0 -l 0 -n 2 /dev/sd{d,c}1
▲mdadm -D /dev/md0 :查看当前状态
mkfs.ext4 /dev/md0 :创建文件系统
mkdir /mnt/raid 建立目录
mount /dev/md0 /mnt/raid 挂载
vim /ect/fstab 写到配置文件

【raid5配置】
fdisk t fd 指定磁盘容量类型
mdadm -C -a yes /dev/md1 -l 5 -n 3 -x 1 -c 1M /dev/sd{b,c,d}2
(n成员 x备用 c 指定块大小)
▲cat /proc/mdstat 查看状态/配置信息
▲mdadm -D /dev/md1 查看磁盘状态,包括备用盘
mkfs.ext4 /dev/md1 创建文件系统
mkdir /mnt/raid2创建目录
mount /dev/md1 /mnt/raid2 挂载

配置raid
mdadm -Ds > /etc/mdadm.conf 把相关设置存放到配置文件
(否则,开机或禁用启用设备,会无法自动激活)
mdadm /dev/md1 -f /dev/sdd2 把sdd2设置为故障
mdadm -D /dev/md1 查看故障是否更新:
mdadm /dev/md1 -r /dev/sdd2 从md1里面删除sdd1磁盘
mdadm /dev/md1 -a /dev/sdd2 把sdd1添加到md1
mdadm–D –s >> /etc/mdadm.conf 生成配置文件

删除raid
umount /mnt/raid*
mdadm -S /dev/md* 禁用raid (mdadm -A /dev/md* 启用raid)
▲mdadm --zero-superblock /dev/sd2 删除元数据信息
dd if=/dev/zero of=/dev/sdc bs=1 count=512 删除分区
partx -d --nr 1-3 /dev/sd

vim /etc/fsta 清除配置文件

练习
1:创建一个可用空间为1G的RAID1设备,文件系统为ext4,有一个空闲盘,开机可自动挂载至/backup目录
fdisk /dev/sda;n;9;;;+1G;w
mkfs.ext4 /dev/sdb
mkdir /backup
mount /dev/sda9 /backup
vim /etc/fstab

2:创建由三块硬盘组成的可用空间为2G的RAID5设备,要求其chunk大小为256k,文件系统为ext4,开机可自动挂载至/mydata目录

【逻辑卷管理】(LVM)_ 扩展空间_8e
pvs 查看物理卷 pvdisplay 查看物理卷(更详细)
vgs 查看卷组列表 vgdisplay 查看卷组
lvs 查看逻辑卷 lvdisplay查看逻辑卷

-s 指定pe物理盘区 ▲给逻辑卷分配空间的最小单 (默认4M)
-n 指定逻辑卷名
-l pe单位 -L 容量 15G
10G:在原来基础上增加到10G
+10G:增加10G

【创建逻辑卷】
fdisk 分区sde1 8e sdc
pvcreate /dev/sd{e1,c} 创建物理卷
vgcreate vg0 /dev/sd{e1,c} 加入vg0卷组
----vgcreate -s 可指定物理盘区 16M vg0 /dev/sd{e1,c}
lvcreate -n lv_mysql -L 15G vg0 创建逻辑卷_15G容量指向vg0
mkfs.ext4 /dev/vg0/lv_mysql 创建文件系统
mkdir /mnt/mysql 新建目录
mount /dev/vg0/lv_mysql /mnt/mysql 挂载
lvextend -l +100%FREE /dev/vg0/lv_mysql 扩展到100%_逻辑卷系统▲
▲resize2fs /dev/vg0/lv_mysql 扩展逻辑卷 ext4 centos6
▲xfs_growfs /mnt/mysql 扩展逻辑卷 efs centos7

扩展卷组 centos7 (xfs不支持缩减)
mkfs.xfs /vg0/lv_data 创建系统
mount /dev/vg0/lv_data/ /mnt/data 挂载
lvextend -L +2G /dev/vg0/lv_data 扩展
xfs_growfs /mnt/data
或↓↓↓
lvextend -r -l +100%FREE /dev/vg0/lv_mysql 通用扩展逻辑卷系统▲
(相当于lvextend、resize2fs 合成一条命令)▲

增加卷组↓sdb 20G centos6
pvcreate /dev/sdb 创建物理卷
vgextend vg0 /dev/sdb 添加/dev/sdb物理卷
lvextend -l +100%FREE /dev/vg0/lv_mysql 扩展到100%_逻辑卷系统
resize2fs /dev/vg0/lv_mysql
缩减逻辑卷↓
umount /mnt/mysql
e2fsck -f /dev/vg0/lv_mysql 检查系统完整性
resize2fs /dev/vg0/lv_mysql 20G 缩减至 20G逻辑卷系统
(或者xfs_growfs /mnt/mysql 20G)
lvreduce -L 20G /dev/vg0/lv_mysql ; y 缩减逻辑卷
mount /dev/vg0/lv_mysql /mnt/mysql 重新挂载

【逻辑卷删除】
pvmove /dev/sde1 把sde1占用的pe空间搬到同一个卷组的其他pv上
vgreduce vg0 /dev/sde1 从vg0中删除sde1
fdisk /dev/sde1 d 1 删除分区
partx -d --nr 6 /dev/sde 刷新

【逻辑卷迁移顺序】
1)卸载逻辑卷
2)缩减逻辑卷系统
3)卸载物理卷
4)重新挂载到其他系统
5)pvmove迁移数据
6)删除空间
– 缩减逻辑卷__不支持在线__可能会数据丢失
– 在线扩展 支持xfs系列,不支持缩减
– 挂载的时候也可以加-o or,只读

【逻辑卷迁移】
centos7
pvcreate /dev/sdd 创建物理卷
vgcreate vg0 /dev/sdd 创建卷组
lvcreate -n lv_data -L 1G vg0 创建逻辑卷

centos6
vgrename vg0 newvg0 该卷组名
umount /mnt/mysql/ 卸载
vgchange -an newvg0 禁用卷组 ▲
vgexport newvg0 导出newvg0 ▲
pvdisplay 查看要导出的盘
(关机)(迁移盘)
pvscan 查看卷信息
vgimport newvg0 导入newvg0
vgchange -ay newvg0 激活卷组
(建立目录、挂载、完成)

【逻辑卷快照】vg0/lv_mysql lv_snap快照只读 centos6▲
umount /mnt/mysql
lvcreate -n lv_snap -s -p r -L 1G /dev/vg0/lv_mysql 创建1G快照指向vg0
-s 快照 -p选项r读
mkdir /mnt/snap
mount /dev/vg0/lv_snap /mnt/snap 挂载快照
(修改数据后)
umount /mnt/mysql ; umount /mnt/snap 取消挂载
lvconvert --merge /dev/vg0/lv_snap 合并快照还原有的逻辑卷
(快照会自动删除)
mount /dev/vg0/lv_mysql /mnt/mysql 重新挂载

【逻辑卷快照】vg1/lv_data lv_snap快照只读 centos7▲
mount /dev/vg1/lv_data /mnt/data
lvcreate -n lv_snap -s -p r -L 1G /dev/vg1/lh_data 创建1G快照指向vg1
mkdir /mnt/snap
mount -o nouuid /dev/vg1/lv_dsnap /mnt/snap 忽略uuid挂载
(取消所有挂载↓)
lvconvert --merge /dev/vg1/lv_snap 合并快照到原有逻辑卷
(快照会自动删除)
mount /dev/vg1/lv_data /mnt/data 重新挂载

【删除快照】
lvremove/vgremove/pvremove

【命令总结】
mdadm:元数据信息
mkisofs:打包iso
mkswap:创建swap系统
swapon/swapoff:swap开启/关闭
dd:转换和复制文件工具
lsusb:USB设备的详细信息
ject eject:光驱弹出/弹入
fuser :进程处理
findmnt 确认当前是否处于挂载状态
mkisofs:将指定的目录与文件做成ISO 9660格式的映像文件
wodim:刻录光盘
dmesg:查询硬件信息


pv/pvdisplay/pvremove 物理
vg/vgdisplay/vgremove 卷组
lv/lvdisplay/lvremove 逻辑卷

lvrename/lvreduce/lvconvert
vgrename/vgcreate/vgreduce/vgcvgimport/vgxport

----------------------------------------------------------------------I
第十二节课 2018年10月22日09:02:22
----------------------------------------------------------------------I

【网络协议和管理】

OSI 开放系统互联
IOS 苹果系统/思科路由路由交换系统
ISO 镜像文件/国际标准化组织

批处理应用程序 FTP/带宽很重要
交互式应用程序 人机交互/等待相应时间很关键
实时应用程序 网络电话、视频/端到端延时至关重要

–OSI网络模型分层
应用层:为应用程序进程提供网络服务、提供用户身份验证
表示层:格式化数据、构建数据、协商应用层传输语法、提供加密
会话层:建立、管理和终止应用程序之间的会话
传输层:确保传输可靠性,建立、维护、终止虚拟电路、错误检测、加密,流控
网络层:地址管理和路由选择
数据链路层:互连设备之间传送和识别数据帧
物理层:定义电气规范、机械规范、过程规范和功能规范

–PDU 协议数据单元(对等层次传递的数据单位)
物理层:bit
数据链路层:frame
网络层:packet
传输层:segment
更高层:message

三种通讯模式:广播、组播、多播

–网络线缆和接口
双绞线 RJ45
Unshielded(UTP) 非屏蔽双绞线
Shielded(STP) 屏蔽双绞线
同轴电缆 Coaxial cable
光纤 fibre-optical RX收 TX发

–双绞线(12发,36收)
同类设备:交叉线
异类设备:直通线
T568B:国内标准 橙白1、橙2、绿白3、蓝、蓝白、绿6、棕白、棕
T568A:国际标准 绿白3、绿6、橙白2、蓝、蓝白、橙1、棕白、棕

传输模式:单工/双工/半双工

【以太网帧格式】字节
–Ethernet II 协议报头结构 === 数据链路层
总大小72-1526 抓包数据→60-1514
前导信息_8 目的MAC_6 源MAC_6 类型_2 数据_46-1500 FCS_4

–IEEE 802.3
前导信息_7 SOF_1 目的MAC_6 源MAC_6 长度_2 数据_46-1500 FCS_4
SOF=起始定界符
FCS=帧校验序列

无线局域网: 802.11
以太网标准: 802.3
中继协议标准 802.1q VLAN

–MAC 2^48地址 48位
前24 组织唯一标志符 (前两位 广播/本地地址)
后24 厂商自由分配

【课后作业】
tcpdump -i eth0 -nn (icmp) 抓包信息
(捕获网络中到达的网卡的所有数据包)

–CSMA/CD 冲突检查的载波侦听多路访问

–TCP/IP 传输控制协议/因特网互联协议
----------------------------------------------------------------------I
第十三节课 2018年10月24日09:02:22
----------------------------------------------------------------------I
【TCP格式】
源端口_16 目的端口_16 序号_32 确认号_32 | 前20字节固定

–端口号:应用程序的唯一标识 0-65535
仅管理员可用:0-1023 用户软件开发:1024-49151 客户端随机:49152-
cat /etc/services linux查看端口号
cat /proc/sys/net/ipv4/ip_local_port_range 查看端口范围32769-60999

–TCP
ssh :22
Telnet :23
ftp :21/20
http :80
https :443
dns :53
kerbors:88 安全相关的协议
smtp :25
pop3 :110
imap :143

–UDP
dns :53
tftp:69
qq :8000
snmp:161
dhcp:67/68
smb :445

mysql 3306 | oracle 1521 | sqlserver 1433

tasklist:本机所有应用程序进程列表
ping -a :显示对方电脑的名称

–sync半连接和accept全连接队列
ss -lnt
/proc/sys/net/ipv4/tcp_max_syn_backlog 半连接,默认128
/proc/sys/net/core/somaxconn 全连接,默认128

ss -nt|sed -nr ‘1!s/([ ]+) .*/\1/p’|sort|uniq -c
统计建立的连接数

【UDP格式】_无状态链接
源端口16 目的端口16 长度16 校验和16 data

ICMP
ping -c 次 -s 大小 -w 秒 -f 泛洪

ping 192.168.34.1 -f -s 65507 泛红

arp -n 查看mac地址和ip地址对应关系
arp -d x.x.x.x 删除arp缓存
【IP pdu】报头 最小20字节

cat /proc/sys/net/ipv4/ip_default_ttl
echo 128 ↑可修改ttl值

路由→ARP→三次握手

203.110.200.199/22
主机数:2^10-2
nemask:255.255.252.0
网络ID: 110010 主机ID 00.199

A 192.168.1.100 255.255.255.
B 192.168.2.100 255.255.0.0
A不可以访问B B不能访问A

100.123.199.124/20
主机数:2^12-2
子网掩码:255.255.240.0
网络ID:100.123.192.0
最小和最大IP:100.123.192.1 100.123.207.254


10.0.0.0/8 给32省划分各自子网
1 子网掩码 255.248.0.0

2 最小子网,最大子网的网络ID
10.0.0.0/13 10.248.0.0/13
3 每子网主机数
2^19-2
4 第20个子网分给河南使用,最小IP,最大IP范围
10.10011 000.0.0
10.152.0.1 10.159.255.254


10.152.0.0/13 河南省 给15个市划分各自子网
1 子网掩码 10.152.0.0/17 10011 000.0 0000000

2 最小子网,最大子网 10011111.1 0000000
10.152.0.0/17
10.159.128.0/17

3 每个子网的主机数
2^15-2 =32766

4 最大子网的最小IP,最大IP范围
10.159.128.1 10.159.255.254


【课后练习】
10.152.0.0/13 87个县

1 子网掩码255.255.240.0 /20

2 最小子网,最大子网
10.152.0.0 10.159.240.0

3 每个子网的主机数
2^12-2

4 最大子网的最小IP,最大IP范围
10.159.240.1 10.159.240.254
route -n :查看路由表

----------------------------------------------------------------------I
第十四节课 2018年10月26日09:09:00
----------------------------------------------------------------------I

动态主机配置协议DHCP
【client】 →DHCP发现(广播) 【server】
DHCP提供(广播)←
→DHCP客户端请求
DCCP确认消息←
DHCP端口:
client:68
server:67

/etc/hosts(优先级比DNS要高)
可以指定网站的ip地址,解析

/etc/nsswitch.conf (可配置DNS优先级,一般不会改)↓
编辑hosts:dns files myhostanme

【centos6主机名设置】
vim /etc/sysconfig/network 更改文件→重启生效,保存
hostname xxxx 更改内存 (exec bash刷新)
vim /etc/host:修改后的主机名写在127后面
(例:vim /etc/sysconfig/network ;HOSTNAME=centos66)

【centos7主机名设置】
vim /etc/hostname 更改文件→重启生效
hostnamectl set-hostname xxxxx (exec bash刷新,直接保存)
vim /etc/host:修改后的主机名写在127后面

【centos 6 网卡名称配置】
vim /etc/udev/rules.d/70-persistent-net.rules
(重启或卸载添加网卡生效)

查看网卡
ifconfig -a /ip a:查看禁用/启用的网卡
ethtool -i eth1:查看网卡驱动
dmesg|grep -i eth0: 查看网卡名称
lsmod :查看系统加载的所有模块

安装网卡
modprobe e1000 重新安装网卡

卸载网卡
modprobe -r e1000 卸载内存中网卡
rmod e1000

禁用网卡
ifconfig eth1 down 禁用 | ifdown eth1
up 启用 | ifup ech0

【网络配置方式】
cd /etc/sysconfig/network-scripts
vim ifcfg-ens33 ↓编辑
DEVICE=ens33
BOOTPROTO=static
IPADDR=10.0.0.100
PREFIX=24 或NETMASK=255.0.0.0
ONBOOT=yes
GATWAY=10.0.0.1

arping -I eth0 192.168.34.6 查看是否IP地址冲突
systemctl restar NetworkManager
service NetworkManager stop(↑关闭以上服务)

systemctl restart network 重启网卡
service network restart 重启网卡
/proc/sys/net/ipv4/ip_forwar

–ifconfig,route,netstat,ip,ss,tc
(修改完即生效,无法保存)

–system-config-network 网络设置
–setup :工具集(包括网络设置) esc切换回来
(修改完保存在文件,无法生效)

–ifconfig
eth0 192.168.34.1/24 临时生效
eth0:2 10.0.0.100/8 一个网卡添加多个地址

【route命令】route -n:查看路由表
route add -host x.x.x.x gw x.x.x.x dev eth1 添加主机路由
route del -host x.x.x.x gw x.x.x.x dev eth1 删除路由

route add -net x.x.x.x/24 gw x.x.x.x dev eth1 添加网络路由
route del -net x.x.x.x/24 gw x.x.x.x dev eth1 删除网络路由

route del -net x.x.x.x/24 gw x.x.x.x dev eth1 metric 200

【跨网段路由】
1)环境准备,克隆虚拟机
2)/etc/udev/rules.d/70-persistent-net.rules cento6 网卡名称更改
modprobe -r e1000 ; modprobe e 重装网卡刷新
3)添加IP地址并保存到文件 ifconfig ens33 x.x.x.x
cd /etc/sysconfig/network-scripts/ 配置到文件
(exec bash刷新)
4)配置路由 route add -net x.x.x.x/24 default dev eth0
5) 启用启用路由转发 echo 1 > /proc/sys/net/ipv4/ip_forward

【路由协议实现】
yum install quagga 路由协议安装包
cd /etc/quagga/
cp ripd.conf.sample ripd.conf
service ripd status --开启rip协议

–netstat命令(较老工具)
-t tcp协议
-u udp协议
-w raw cocket相关
-l 处于监听状态
-a 所有状态
-n 数字显示ip和端口
-e 扩展格式
-p 显示相关进程及PID
-r 内核路由表
-i 显示接口的统计信息 -Ieth0 显示某个接口吞吐量
(ifconfig -s eth0 ↑同上)

–网卡绑定多个IP
【添加】
ifconfig eth1:2 x.x.x.x/24 up
ip addr add 172.16.1.2/16 dev eth0
ip addr add 172.16.1.2/16 dev eth0 label eth0:0
【删除】
ipconfig eth1:2 down
ip addr del 172.16.1.2/16 dev eth0 label eth0:0
ip addr flush dev eth0 label eth0:0
(网卡别名,只能设置静态地址)

–ip命令(centos6 需要安装 yum bash-completion才能补全)
link set eth1 down:物理网卡关闭
link set eth1 up :物理网卡启用

route :查看本机路由
route add x.x.x.x/24 via x.x.x.x dev eth0 添加路由
route del x.x.x.x/24 via x.x.x.x dev eth0 删除路由
route flusk dev eth0 :清空路由表

addr 显示当前网卡
        add x.x.x.x/8 dev eth1 添加网卡地址
        del x.x.x.x/8 dev eth1 删除网卡地址
	flush dev eth1 清空网卡所有地址
        x.x.x.x/8 dev eth1:global 全局使用(默认)
	x.x.x.x/8 dev eth0:link   仅链路可用
	x.x.x.x/8 dev eth0:host   仅本机可用

–ss命令(类似netstat,性能好)
-l 显示本地打开的所有端口
-pl 显示每个进程具体打开的socket
-t -a 显示所有TCP socket
-u -a 显示所有UDP socekt
ss-o state established ‘( dport= :sshor sport = :ssh)’
显示所有已建立的ssh连接
ss-o state established ‘( dport= :http or sport = :http )’
显示所有已建立的HTTP连接
ss-s 列出当前socket详细信息

–修改mac地址:MACADDR=03:c5:01:c2:4d:09 到网卡配置文件
重启服务↓
service network restart
service NetworkManager stop

–添加domain解析:DOMAIN=magedu.com 到网卡配置文件
ping www可自动补后缀为www.magedu.com
↑【cat /etc/resolv.conf 查看最后配置的dns/domain是否生效】

–指定静态固定路由
cd /etc/sysconfig/network-scripts
vim route-eth1
10.0.0.0/8 via 172.18.0.1 去10网段给172网关
service network restart 重启网卡

【–网络接口配置-bonding】
–mode 0 轮转
策略:从头到尾顺序的在每一个slave接口上面发送数据包。本模式提供负载均衡和容错的能力

–mode 1 主备
活动-备份(主备)策略:只有一个slave被激活,当且仅当活动的slave接口失败时才会激活其他slave.为了避免交换机发生混乱此时绑定的MAC地址只有一个外部端口上可见

–mode 3 广播
广播策略:在所有的slave接口上传送所有的报文,提供容错能力

==vim ifcfg-bond0 编辑↓
DEVICE=bond0
IPADDR=192.168.34.100
PREFIX=24
BONDING_OPTS=“mode=1 miimon=100” (mode1模式,100毫秒监听1次)
GATWAY=192.168.34.1
DNS=114.114.114
然后创建两个网卡的物理文件
==vim ifcfg-eth0
DEVICE=eth0
MASTER=bond0
SLAVE=yes
然后复制cp ifcfg-eth0 ifcfg-eth1,顺便把eth1改成eth0
(service NetworkManager stop)→最后把服务停掉
service network restart重启网卡验证…
【查看bond0状态】
cat /proc/net/bonding/bond0

【删除bond绑定】
ifconfig bond0 down 先禁用网卡
rm -f ifcfg-bond0 然后删除文件
vim ifcfg-ens33 / ens37 修改网卡文件
rmmod bonding 卸载模块
service network restart 重启服务


【CentOS 7网络属性配置】
yum info biosdevname 网卡名称配置包

–恢复传统命名方式eth0
编辑/etc/default/grub
==GRUB_CMDLINE_LINUX=“rhgbquiet …quiet net.if.name=0”
grub2.mkconfig -o /etc/grub2/grub.cfg 最后生成覆盖该文件

(或者↓)
vim /boot/grub2/grub.cfg (覆盖↑同上)不推荐使用这种!
==linux16 UTF-8尾部添加net.if.name=0
reboot

【nmcli】centos7

–nmcli 地址配置工具 centso7
device 查看网卡的链接状态
connetction 管理链接
modify (System\) eth1 connection.id eth1 修改网卡名称
add coon-name eth1-home type ethernet ifname
增加一份网卡配置
modify eth1-home ipv4.mothod manual connetion.autoconnet yes ipv4.addressess 10.0.0.8/8
ipv4.gatway…ipv4.dns…

	配置网卡文件
	modify eth1 connection.id eth1-office
	更改网卡名称
	up eth1-home 启用这套网卡配置
	show ens37 判断此网卡是自动获取还是手动配置
	modity eth1-home +ipv4.addresses 1.1.1.1/24
	网卡添加多个地址
图形工具:nm-connection-editor
字符配置tui工具:nmtui
命令行工具:nmcli

nmcli connetction eth0 up 生效配置
nmcli connetction reload 重新加载	
nmcli connetction delete eth0删除网卡配置

–跟踪网络路由
traceroute x.x.x.x
tracepath x.x.x
mtr x.x.x

–广播
ping -b x.x.255.255 发广播
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts 回应所有广播
(是否忽略icmp的广播报文,1:忽略 0:响应)

命令总结:
ifconfig/ifup/ifdown/nmcli/nmtui/netstat/ss/route/traceroute/mtr
rmmod/lsmod/modprobe/ethtools/mii-tto eth0/ethtool eth0/
grub2-mkconfig -o 生成配置文件 /etc/grub2.cfg
/etc/grub2.cfg/nmtui字符工具


  1. :gidit: ↩︎

  2. :alpha: ↩︎

  3. [:space:] ↩︎

  4. [:space:] ↩︎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值