linux
很久之前的笔记,一直没有复习,除了常用的,已经忘的差不多了。 学习的初始状态是了解, 接触, 记忆,然后思考, 由初始状态 总结出一些规律,进行推广和类比。 复习, 复习, 复习。
linux
1.环境问题
在公司中存在各种各样的环境
测试环境
开发环境
生产环境(正式上线环境)
自动化 es服务
2.计算机的基础




































3.linux系统



linux官方网站 :https://www.kernel.org/








清华 北大 中科院 北理 ,都有镜像网站
4.linux系统安装.
1.安装VMware Workstation 软件并激活






这里没用记录的特别详细,如果再次需要安装的话,可以去找视频,跟着安装就行了。
5.用户登录
- root用户
- 是一个特殊的管理账号,也可以称为超级管理员
- root 用户对系统有完全控制的权限
- 对系统的损害会无限大
- 在工作中,如果没有特殊的必要尽量不要使用root
- 普通用户
- 权限有限
- 对系统的损害会小
6.终端
分类
-
设备终端
-
物理终端
-
虚拟终端 ctrl + alt + f[1-6] /dev/tty#
-
图形终端 /dev/pts/0
-
串行终端
-
伪终端 通过ssh远程 连接的 (c通过xshell软件连接)
ssh 加 虚拟机上 的ip地址,这里的ip地址指的是如下图所示的地址

查看终端的命令:tty
查看ip地址的命令 ip addr
可以通过双击下图的红圈内的ip 复制第二个终端

7.交互式的接口
启动终端以后,在终端设备上附加的一个应用程序
- GUI(桌面)
- CLI command line
- powershell
- sh
- bash (linux mac 默认程序)
- zsh
- csh
- tcsh
bash
bash是linux 系统的用户界面,提供了用户和操作系统之间的交互,它接收用户的输入,让它送给操作系统执行
-
目前是linux和mac上默认的shell
-
centos默认使用
显示当前系统使用的shell 在命令行输入 以下命令 :echo $SHELL
显示系统可以使用的shell 在命令行下输以下命令: cat /etc/shells
改变当前系统使用的shell chsh -s shel
l名(上条语句执行时,显示出来的可以使用的shell)
ctrl + d 快速终止当前的连接
重新连接 点下图中的圈里的东西
![image-20201117173623866]()
修改ssh连接慢的步骤
echo "useDNS no" >> /etc/ssh/sshd_config
systemctl restart sshd
命令提示符
[root@localhost ~]# 管理员用户是#号
[blood@localhost ~]$ 普通用户是 $ 符号
显示提示符的格式
[root@localhost ~]# echo $PS1
[\u@\h \W]\$

上图中 的 33m 表示字体颜色 范围是31-37
上图中的 41 表示背景颜色 范围是 40-47
重新加载配置文件

将对命令行提示符的设置,加到配置文件中 # 永久生效

8.命令
执行命令:输入命令然后回车
内部命令:shell 自带的命令
外部命令:第三方提供的命令
查看命令的类型:是内部命令还是其他: type +命令 例如: type echo /type top
[root@localhost ~]# type top
top is /usr/bin/top
[root@localhost ~]# type echo
echo is a shell builtin
查看 shell 所有的内部命令: 直接输入 help
命令可以设置别名
查看当前所有 的别名 alias
自定义别名 alias cdetc='cd /etc'
设置别名只对当前的终端有效 echo "alias cdetc='cd/etc' " >> ~/.bashrc
如果想要多个终端都可以使用 自定义别名, 那么需要把该命令加到配置中去
执行以下命令: echo "alias cdetc='cd /etc' " >> /etc/bashrc
例子如下:
[blood@localhost etc]$ alias cdetc='cd /etc'
[blood@localhost etc]$ cd ~
[blood@localhost ~]$ cdetc
[blood@localhost etc]$
取消别名 unalias cdetc
[blood@localhost etc]$ unalias cdetc
[blood@localhost etc]$ cdetc
bash: cdetc: command not found...
[blood@localhost etc]$
-
执行本身的命令(不使用别名去执行命令,而是使用原本的命令)
\command command 代指命令
'command'
"command"
直接输入命令的路径 which command(命令) : 查看命令的路径
[blood@localhost ~]$ which ls alias ls='ls --color=auto' /usr/bin/ls [blood@localhost ~]$ /usr/bin/ls Desktop Documents Downloads Music Pictures Public Templates Videos命令的格式
command [options...] [args...] command 命令本身 options 启动或关闭命令里的某些功能 长选项: --help --color 短选项: -i -h -l 短选项是可以合并的: ls -l 和 ls - a 可以合并成 ls -la args:命令的作用体, 一般情况下是目录或文件,用户名等等 注意: 短选项是可以合并的 命令 和 选项 参数 都要用空格隔开 敲了一个命令然后不想要执行了,可以ctrl +c 结束命令的执行 同一行要执行多个命令,命令之间用分号分隔 例如: tty;echo 一个命令可以在多行显示,行尾用 \ 连接 [blood@localhost ~]$ echo eqeqw\ > ewqweqw\ > qewqweqw eqeqwewqweqwqewqweqw获取命令的帮助信息
内部命令: help command man bash 查看所有命令的帮助信息 外部命令: command -h commadnd -help 例如:top -h top --help man command 同样支持man 方法 例如: man top 里面上详细的信息 官方文档

man
1 Executable programs or shell commands
2 System calls (functions provided by the kernel)
3 Library calls (functions within program libraries)
4 Special files (usually found in /dev)
5 File formats and conventions eg /etc/passwd
6 Games
7 Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)
8 System administration commands (usually only for root)
9 Kernel routines [Non standard]
退出 q
翻屏 空格
翻行 回车
man 章节 passwd
bash快捷键
ctrl + l 清屏 相当于 clear
ctrl + o 执行当前的命令,并显示当前的命令
ctrl + s 锁屏
ctrl + q 解锁
ctrl + c 终止命令
ctrl + z 挂起命令
ctrl + a 光标回到行首 相当于Home键
ctrl + e 光标回到行尾 相当于End键
ctrl + xx 在开头和当前位置跳转
ctrl + k 删除光标后的文字
ctrl + u 删除光际前面的文字
alt + r 删除整行 在centos8中不行,
tab键
命令补全
内部命令
外部命令:根据环境变量定义的路径,从前往后依次查找,自动匹配第一个查找到的内容
如果用户给的命令只有唯一一个匹配,,则直接补全
如果有多个匹配的话,则需要再按tab键将匹配到的结果展示出来
目录补全
把用户给定的字符作为文件的开头 ,如果有唯一匹配则直接补全
如果有多个匹配,则需要再次按tab键把所有的匹配的结果展示出来。
引号
单引号不会做命令的引用,直接打印引号的内容
双引号会做命令的引用,
[blood@localhost ~]$ name=alexdsb
[blood@localhost ~]$ echo '$name'
$name
[blood@localhost ~]$ echo "$name"
alexdsb
反引号:`` 引用命令执行后的内容 反引号的外面必须使用双引号
[blood@localhost ~]$ echo " wo shi `tty`"
wo shi /dev/pts/1
echo " wo shi $(tty)" 与上面的反引号的作用是一样的
命令历史
可以使用上下箭头来查找之前执行过的命令
通过以下的命令可以查看之前执行过的命令
cat ~/.bash_history
history 查看执行过的命令,当你退出终端后,会把你执行过的命令存放到 ~/.bash_history文件夹下。
执行上一条命令:
上箭头
!!
!-1
ctrl + p 回车
调用上一条命令的最后一个值 esc + .
执行history 后,每条命令的前面都有一个与之对应的数字,
! 数字 指定执行第多少条命令,同样支持!+负数 -1 -2 历史命令从前往后数。
! -数字 执行倒数第几条命令
! string 用来执行最近一次匹配到的命令 例如: ! echo
ctrl + r 用来搜索命令的
history 数字 :显示最后的几条命令
ctrl + g 取消搜索
命令展开
[blood@localhost ~]$ echo file{1,2,3}
file1 file2 file3
[blood@localhost ~]$ echo file{1..20} 1..20表示从1到20
file1 file2 file3 file4 file5 file6 file7 file8 file9 file10 file11 file12 file13 file14 file15 file16 file17 file18 file19 file20
[blood@localhost ~]$ echo file{1..20..2} 1..20..2 这里的2 表示步长
file1 file3 file5 file7 file9 file11 file13 file15 file17 file19
[blood@localhost ~]$ seq 1 10
1
2
3
4
5
6
7
8
9
10
[blood@localhost ~]$ seq 1 2 10 这里中间的2表示步长
1
3
5
7
9
echo回显
echo -e "sfdfsd\nasdsfdf"
echo -e '\a' 播放声音
查看当前登录的用户
whoami 显示当前用户
who am i 显示当前用户的详细信息
[blood@localhost ~]$ whoami
blood
[blood@localhost ~]$ who am i
blood pts/1 2020-11-18 08:53 (192.168.184.1)
[blood@localhost ~]$ w 显示所有的用户,并显示用户执行的命令。
date
[blood@localhost ~]$ date
Wed Nov 18 09:47:26 CST 2020


date +%s 时间戳,距1970/01/0过了多少秒
date + %w day of week (0..6); 0 is Sunday
date + %W 本年的第几周

1970/01/01 unix元年
显示时区
[blood@localhost ~]$ timedatectl
Local time: Wed 2020-11-18 10:13:43 CST
Universal time: Wed 2020-11-18 02:13:43 UTC
RTC time: Wed 2020-11-18 02:13:43
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: no
NTP service: inactive
RTC in local TZ: no
修改时区

日历 cal

cal -y 这一年的日历

显示某一年的日历:cal + 年份 例如 cal 2017
关机和重启
shutdown 默认一分钟后关机
shutdown -c 取消关机
shutdown 重启
shutdown 后面可以跟的参数
now:立即关机
+n n分钟之后关机
hh:mm 指定时间
关机命令: poweroff
关机命令: halt
关机命令: init 0
重启命令:
reboot
-f:强制
-p: 关机
init 6
9.文件目录结构

- 文件和目录被组织成一个倒置的树状结构
- 文件系统从根开始 " \ "
- linux文件名称严格区分大小写 windows里面不区分大小写
- 隐藏文件以"."开头
- linux中文件的分隔符为" / ", windows中的分隔符为" \ "
文件命名规范
文件字符最长为255个字符
包括路径在内文件名称最长为4095个
颜色表示:
蓝色:--》文件夹
绿色:--》可执行文件
红色:--》压缩文件
蓝绿色:--》链接文件
灰色: --》其他文件
白色:--》文件
除了斜杠和NULL,其他所有的字符都可以使用
对大小写敏感
文件系统结构
/boot 引导文件的存放位置,内核文件、引导加载器都在此目录下
/bin 所有的用户都可以使用的命令
/sbin 管理类的命令
/lib 启动时程序使用的基本的库文件 以.so结尾
/lib64 专门存放X86-64系统上的辅助文件
/etc 存放配置文件的目录
/home/username 普通用户的家目录
/root 管理员的家目录
/media 便携式移动设备的挂载点 windows中盘符就是挂载点。
/mnt 临时文件的挂载点
/dev 设备文件和特殊文件的存放位置
/opt 第三方的应用的安装位置
/tmp 临时文件的存放位置
/usr 存放安装程序
/var 存放经常变化的文件
/proc 存放内核启动和进程相关的虚拟文件
/sys 输出当前系统上的硬件相关的文件
/srv 系统上允许的服务用到的数据
linux应用程序的组成
二进制文件
/bin
/sbin
/usr/bin
/usr/sbin
/usr/local/bin
/usr/local/sbin
库文件
/lib
/lib64
/usr/lib
/usr/lib64
/usr/local/lib
/usr/local/lib64
配置文件
/etc
/etc/name
/usr/local/etc
帮助文件
/usr/share/man
/usr/share/doc
/usr/local/share/man
/usr/local/share/doc
绝对路径和相对路径
绝对路径
以根开始
完整的文件的存放位置
可以读取到任何一个文件和一个文件夹
相对路径
不以根开始
相对当前的位置来决定
可以简短的表示一个文件或者一个文件夹
. 代表当前目录
.. 代表父级目录
目录名和基名
dirname 上级文件夹名称
basename 最下一层的文件或文件夹的名称
[root@localhost log]# basename /var/log
log
[root@localhost log]# dirname /var/log
/var
切换目录
cd 切换目录 change directory
可以使用相对路径
也可以使用绝对路径
切换到家目录
[root@localhost log]# cd
[root@localhost ~]#
回到上一次的目录
[root@localhost ~]# cd -
/var/log
[root@localhost log]#
显示当前的工作目录
[root@localhost log]# pwd (print working directroy)
/var/log
查看链接的真正的目录
[root@localhost lib]# pwd -P
/usr/lib
列出目录或者文件
ls(list)
命令格式:Usage: ls [OPTION]... [FILE]...
ls -a 显示所有的文件
ls -l 以长格式显示文件列表
[root@localhost lib]# ls -l
total 48
drwxr-xr-x. 3 root root 18 Nov 17 15:45 alsa
权限 硬盘引用次数 属主 属组 大小 访问时间 文件名称 与上一行的对应解释
ls -R 递归显示目录
ls -d 显示目录本身
ls -1(数字1) 文件分行显示
ls -S 按照文件大小排序
ls -r 倒序显示
ls -t 按照时间排序
ls -lh 文件大小显示人类易读的方式
ls -d */ 显示当前目录下的文件夹
l . 只显示隐藏文件
linux 下的目录类型
-用来表示文件
d 用来表示目录
b 块设备
c 字符设备
l 表示符号链接文件
s socket 套接字
查看文件的状态 stat 文件名
[root@localhost etc]# stat favicon.pmg
stat: cannot stat 'favicon.pmg': No such file or directory
[root@localhost etc]# stat favicon.png
File: favicon.png -> /usr/share/icons/hicolor/16x16/apps/fedora-logo-icon.png
Size: 56 Blocks: 0 IO Block: 4096 symbolic link
Device: fd00h/64768d Inode: 17111334 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:etc_t:s0
Access: 2020-11-17 20:38:17.588723253 +0800 访问时间
Modify: 2019-07-31 00:25:35.000000000 +0800 修改时间
Change: 2020-11-17 15:41:55.268479255 +0800 改动时间
Birth: -
atime 访问时间 查看文件的内容就会改变
mtime 修改时间 改变内容是发生改变
ctime 改动时间 元数据发生变化 上面的文件内的详细内容
touch
创建空文件和刷新时间,如果文件存在,则刷新创建时间,如果文件不存,则创建文件
touch 文件名 创建文件 例如:touch a ,下面几条命令中的a都是指文件 a
touch -a a 只修改atime 和ctime
touch -m a 只修改mtime 和ctime
stat a 查看文件a的详细信息
文件通配符
* 所有 ls * 展示一个文件夹下的所有文件
? 匹配任意单个字符
~ 表示用户的家目录
[123] 表示其中一个
[^123] 取反
ls file[a-z] 有坑,所以我们就不使用他了 缺少Z
ls file[A-Z] 有坑,所以我们同样也不使用他了 缺少a
[:lower:] 表示小写字母中的任何一个 例如: ls file[[:lower:]]
[:upper:] 表示大写字母中的任何一个 例如: ls file[[:upper:]]
[a-zA-Z] [:alpha:] 表示所有的字母 例如: ls file[a-zA-Z]或者 ls file[[:alpha:]]
[:alnum:] [a-zA-Z0-9] 表示字母和数字
[:digit:] 表示数字 中括号里面两边有两个冒号的时候,要在外面多加一个中括号 ,例如: ls fiel[[:digit:]]
创建目录
mkdir 创建目录
-p 递归创建(也就是一次可以创建多级目录)
-v 显示详细过程
显示目录树
安装:yum install -y tree
tree 显示目录树
tree -d 只显示文件夹
tree -L# 只显示#层 例如: tree -dL2 只显示2层 当前目录不算一层
删除目录
rmdir 只能删除非空目录
-p 递归删除空目录
-v 显示删除过程
rm -rf 目录名 删除非空目录
复制文件和文件夹
cp copy 默认情况下是 cp -i别名,原来本身命令是不提示覆盖的
Usage: cp [OPTION]... [-T] SOURCE DEST
or: cp [OPTION]... SOURCE... DIRECTORY
or: cp [OPTION]... -t DIRECTORY SOURCE...
-i 显示提示信息
-n 不覆盖
-r -R 递归复制
-d 只复制链接文件,不复制原文件
-v 显示过程
-b 备份原来的文件
--backup=number 备份文件文件名上加上数字
-p 保留原来的属性
如果源文件是文件的话:
目标是文件
目标文件如果不存在的话,则新建目标文件,并把内容写到目标文件中
如果目标文件存在的话,本来的命令是直接覆盖 建议使用-i来提示用户
目标是文件夹
在文件夹中新建一个同名的文件,并把文件内容写到新文件中
如果源文件为多个文件的话
目标必须是文件夹,文件夹必须存在其他情况都会报错
如果源文件是文件夹的话
目标文件是文件:不可以
目标文件必须是文件夹,必须使用-r选项
如果目标文件不存在:则直接创建目标文件夹,并把源文件夹的数据都复制到目标文件夹
如果目标文件存在:
如果是文件的话,直接报错
如果是文件夹:则在目标文件夹中创建同名文件夹,并把所有数据都复制到新文件夹
移动 重命名
mv move
mv --help 查看帮助信息
Usage: mv [OPTION]... [-T] SOURCE DEST
or: mv [OPTION]... SOURCE... DIRECTORY
or: mv [OPTION]... -t DIRECTORY SOURCE...
-i 提示
-f 强制
-b 备份
--backup=number 备份后面加数字
-v 显示过程
删除
rm remove
rm --help
Usage: rm [OPTION]... [FILE]...
-i 提示
-r -R 递归删除
-f 强制删除
rm -rf 慎用
rm -rf /*
cd /
rm -rf *
链接文件
软链接
相当于windows的快捷方式
创建命令是ln -s 源文件 目标文件
可以对目录做软链接
指向另外一个文件或者目录的路径,大小是路径的长度的字符
对磁盘可以跨分区
对磁盘的引用次数没有影响
源文件发生改变,软链接会跟着改变
源文件删除,软链接不能访问
硬链接
命令是 ln 源文件 目标文件
磁盘引用次数会发生变化
指向的是硬盘上的同一块区域
磁盘的引用次数会随着硬链接次数来增加
不能对目录做硬链接
源文件发生改变,硬链接也会跟着变化
查看文件类型
file 文件
输入 和输出
标准输入 默认是来自键盘的输入 stdin 0
标准输出 默认输出到终端窗口 stdout 1
标准错误输出 默认输出到终端窗口 stderr 2
i/o的重定向
> 覆盖
> 将标准输出重定向到文件中
2> 将错误输出重定向到文件中
&> 将所有的输出重定向到文件中
禁止、允许覆盖
禁止覆盖:set -C
允许覆盖: set +C
将命令执行后正确信息输入到文件中
ls a > e 执行的命令是ls a(其中a 是一个文件夹) 把正确命令输入到了 e文件中
上面一条命令等同于 这条命令 ls a 1> e 上面的一条命令活省略了1,也可以说是默认是1
ls qwe 2> e 将命令执行后的错误信息输入到文件中, 命令中 由于 qwe 不存在,所以 ls qwe 执行后会产生错误的信息,> 前加2 是输入错误信息
ls a qwe &> e 将错误的信息和正确的信息输入到一个文件中去 用 &>
将标准输出和错误输出 追加到不同的文件中
ls a adasda > e 2> w ls a 由于 a 文件夹是存在的,是正确的命令,将命令执行后的输出追加到了 e文件中,
由于 adasda 是不存在的, 所以 ls adasda 是错误的, 将命令执行后的错误信息追 加到了 w 文件中
command > file 2>&1 覆盖
command >> file 2>&1 追加
ls a adasda > e 2>&1 将正确信息追加到 e文件中, 错误信息也追加到e 文件中, 2>&1 追加到1正确文件对应的文件中
>> 追加
>> 将标准输出追加到文件中
2>> 将错误输出追加到文件中
&>> 将所有输出追加到文件中
例如: ls a adsdasda &>> e
(): 合并多个命令的输出 (ls dadasd;ls dasdasda) 2> a
从文件中读入 <
tr 字符替换
-t 截断
-d 删除
-s 压缩 去重
-c 取反
tr "a-z" "A-Z" 将小写字母替换成大写字母
tr abc 123 将abc 分别替换成对应的 123
tr abc 12 把a 替换成 1 把 bc 都替换成2
tr -t abc 12 以后面的为主
-t是截断
[root@localhost test]# tr -t abc 12
abc
12c
tr -d abc 删除后面出现的字符
-d 是删除
[root@localhost test]# tr -d abc
abcdefg
defg
-s 是去重
tr -s a
[root@localhost test]# tr -s a
aaaaaaabc
abc
-c 用来取反
[root@localhost test]# tr -sc a
aaaabbbbbcccddd
aaaabcd
tr -dc a
[root@localhost test]# tr -dc a tr -d 是删除 -c是取反, tr -dc a 是把除 a 以外的全部删除
把 字符后面的换行(\n) 也删除了, 要想查看结果需要ctrl + d 结束
aaaaaaaasfsdfsdf
sfdfdsf
aaaaaaaa[root@localhost test]#
tr -dc "a\n" 不删除换行了, 把 \n也加到了取反的列表中
tr -d a <issue > issue 处理完成以后不能写到源文件,要写到新的文件中
多行发送给stdin
多行内容追加到同一个文件中
1.cat > 文件名, 向文件内写入内容 ctrl + d结束
2.cat > 文件名 <<EoF 输入<< 后面的字符结束 ,后面的字符可以写成任意的字符,只不过EOF是我们约定俗成的。
管道
管道使用"|"来表示
命令1|命令2|命令3
把命令1的输出结果当做命令2的输入,把命令2的输出当做命令3的输入
也就是把前一个命令的输出结果当做下一个命令输入
一般用来组合多个命令 例如:组合 ls 和 tr 等
有一些命令是不接受管道的
[root@localhost test]# ls file1|tr 'a-z' 'A-Z'
FILE1
正常情况下 管道默认只能输出正确的输出
如果要输出错误的信息,则需要在 | 前加一个& 也就是|&
[root@localhost test]# ls f|tr 'a-z' 'A-Z'
ls: cannot access 'f': No such file or directory
输出错误的信息
[root@localhost test]# ls f|&tr 'a-z' 'A-Z'
LS: CANNOT ACCESS 'F': NO SUCH FILE OR DIRECTORY
10文本显示相关
cat 显示文本
-E 显示结尾的$符
-n 对显示的每一行进行编号
-b 对非空行进行编号
-s 对连续的空行进行压缩
tac是倒叙显示文本
less分屏显示文本
向下翻一屏 空格
向下翻一行 回车
q 退出
/文本 搜索文本
n 向下查找 N向上查找
less是man 命令的默认分页器
more分页显示文本
默认显示读取的百分比
读取完成自动退出
q退出
-d 显示翻屏和退出的提示
head显示文件的前面的内容
默认显示前十行
-# 显示先#行
-n # 显示前#行
-c # 显示前#个字符
tail 显示文件后面的内容
默认显示后十行
-# 显示后# 行
-n # 显示后#行
-c # 显示后#个字符,换行符也是一个字符
cut切割
Usage: cut OPTION... [FILE]...
-c 按照字段切割 cut -c2-5 显示第二到第五个字符
-d 指定切割符,默认是tab
-f # 显示第#个字段 #,#,# 显示离散的多个 #-#显示连续的多个 1-5,7 上面两个还可以结合使用
paste合并
默认是相同行合并到一起,中间默认是用tab键分开 paste a.txt b.txt
也可以指定合并中间以什么分开,例如以:分开: paste -d: a.txt b.txt
-d 指定合并到一行时用什么符号分开。 指定间隔符
-s 将所有的行按照列来显示 paste -s a.txt b.txt
11.文本的统计相关
wc用来对文本进行统计
[root@localhost test]# wc f0
5 6 39 f0
行数 单词数 字节数 文件名
-l 只显示行数
-w 只显示单词数
-c 只显示字节数
-m 只显示字符数
-L 显示文件中最长的一行行的长度
sort排序
Usage: sort [OPTION]... [FILE]...
or: sort [OPTION]... --files0-from=F
默认是按照字母排序的
-r 倒叙
-R 随机排序
-n 按照数字进行排序
-f 忽略大小写
-t 指定分割符
-k # 指定按第#个字段进行排序
sort -t: -k3 a.txt
sort -nt: -k3 a.txt
uniq合并相同的行
相同:相邻 完全一样
-c 显示相同的行出现的次数
-d 只显示重复的行
-u 显示从没有重复的行
统计django后端的访问量经常将以下几个命名一起使用
cut -d " " -f4 d|sort |uniq -c
pv 网页的访问量,每访问一次,日志数量就增加一条 page
uv 网页的访问量,一个用户访问增加一条 user
对比文件
[root@localhost test]# cp f0 fq 把f0 文件复复制到 fq文件
[root@localhost test]# cat fq 显示f0 文件
dsadasd
sadasda
file{1-100}
seq 1 100
[root@localhost test]# echo '123' >> fq 把123添加到fa文件中
[root@localhost test]# cat fq 查看fq文件
dsadasd
sadasda
file{1-100}
seq 1 100
123
[root@localhost test]# diff f0 fq 显示 f0文件和fq文件的区别
5a6 5代表f0文件中有5行a 代表添加,fq文件在f0文件的前提下增加了第六行,
> 123 这里显示fq文件中增加的第六行的内容。
[root@localhost test]# echo '1234' >> f0 把1234添加到f0文件第六行中
[root@localhost test]# diff f0 fq
6c6 f0文件中有6行 c 代表change 改变 fq 文件中也有六行
< 1234 <符号后面是 fo文件第六行中的内容,
---
> 123 > 符号后面是fq文件第六行中的内容
diff出来的结果是 f0文件中的第六行语fq 文件中的第六行不同。
12 修改权限
chown 用来修改所用者和组
Usage: chown [OPTION]... [OWNER][:[GROUP]] FILE...
or: chown [OPTION]... --reference=RFILE FILE...
chown blood f0 修改f0文件的属主
chown blood.blood f0 修改属主和属组
chown root.root fo
chown root:root
chown :blood 直接修改属组
chown -R blood a 递归修改属主 这里a 是一个文件夹 ,修改文件夹以及文件夹内的属主。
chown --reference=f0 f1 更改f1的所有者和组,参考f0 也就是改成和f0一样。
chgrp修改文件的属组
Usage: chgrp [OPTION]... GROUP FILE...
or: chgrp [OPTION]... --reference=RFILE FILE...
与上述命令的用法相似
权限
drwxr-xr-x. 3 blood root 15 Nov 19 10:32 b
d rwx r-x r-x. 3 blood root 15 Nov 19 10:32 b
第一位 表示是文件夹还是文件 d 表示是文件夹 -表示不是文件夹,也就表示是文件了
后面九位表示权限 三位表示一组
9位分成三组,--- --- ---- 第一组表示属主的权限 第二组表示属组的权限 第三组表示其他用户的权限
权限的内容有 r w x
对于文件来说
r: 表示读,有读的权限 可以使用文本查看工具查看里面的内容
w: 表示写, 有写的权限 可以修改文本的内容
x: 表示执行, 有执行的权限 执行可以直接写./file
— :表示没有这个权限
对于目录来说:
r:可以使用ls等文件查看的命令查看
w: 可以创建文件,也可以删除文件
x: 可以 cd 进入
数字表示:
--x
二进制 八进制
001 1
-w-
010 2
r--
100 4
rw-
110 6
rwx
111 7
r-x
101 5
-wx
011 3
可以对文件的权限进行修改
属主:用 u 代替
属组: 用 g 代替
其他: 用 o 代替
以上三者的权限全部都修改的话用: a 代表全部
chmod u+x c 修改属主的属性为可执行 增加
chmod u-x c 修改属主的属性为不可执行 删除
chmod u=r c 修改属主的属性为只读 直接赋值
chmod a=r c 将c文件的 属主, 属组,其他 的权限全部修改成 只读。
可以直接使用数字表示
chomod 775 c 7:rwx 5:r-x
可以基于某个文件进行修改
chmod --reference=b c 参考b文件的权限来修改 c 文件的权限
设定特殊权限
chattr +i 不能删除、不能修改、不能变更 例如: chattr +i a (a在这里表示a文件)
chattr -i 可以减去这个属性
lsattr 查看属性
chattr +a 只能追加数据
13 vim命令基础介绍

vi/vim(对命令的大小写特别的敏感)
打开文件
vim [option] ...file ...
+# 直接定位到第#行
vim +2 file
+/pattern 打开文件后,直接定位到第一个匹配到pattern的地方
vim +/113 file 打开文件直接定位到113所在的位置
-b 以二进制的方式打开
vim -b file
-d file1 file2 对比打开多个文件
vim -d a.txt b.txt
-m 以自读的方式打开文件
vim -m file
-e 直接以末行模式打开
vim的模式
命令模式:可以移动、可以粘贴、复制文本
插入模式或者编辑模式:可以修改文本
末行模式(扩展命令模式):可以保存,退出等等
esc退出当前模式
模式之间的切换
命令模式-插入模式
i 光标所在处插入
l 在当前光标所在的行首插入
a 在当前光标所在位置的后面插入
A 在当前光标所在的行尾插入
o 在当前光标所在的行的下一行(新开的一行)插入
O 在当前光标所在的行的上一行(新开的一行)插入
插入模式-命令模式
esc
命令模式-末行模式
:
末行模式-命令模式
esc esc
esc enter

关闭文件
末行模式
:w 保存
:q 退出
:wq 保存并退出
:q! 强制退出
:wq! 强制保存并退出
:x 保存并退出
命令模式:
:ZZ 保存并退出
:ZQ 不保存退出
扩展命令行模式
按“:”来进入
:w 写入
:q 退出
:wq 保存并退出
:q! 强制退出
:x 保存并退出
:r file 读入文件
:w file 另存为
:!command 直接执行命令
:r!command 直接把命令的结果写入文件中
命令模式跳转
字符之间的跳转
l 向右
h 向左
j 向下
k 向上
单词间跳转
w 下一个单词的词首
e 当前词的词尾或者下一个单词的词尾
b 当前词的词首或者上一个单词的词首
# command 直接跳转#个单词 例如:
3 b 向下跳转 3个单词
3 e 向上跳转3个单词
页面间跳转
H 页首
L 页尾
M 页中
zt 将光标所在的行移到屏幕的顶端
zb 将光标所在的行移动到屏幕的底部
zz 将光标所在的行移到屏幕的中间
行首行尾之间跳转
^ 跳转到当前光标所在行的第一个非空字符
0(数字) 跳转行首
$ 跳转到行尾
行间移动
#G 跳转到第#行 1G 跳转到第一行
在命令扩展模式下,直接 # 跳转到对应的行
G 直接到最后一行
在命令扩展模式下输一个特别大的数字,也是到达最后一行,例如:13231312
gg 跳转到第一行
段落之间跳转(行与行之间有空行算一段)
{ 上一段
} 下一段
翻屏
ctrl + f向文件尾部翻一屏
ctrl + b向文件首部翻一屏
ctrl + d 向文件尾部翻半屏
ctrl + u 向文件首部翻半屏
14.命令模式编辑
字符编辑
x 删除光标所在处的字符
# x 删除#个字符
xp 将光标所在处的字符和后面的字符交换位置
~ 将光标所在的位置大小写互换
J 删除当前行的换行符
替换
r 替换当前光标所在处的字符
R 进入替换模式
删除
d 删除,需要跟字符跳转结合
d$ 删除到行尾,删除当前位置
d0 删除到行首,当前位置不删除
d^ 删除到非空字符
dw 删除一个单词
de 向后删除一个单词
db 向前删除一个单词
dd 删除整行
# dd 删除#行
dG 删除到结尾
dgg 删除到开头
D 相当于 d$
复制
y,也可以和字符跳转结合
y$ 复制到行尾
y0 复制到行首
y^ 复制到第一个非空字符
yw 复制一个单词
ye 复制下一个单词
yb复制上一个单词
yy 复制一整行
# yy 复制#行
yG 复制到结尾
ygg 复制到开头
Y 复制整行 相当于yy
粘贴
p 如果是整行的话,则粘贴到当前光标所在行的下一行,否则粘贴到光标的后面
P 如果是整行的话,则粘贴到当前光标所在行的上一行,否则粘贴到光标的前面
改变(插入),删除以后并把模式切换成插入模式
c 可以跟光标的跳转做结合
c$ 删除到行尾并切换成插入
c0 删除到行首并切换成插入
c^
cw
ce
cb
#command
cc 删除整行并插入
C 相当于c$
ialexesc 将alex粘贴次 # ! alex esc
15.vim高级
命令行模式下
搜索
/pattern 从当前光标往下搜索
?pattern 从当前光标往上搜索
n 同命令相同的方向 移动
N 同命令相反的方向 移动
撤销
u 撤销最近的修改
#u 撤销最近的#次修改
ctrl + r撤销之前的撤销动作
. 重复最后一次操作
#. 最后一次操作执行#次
命令扩展模式下
地址定界
: start, end
# 具体到第#行
#,#第#行到第#行
#,+n 从第#行开始 到第#+n行结束 例如:1,+2 =1,3
. 表示当前光标所在的行
$ 表示最后一行
$-1 表示倒数第二行
/字符1/,/字符2/ 从第一个字符1匹配到的地方,到第一个字符2匹配到的地方。
#,/字符/ 从第#行开始到 第一次字符匹配到的地方
/字符/,$ 从第一次匹配到字符到 结尾
可以使用的命令:
d 删除
y 复制
w file 重新另存为一个文件
r file 将文件的内容写到光标的下一行
查找并替换
要使用地址定界来进行查找
s在扩展命令下使用为替换 :%s/tt/12 将文本的tt 替换成12
格式:查找区域(即定界)s/要查找的内容/要替换的内容/装饰器
要查找的内容可以使用正则
替换的内容不能为正则
可以分组 例如:%s/\(nfs.*\)/#\1/ \ 是将后面的字符进行转义
\1表示第一个分组内的内容 \# 表示第#个分组里面的内容
还可以写面下面这种方式 %s/nfs.*/#&/ 这里的& 表示前面匹配到的内容
装饰器
i 忽略大小写
g 表示全部替换
gc 每一次替换前都要进行询问是否替换
分隔符除了可以使用 \
还可以使用 # 或者@ 符
可视化
v 面向字符的
V 面向行的
ctrl + v 面块的 ,一块块的选中
可以和所有的跳转键进行结合
对突出显示的部分可以使用删除、复制、变更(删除之后切换到插入模式)、过滤、替换、另存为等等
打开多个文件
vim file1 file2 file3
:next 下一个文件
:prev 上一个文件
:first 第一个文件
:last 最后一个文件
:qall 退出全部
:wall 保存全部
:wqall 保存并退出全部
:xall 保存并退出全部
使用多个窗口打开文件,一个屏幕中有多个文件
vim -o file file2 file3 水平分隔
vim -O file file2 file3 垂直分隔
各个文件之间进行切换 ctrl + w 加上下左右的箭头
:qall 为退出
单文件切割成多个窗口
ctrl +w ,s 水平切割
ctrl +w,v 垂直切割
ctrl +w,q 取消相邻的窗口
ctrl +w ,o 取消全部窗口
16 .vim工作特性
配置文件
全局有效: /etc/vimrc
对当前用户有效 ~/.vimrc
行号:加入行号在文件中输入 :set nu 取消行号 :set nonu
忽略大小写:(搜索) :set ic 取消忽略大小写 :set noic
自动缩进上一行:命令模式下:set ai 取消:set noai
设置高亮显示(搜索到的内容) :set hls 取消:set nohls
语法高亮 打开:syntax on 取消:syntax off
文件格式:
windows 格式 set fileformat=dos
unix set fileformat=unix
上面两名话中的fileformat可以简写成ff
添加标识线: set cul 取消标识线:set nocul
获取帮助: :set all
获取帮助信息:
help
help topic
vimtutor
17.find
find 是linux 里面的一个实时查找工具,通过指定路径完成文件查找
find [options]...[查找路径][查找条件][处理动作]
查找路径:查找的位置,默认是当前文件夹
查找条件:制定查找的标准,文件名,大小、类型,日期等等
处理动作:对符合条件的文件做什么操作,默认是输出到屏幕上
查找条件
根据文件名查找
-name 例如:find -name a 指定名称可以使用正则表达式
-iname 忽略大小写 。例如: find -iname a
-links n 引用次数为n的文件
-regex 后面跟完整路径,而不是文件名,必须是整个路径完全匹配
指定搜索的层级
-maxdepth level 最大的搜索深度,指定的目录为第一层, 例如:find -maxdepth 2 -name a
-mindepth level 最小的搜索深度,包括level层,指定目录为第一层 , 例如 : find -mindepth 2 -name a,
根据属主、属组来查找
-user username 查找属主为username的文件,例如:find -user blood
-group groupname 查找属组为groupname的文件 例如: find -group blood
-uid id 查找属主为id 的文件
-gid id 查找属组为id 的文件
-nouser 查找没有属主的文件
-nogroup 查看没有属组的文件
根据文件类型来查找-type
d 目录
f 文件 例如:find -type f
l 符号链接
s 套接字
b 块设备
c 字符设备
p 管道文件
空文件或者空目录
-empty 例如: find -empty
如果只想查看空目录,可以指定文件类型为目录 find -empty -type d
条件
与 -a
或 -o
非 -not 例如:find -empty -a -type d
摩根定律
非(A或者B) 非A 且非B
非(A且B) 非A 或非B
排除目录
-path
按照大小来查找
-size # (#-1,#] 不包括#-1,包括# find -size 2M
-size -# [0,#-1] 包括0和#-1
-size +# (#,....)
按照时间来查找
-atime # [#,#+1) atime的时间与现在的时间差为# 到#+1天,左闭右开。
-atime -# (0,#)
-atime +# [#+1,...]
查找7天以后的文件 find -atime +7
-mtime
-ctime
以分钟为单位
-amin
-mmin
-cmin
处理动作
-print 默认的处理动作,显示在屏幕上
-ls 类似与ls -l 显示长格式
-delete 删除查找到的文件
-fls file 将查找到的结果以长格式保存到文件中
-ok command {}\; 对每一个查找到的文件执行command命令,在执行命令之前要先提示用户是否执行
-exec command {}\; 对每一个查找到的文件执行command命令,不需要确认,一次性交给后面的命令处理
xargs
有的命令不支持管道
命令参数过长
xargs 将管道前面的内容一条一条的交给后面的命令处理 例如:echo file{1..500000}| xargs touch
一般会跟find结合使用
18. linux里面的三剑客
grep
awk
sed

grep
grep [option] '模式' file
option
--color=auto 对匹配到的内容加颜色
-v 取反
-i 不区分大小写
-n 查找到的内容增加行号
-c 打印匹配到的行数
-o 只显示匹配到的文字
-q 静默模式 echo $? 判断上一条命令执行的结果,如果有结果则输出0 如果没有结果则输出非0
-A # after 在查找到的内容的基础上向下显示#行
-B # before 在查找到的内容的基础上向上显示#行
-C # context 在查找到的内容的基础上向上和向下分别显示#行
-e 或者 grep -e 'user' -e 'root' passwd
-E 扩展的正则表达式
-F 不使用正则表达式
-r 递归
-w 匹配整个单词
正则表达式元字符
字符匹配
. 任意单个字符
[] 匹配指定范围内的任意单个字符 [0-9][a-z]
[^] 取反
[:upper:] 大写字母
[:lower:] 小写字母
[:alnum:] 字母和数字
[:alpha:] 大小写字母
[:digit:] 数字
[:blank:] 空白
[:punct:] 标点符号
匹配次数
* 表示任意次数
.* 任意字符任意次数
\? 0次 或者1次
\+ 表示至少1次 前面的\是用来转义后面的+号的
\{n\} 表示n次 花括号也需要转义
\{m,n\} 最少m次 ,最多n次
\{n,\} 至少n次
\{,n\} 至多n次
位置锚定
^开头
$结尾
^$ 空行
grep -v "^#" /etc/ssh/sshd_config |grep -v '^$' 显示不以#号开头的并且不是空行的。
分组:
grep "\(c\|C\)at" a
向后引用
\1 前面第一个括号出现的内容匹配完成之后再在后面出现一次
grep "\(l..e\).*\1" b
\2 前面第二个括号
\# 前面第# 个括号
扩展正则表达式
与正则表达式的唯一区别是不需要转义
grep -E -E 参数
19. linux 里面的压缩
gzip
压缩文件
gzip [option] ...file
-c 将压缩结果输出到屏幕,并保留源文件
-1到-9 是指定压缩比,默认是-9
-d 解压
zcat 不解压的情况下查看压缩包内的内容
解压文件
gunzip file
bzip2
bzip [option] file
直接压缩
-d 解压
-k 保留原来的文件
-1到-9是指定压缩比
bzcat file 在不解压的情况下查看压缩包的内容
解压文件
bunzip2
xz
xz [option] file
-k 保留原来的文件
-d 解压
-1 到 -9也是用来指定压缩比
xzcat fiel 不解压直接查看压缩包里的内容
解压文件
unxz file
zip
zip [option] file
解压文件
unzip file
tar
归档工具
tar cpvf etc.tar /etc
c 创建
v 显示过程
f 指定归档文件
p 把原来的属性也带过来
tar -r -f etc.tar /etc 追加
tar -t -f etc.tar 查看归档文件内的内容
tar xf etc.tar 解压文件
tar xf etc.tar /path 指定解压的路径
-z 使用gzip压缩
-j 使用bzip压缩
-J 使用xz压缩
-exclude 排除文件
split
split -b 指定大小 文件,(只能为文件) 切割以后的名字
-d 指定后缀为数字
-a 指定后缀为几位
cat 切割后的新文件 》 新文件
20 用户
超级管理员用户 root id=0
普通用户
系统用户:用来启动系统的一些服务和进程的用户,不可以登录 id 1-999 (centos7) 1-499 (centos6)
可登录用户:能登录系统的用户 id 1000-65535(centos7) 500-65535(centos6)
useradd
Usage: useradd [option] LOGIN
useradd -D
useradd -D [options]
普通用户的id 是从1000开始递增的, 系统用户的id 是从999开始递减的
-d 用来指定用户的家目录
-g 用来指定用户组的id
-G 用来指定用户组的附加组
-m 创建用户的家目录
-k 指定复制那个文件夹下的内容,需要和-m一起使用
-c message 指定用户的描述性信息
-N 不创建同名的组,以users为组
-s 指定用户登录后使用的shell
-u 指定用户的 id
-D 显示系统的默认配置
-D [options] 可以修改系统的默认配置
相关文件
/etc/default/useradd 创建用户的默认文件
/etc/skel/* 默认复制的文件
用户修改 usermode
-c 修改描述性信息
-d 修改家目录,默认不会创建新目录, 如果想移动家目录,则需要使用 -m
-g 修改用户的组
-G 修改用户的附加组,默认情况下是替换
-a 追加附加组
-l newname 修改用户的登录名称
-L 锁定用户 ,不能登录系统 ,修改密码默认情况下解锁
-U 解锁用户
-s 修改用户登录后的shell
-u 修改用户的uid
-e 年-月-日 修改用户的过期时间,过期以后不能登录
删除用户userdel
默认删除用户,不删除用户的家目录
-r 删除家目录
-f 强制删除
默认情况下,用户登录状态下是不能删除用户,强制删除用户以后,用户还是可以使用的
查看用户相关id
-g 只显示组 id
-G 只显示附加组 id
-u 只显示用户id
-n 显示名称 需要和guG 来配合使用
切换用户
su [options] [-] [USER [args...]]
切换用户的方式
完整切换:su -username 登录式切换 环境变量都会切换
不完整切换: su username 不会切换用户的环境变量家目录等。
root 切换普通用户不需要密码,非root 用户切换需要密码
切换用户执行命令
su -peiqi -c 'whoami' 执行完命令后再自动回到本用户
执行本身不能执行的命令
sudo 配置文件为 /etc/sudoers
mmp ALL=(ALL) NOPASSWORD:ALL
其中的NOPASSWORD是不需要输入密码
设置密码password
password [OPTION...] <accountName>
-d 删除指定用户的密码,删除之后就不能登录
-l 锁定用户
-u 解锁用户
-e 在下次登录以后强制用户修改密码
-f 强制操作
-x maxday 密码的最长使用时间
-n minday 密码的最短使用时间
-w warnday 密码过期前多长时间提醒
-i inactiveday 密码过期多长时间以后禁用
--stdin 从标准输入读取密码 echo '123'|passwd --stdin mmp
存放文件/etc/shadow
每一行的内容用冒号分隔开来,各部分内容的含义如下:
用户名
密码$ 加密方式(默认sha512)$盐$加密后的字符串$
从1970年1月1日到最近一次修改密码经过的时间
密码的最短使用时间(0表示随时可以修改)
密码的最长使用时间(99999表示永不过期)
密码过期多长时间提醒(默认是一周)
密码过期多长时间锁定
从1970年1月1日开始算起,多长时间后账号失效
密码的复杂性策略
密码必须包括数字、大小写、特殊字符
密码必须12位以上
不能为弱口令
必须为随机密码
3个月或者半年修改一次
机器免密登录
ssh-keygen 一路回车
ssh-copy-id 要登录的机器(机器的ip地址)
修改用户的密码策略 chage
chage --help
chage login 可以使用交互式的修改密码策略 例如:chage blood
chfn 修改用户的个人信息
21.用户组
- 超级用户组 root 0
- 普通用户组
- 系统用户组 1-999(centos7) 1-499(centos6)
- 可登录用户组 1000-65535(centos7) 500-65535(centos6)
groupadd
-g 指定组id
-r 创建系统用户组
组的文件
/etc/group
此文件下的每一行被冒号分成多个部分,每部分的意思如下
组名
密码占位
gid
组成员
/etc/gshadow
组名
密码
组管理员的密码
组成员
修改组信息
groupmod --help
-g 修改gid
-n 修改组名
删除组
groupdel 删除组
22.软件
windows 中的软件是以exe结尾的
(centos)redhat 是以rpm结尾的
yum

包的来源
光盘中获取
第三方网站
官方网站
自己做
https://pkgs.org
epel第三方包的集合地
rpm包的查询
rpm -q 查询指定的包是否安装 下面的短命令要和-q结合使用
-a all 表示当前系统安装的所有的包
-f filename 查询指定的文件由哪个包安装生成
-c 查看指定的包生成了哪些配置文件
-d 查询指定的包生成了哪些文档
-i 查询指定包的详细信息
-l 查询指定的包生成的文件
常用的选项
-qi
-qa
-ql
-qc
-qd
yum
yum会自动的解决依赖关系
仓库 存放的是多个包和包的源数据(所在仓库,依赖关系 )
仓库的位置
http://
https://
ftp://
file:// 本地的文件
配置文件存放在/etc/yum.repos.d中
yum的配置文件


yum命令
# yum repolist 查看仓库
# yum list 列出仓库里面所有的包,安装的包前面带@
# yum install 安装包
# yum reinstall 重新安装
# yum update 更新所有的包
# yum update pkg 更新指定的包
# yum downgrade 降级
# yum check-update 检查包是否可以更新
# yum remove 卸载包
# yum info pkg 显示包的详细信息
# yun clean all 删除源数据信息
# yum makecache 重新构建元数据信息
# yum search 搜索软件包(包名称,描述信息只要包括就可以搜索出来)
# yum provides 搜索命令是由哪个包提供的

软件包组
yum grouplist 查看包组
yum groupinstall "安装包的名称" 安装
yum groupinfo 获取包的信息,查看包组由哪些包组成
yum groupupdate 更新
yum groupremove 卸载包组
yum选项命令
-y 自动确认
-q 静默模式
源码安装
下载 wget
解压文件 tar xf
切换目录 cd
可以查看帮助信息 README INSTALL 文件
安装所需文件
编译(检查程序所需的文件) ./configure
构建安装程序 make
安装程序 make install
配置环境变量
23.磁盘管理
查看磁盘空间的占用
df
-h 显示人类易读的方式
linux 下的磁盘命名格式
/dev/sd[a-z]
查看目录的占用空间
du
-s 查看目录
-h 显示人类易读的方式
du -sh /*
dd
dd if=/dev/zero of=file bs=size count=number
if =input file 表示从inputfile里面读取内容
of = output file 表示将读取到的内容写入到什么地方
bs = byte size ,可以是 k ,M ,G ,T
RAID阵列卡
raid0 数据分别向多个磁盘分开写,
读、写速度有所提升
可用空间N(磁盘的个数)*每一块的大小
没有容错能力
最少磁盘数为2
raid1 在多个磁盘里重复写数据
读有所提升,写性能下降
可用空间,所有磁盘中最小的一块大小。
有容错能力
最少是2 ,2n
raid5
读写速度有提升
可用空间(n-1)*大小
有容错能力,最多可以坏一块硬盘
最少要三块硬盘
raid6
读写速度有所提升
可用空间(n-2)*大小
有容错能力,最多可以坏两块
最少要4块
raid10
先实现raid1,再实现raid0
读写性能有提升
可用空间n*大小/2
有容错能力,每组镜像可以坏一块
最少四块
raid01
先实现raid0,再实现raid1
读写性能有提升
可用空间n*大小/2
有容错能力,只能坏同一组的
最少要4块
24.网络
网络的基础知识
ipv4: 4段 32位
网络位+主机位
网段
主机
A
网络位为8位
第一位不可以变
0 0000001
0 1111111
1-126
127 有特殊用途,回环地址
可用网段数: 2^7-1
每一个网段有多少可用主机:2^24-2
有两个是不可以用的:
主机名全为0,表示一个网段
主机为全为1,表示网段里面的广播地址
私有地址:自己可以用的
10段
公有地址:都可以访问的地址
主机位为24位
B
16位网络位
16位为主机位
有两位是不可变的
10 000000 00000000 128
10 111111 11111111 191
有多少可用网段:2^14
每个网段有多少可用主机:2^16-2
私有地址:172.16-173.31
C
前24位为网络位
后8位为主机位
网络位,前三位固定为 110
110 00000 00000000 00000000
110 11111 11111111 11111111
192 -223
可用网段:2^21
每个网段有多少可用机器:2^8-2
私有地址:192.168.1-192.168.255
D
作为多播地址
要求前四位为1110
1110 0000 00000000 00000000 224
1110 1111 11111111 11111111 239
E
作为科研使用
CIDR(无类域间路由)
网路位向主机位借位
b类
16+5
21位网路位, 11位主机位,2^11 2048-2=2046
c类
网络位向主机位借位:
24+6 网络位30位
主机位: 2^2-2 =2
子网掩码
网络位全为1,主机位全为0
ip地址和子网掩码按位与来确定属于那个网段
按位与:
只要有0就是0,全部为1才为1(适用于二进制)
1&0 0
2&3 2
按位或
只要有1就为1, 全部为0才为0(适用于二进制)
1|0 1
2|3 3
异或
相同为0, 不同为1 (针对于二进制)
1^0 1
2^3 1
3^ 5 6
取反
-(n+1)
~2 3
~-4 3
左移
n*2的左移次方
2<<2 8
10<<2 80
右移
n /2的右移次方(向下取整)
12>>2 3
13>>2 3
50>>2 12
2>>2 0
例如A类地址,通过ip地址和子网掩码来确定属于哪个网段
子网掩码,网络位全为1,主机位全为0
1.1.1.1/8
ip地址:00000001.00000001.00000001.00000001
子网掩码:11111111.00000000.00000000.00000000
00000001.0.0.0
属于1.0.0.0网段
10.20.43.65/10
00001010.00010100.0.0
11111111.11000000
10.0.0.0
25.网络配置
手动
ip
配置文件
自动分配
dhcp服务
ip
增加ip地址
ip a add 192.168.21.23/24 dev ens33
删除ip地址
ip a del 192.168.21.23/24 dev ens33
增加ip地址并增加别名
ip a add 192.168.21.23/24 dev ens33 label ens33:0
删除
ip a del 192.168.21.23/24 dev ens33 label ens33:0
网卡配置文件
配置文件:/etc/sysconfig/network-scripts/ifcfg-name


主机名
获取主机名 hostname
设置主机名 hostname name
配置文件
/etc/hostname centos7
/etc/sysconfig/network centos6
永久生效
hostnamectl set-hostname name
修改配置文件
ss 、netstat
ss -help
ss命令用来打印linux系统中网络的状态信息,可以让管理员更好的了解网络情况 。
-a 所有
-l 监听中的
-t tcp
-u udp
-x unix socket 文件
-p 相应的程序
-n 显示服务的端口号
常用组合
-anlp
-tnlp
-unlp
* ipv4 0.0.0.0 表示当前主机上所有的ip 地址
:: ipv6所有地址
解析
- 本地解析 /etc/hosts
- dns 解析
- 根结点 总共有13组
26.wget
用来下载网络资源
-q 静默模式
-c 断点续传
-O filename 另存为的名称
-P 保存到指定的目录
-r 递归下载
-p 下载所有的html文件
27.systemctl
管理服务 service
start name 。。 启动服务
stop name ... 关闭服务
reload name 重读配置文件 平滑重启
restart name 重启服务
status name 查看状态
enable name 开机自启动
disabled name 关闭开机自启动
systemctl list-unit-files|grep name 查看服务是否开机自启动
centos 6
service 动作 服务
chkconfig 用来管理服务的开机启动
28.linux计划任务(定时任务)
vim /etc/crontab



crontab命令
-e 编辑定时任务文件
-u 指定用户,如果不写默认是当前用户
-l 列出当前用户的计划任务
-r 删除用户的计划任务
默认写入的文件在/var/spool/cron/username
crontab的日志
/var/log/cron
命令最好写绝对路径
计划任务作用
定时删除
定时备份
同步时间
29.ping
-c 指定次数
ICMP 协议
30.进程
查看进程的命令ps
ps --help
ps [options]
支持的命令格式
unix格式:-h -e
BSD格式:a,x u
GNU长格式:--help
选项





31.系统工具












32.安全



33.虚拟环境





34.mysql
mariadb是mysql的分支
可以直接在官方网站下载
下载
wget http://mirrors.sohu.com/mysql/MySQL-5.6/MySQL-5.6.40-1.el7.x86_64.rpm-bundle.tar
解压
tar xf MySQL-5.6.40-1.el7.x86_64.rpm-bundle.tar
默认解压在当前路径 ll 查看内容
安装
yum install -y *.rpm
默认安装位置: /var/lib/mysql





35.mysql 的主从

在主服务器的配置文件中写如下代码:
进入配置文件: vim /etc/my.cnf




mysql配置文件



36.数据库备份








37.nginx
web 服务 apache 也一个web服务
Tengine 淘宝网 用的web服务,在nginx的基础上进行封装得到的
django web框架
lvs 负载均衡 中国人 章文嵩 博士写的
vue 中国人开发的 ,尤雨溪
F5 A10 硬件负载
下载
在这个网站:http://nginx.org/en/download.html 复制下载链接,在centos 中使用wget下载
安装
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar xf nginx-1.18.0.tar.gz
cd nginx-1.18.0
yum install gcc zlib2-devel pcre-devel openssl-devel

目录结构



命令格式

ngunx的配置文件
vim conf/nginx.conf








38.nginx的日志


39.反向代理



40.nginx location 匹配 规则


41.location分离




浙公网安备 33010602011771号