就业方向

运维工程师:Linux系统运维工程师、window系统运维工程师(桌面运维)
监控运维工程师:银行等大厂
监控运维开发工程师
运维开发工程师:python
自动化运维工程师(shell)
技术支持

等保2.0

网络运维:腾讯云
业务运维 应用运维

Linux介绍

Unix一开始是开源的,后来被AT&T收回版权
Linus torvalads在1991年针对386(个人计算机)
开发Unix和Linux代码是由%90C语言和%10汇编组成
Linux吉祥物是企鹅
Linux是一个内核,不是操作系统(centos redhat ubuntu)
核心理念:万物皆文件

优缺点

安全稳定花费小
多任务多用户
消耗资源小
内核小、支持多种电子产品

部分软件不支持(可以通过安装win)
对用户(新手)不太友好—>无图形化界面需要学习命令行

内核

uname -r #查看内核版本
主版本.次版本.释放版本-修改版本
次版本:如果是偶数、通常来说是稳定版本,奇数为开发版本,内核开发人员使用
释放版本:对次版本的改动,增加了一些功能
修改版本:每编译一次会+1

历史介绍

1994年林纳斯发布Linux-v1.0

开源共享精神

GUN JPL通用公共许可证
BSD许可协议
apache许可证版本许可协议
MPL许可协议
MIT许可协议

常见Linux系统

Redhat红帽企业级系统
centos红帽社区级系统
fedora:试验田
openSUSE:德货—蜥蜴标志
gentoo:高度自定制
Debian:硬件架构支持非常优秀
Ubuntu:派生于Debian,兼容能力强
archlinux:界面优化,高度自定制
deepin:国产级操作系统

获取镜像

阿里云镜像站:https://opsx.alibaba.com/mirror

虚拟网络相关

image.png
image.png

三种模式

仅主机模式
image.png
nat模式
image.png
桥接模式
虚拟机处于物理机的局域网中,将虚拟网卡桥接到物理网卡下,不通过虚拟网卡,物理网卡充当整个虚拟机的上行链路(流量出去的接口),虚拟机的IP由物理机局域网中的路由器分配,桥接模式下不用(无法)进行DHCP设置,分配的IP会随物理机局域网的变化而变化,图示虚拟机流量出入走向。
image.png

镜像安装

安装时若未开启虚拟网卡,安装成功后可使用nmtui对虚拟机的网卡进行配置,将其设为active状态
image.pngimage.png

ssh远程连接

远程连接命令
ssh 用户名@密码

ssh ip
用户名-密码
配置IP地址
1.DHCP自动获取:dhclient 自动获取IP地址(前提NAT模式的DHCP服务启用)
2.手动配置:
—通过命令
ip address add x.x.x.x/24 dev ens33
ip link set ens33 up
—通过配置文件
配置文件路径:/etc/sysconfig/network-scripts/
ifcfg-ens33文件
……
通过DHCP方式获取IP地址
TYPE=Ethernet
BOOTPROTO=dhcp
NAME=ens33
DEVICE=ens33
ONBOOT=yes

静态手工配置:
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=X.X.X.X
NETMASK=X.X.X.X
GATEWAY=X.X.X.X
虚拟机获取IP地址之后,尝试在PC机上进行ping操作

Linux文件系统介绍

文件系统

Windows:右斜杠
Linux:左斜杠

文件的组成

file=metadata+data
metadata:文件格式,文件名称,大小等元数据
data:文件真正的数据内容

文件命名规则

严格区分大小写
可以使用除/外的任意字符
不超过255个字符—>文件系统决定
以.开头的文件为隐藏文件(ls -a 参数查看)

文件路径:分隔符/

绝对路径:从“/”位置开始—>根/root/
相对路径:从当前位置起始,表示方式:
./
etc/……
/etc/ 当前位置为根目录
../ 上一层目录
cd:切换目录,change directory
pwd:显示当前路径

文件类型

普通文件类型【-】
目录文件类型【d】
块设备文件类型【b】
字符设备文件类型【c】
管道文件类型【p】
套接字文件类型【s】
链接文件类型【l】
查看文件类型:ll/文件名/stat

目录结构

bin:binary缩写,存放经常使用的命令
sbin:超级管理员root经常使用的命令
boot:启动Linux所需要的核心文件
dev:device的缩写,Linux外部设备
etc:系统管理所需要的配置文件和子目录
home:用户的主目录
root:root用户的主文件
lib64:程序运行时所依赖的库文件(包括内核模块)->x86_64系统
lib:程序运行时所依赖的库文件(包括内核模块)
media:自动识别的设备(系统启动时自动挂载)
mnt:用户临时挂载别的文件夹
opt:安装额外软件
proc:虚拟目录,系统信息
run:存储系统运行时的相关信息
srv:服务启动后所需要的数据
sys:子文件系统,映射内核信息
tmp:存放一些临时文件
usr:用户的应用程序和相关文件
var:经常被修改的文件—>/var/log

bash功能特性

shell程序找到输入命令所对应的可执行程序或代码,并由其分析后提交给
内核分配资源,将其运行起来,表现形式为一个或多个进程
image.png
stat -> 寻找可执行程序或代码 -> 返回信息**shell可执行两类命令:
内部命令:shell自带命令
外部命令:某文件系统路径下有相对应的可执行程序文件
type 命令 #查看是否为shell内部命令
image.png

命令格式:
command [options…..] [arguments….]
options: 长短选项 - — 多个短选项可以合并输入
arguments: 命令作用对象/命令提供数据

命令执行结果:成功或失败
echo $?
0:表示上一次命令执行成功
非0:上一次命令执行失败

注意事项:
多选项及各参数使用空白字符隔离,短选项可以合写
取消命令执行:CTRL+c

路径补全:
tab键自动补全,唯一命令
两次tab键会显示所有可匹配命令

命令别名:
查看别名:alias
定义别名:alias [name]=[value] #只对当前shell有效
alias ls=’ls —color=auto’
取消别名:
unalias [name]
对当前shell生效:写入~/.bashrc配置文件中,并让其生效

历史命令:
查看命令历史:history
命令历史文件:~/.bash_history
登录shell时会读取命令历史文件,并将后续操作命令添加到历史配置文件中
history相关参数:
-a: 追加本次会话执行的命令历史列表至历史文件中
-d: 删除历史中指定的命令
-c: 清空历史命令

快捷键操作:
!# : 调用命令历史列表中的第#条命令
!string: 调用历史中最近一条以string开头的命令
!!: 调用上一条命令

Linux基础命令

ls —> 搜寻可执行程序或者代码,搜寻的路径是?
shell程序帮助搜寻可执行程序的路径定义:
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
command —help/h
man手册 —> 更加详细的帮助手册
命令帮助使用:
1. help方式
2. man手册
3. 信息页(info)
4. 程序本身的帮助文件(README)
5. 程序的官网文档
6. 发行版本官方文档
7. Google
目录管理类命令
创建目录
mkdir
-p: no error if existing, make parent directories as needed 递归创建
-v:print a message for each created directory 输出创建过程信息
-m:—mode=MODE set file mode (as in chmod), not a=rwx - umask
可以执行创建目录的权限,如果没有指定,默认是rwx - umask

删除目录
rmdir
-p: 递归删除
-v:显示删除过程

修改目录名
mv 完成重命名操作(文件重命名也是这样)

tree命令: 可以展开目录结构
[root@node1 tmp]# tree eagles/
eagles/
├── linux
│ ├── ccie
│ └── rhce
└── network
├── ccie
└── rhce
文件查看命令
- cat
- tac
- more/ -less —-> f b q 退出
- head
[root@localhost ~]# head —help | more
Usage: head [OPTION]… [FILE]…
Print the first 10 lines of each FILE to standard output.
-c, —bytes=[-]K print the first K bytes of each file; # 显示前多个字节
-n, —lines=[-]K print the first K lines instead of the first 10 # 显示前n行
- tail
[root@localhost ~]# tail —help
Usage: tail [OPTION]… [FILE]…
Print the last 10 lines of each FILE to standard output.
With more than one FILE, precede each with a header giving the file name.
With no FILE, or when FILE is -, read standard input.
-c, —bytes=K output the last K bytes; or use -c +K to output
bytes starting with the Kth of each file
-n, —lines=K output the last K lines, instead of the last 10;
-f, —follow[={name|descriptor}]
output appended data as the file grows;
an absent option argument means ‘descriptor’ # 表示追踪文件内容
实时追踪日志信息
tail -f ——> tailf
文件时间戳:
stat命令: 查看文件的元数据
Access: 2019-10-26 02:30:51.448166683 -0400 访问时间(读取文件内容) atime
Modify: 2019-10-26 07:41:20.929985048 -0400 修改时间(改变文件内容) mtime
Change: 2019-10-26 07:41:20.929985048 -0400 改变时间(元数据改变) ctime
-touch
-a change only the access time
-m change only the modification time
-t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time # 指定时间格式
touch
use [[CC]YY]MMDDhhmm[.ss] instead of current time
touch -a -t 10040400 1.txt
touch -m -t 10040400 1.txt
文件管理类命令:
- cp
Usage: cp [OPTION]… [-T] SOURCE DEST
or: cp [OPTION]… SOURCE… DIRECTORY
or: cp [OPTION]… -t DIRECTORY SOURCE…
Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.
SRC如果是单个文件:
DEST不存在时,将SRC文件写到DEST中
DEST存在时,将SRC文件内容覆盖至DEST中
DEST是个目录:创建新文件并写入内容
SRC如果是多个文件:
DEST必须是目录
SRC如果是目录
使用-r参数
DEST为目录:
DEST存在:一致性文件,包括目录
DEST不存在:会创建目录,一致性文件
DEST为文件:
肯定不可以,会报错
常用选项:
-i: 交换式
-r/R: 递归复制目录和文件
-a: 归档
-p:连同属性复制
mv命令:
重命名/剪切
类比cp命令
-i
-f
rm命令:删除文件
-i: 交换式
-f: 强制删除
-r: 递归(可以删除目录)

文件链接

链接方式

  1. 软链接:类似于我们Window上的快捷方式<br /> 硬链接:为inode分配多个文件名,通过文件名找到inode,从而读取文件信息<br />ln命令<br />[root@test ~]# ln --help<br />Usage: ln [OPTION]... [-T] TARGET LINK_NAME (1st form)<br /> or: ln [OPTION]... TARGET (2nd form)<br /> or: ln [OPTION]... TARGET... DIRECTORY (3rd form)<br /> or: ln [OPTION]... -t DIRECTORY TARGET... (4th form)<br />OPTION<br />-s:建立软链接,默认情况下为硬链接
  1. ln -s 源文件名 创建目标位置
  2. ln -s 1.txt /tmp/11.txt #在/tmp中创建1.txt的软链接文件11.txt

-f:强制

  1. [root@test ~]# ll /tmp/2.txt
  2. lrwxrwxrwx. 1 root root 5 Oct 26 21:15 /tmp/2.txt -> 2.txt
  3. [root@test ~]# ll /tmp/2.sh
  4. -rw-r--r--. 2 root root 6 Oct 26 21:14 /tmp/2.sh
  5. [root@test ~]# ll 2.txt
  6. -rw-r--r--. 2 root root 6 Oct 26 21:14 2.txt

当我们去创建硬链接的时候,源文件和链接文件的links值会加一
由源文件和它的硬链接文件的总个数和决定,并且当links值为0也就意味着该文件不存在了
创建软链接的时候,源文件和链接文件的links值不会改变

  1. [root@test ~]# stat 222.sh
  2. File: 222.sh
  3. Size: 4 Blocks: 8 IO Block: 4096 regular file
  4. Device: fd00h/64768d Inode: 33575021 Links: 3
  5. [root@test ~]# stat 22.sh
  6. File: 22.sh
  7. Size: 4 Blocks: 8 IO Block: 4096 regular file
  8. Device: fd00h/64768d Inode: 33575021 Links: 3

硬链接:
1.不论是否修改源文件,还是修改链接文件,另一个文件中的数据都会改变
2.无论是删除源文件还是链接文件,只要有一个文件存在,这个就可以被访问(即保证links值不为零即可)
3.硬链接不会建立新的inode信息
4.硬链接无法跨文件系统(分区)建立
5.硬链接不能链接目录
软连接:
1.不论是修改源文件还是链接文件,另一个文件中的数据都不会改变
2.删除软链接文件,源文件不受影响,但删除源文件,软链接文件找不到实际数据,显示文件不存在
3.软链接会建立新的inode和block信息
4.软链接是可以跨分区建立
5.软链接可以链接目录

重定向

程序=指令+数据
数据(input/output)

输入输出数据
标准输出
标准输入
标准错误输出

输出重定向:

:覆盖重定向,会覆盖原有内容
>>:追加重定向,不会覆盖原有内容,会追加内容
2>:覆盖重定向错误输出数据流
2>>:追加重定向错误输出数据流

标准输出和错误输出到各自不同的位置

command 1> 标准输出文件 2> 错误输出文件
/dev/null:垃圾桶(回收站)

合并标准输出和错误输出为同一个数据流进行重定向

&>:覆盖重定向
&>>:追加重定向
2>&1:将错误输出流重定向到标准输出文件中

  1. [root@test ~]# data 1> /tmp/right.out 2> /tmp/error.out 2>&1

1>&2:将标准输出流重定向到错误输出文件中

  1. [root@test ~]# date 1> /tmp/right.out 2> /tmp/error.out 1>&2

标准输入

覆盖:cat > /path/to/file << EOF
….
EOF
追加:cat >> /path/to/file << EOF
….
EOF

管道

command1 | command2 |command3 | ……
命令由左向右依次执行
最后一个命令会在当前shell进程的子进程中执行

tr命令

[root@test ~]# tr —help
Usage: tr [OPTION]… SET1 [SET2]
Translate, squeeze, and/or delete characters from standard input,
常用参数:
-d: 删除
‘1-9’ ‘10-19’
‘a-z’ ‘A-Z’
1.将/etc/passwd文件中的前5行内容转换成大写后保存至/tmp/passwd.out文件中

  1. head -n 5 /etc/passwd | tr 'a-z' 'A-Z' > /tmp/passwd.out

wc命令

[root@test ~]# wc —help
Usage: wc [OPTION]… [FILE]…
or: wc [OPTION]… —files0-from=F
Print newline, word, and byte counts for each FILE, and a total line if
more than one FILE is specified. With no FILE, or when FILE is -,
read standard input. A word is a non-zero-length sequence of characters
delimited by white space.
The options below may be used to select which counts are printed, always in
the following order: newline, word, character, byte, maximum line length.
用于统计信息
-l: 行数
-c:字符数(含空格及每行末尾的空格,及光标在此行能跳动的格数)
-w:单词数(以空格为分割符计算)

cut命令

[root@test ~]# cut —help
Usage: cut OPTION… [FILE]…
Print selected parts of lines from each FILE to standard output.
获取部分值
-d: 指定分隔符
-f: 指定字段, 第1列为起始字段
-f#
-f#-#
[root@test ~]# cut -d: -f3-4 /etc/passwd
1.将/etc/passwd的前10行内容的第3列数据保存至/tmp/passwd.out2
head -n 10 /etc/passwd | cut -d: -f3 > /tmp/passwd.out2

sort命令

排序命令,默认以ASCCI排序
常用选项:
-f: 忽略大小写
-r: 逆序
-n: 通过数值进行排序
-t: 字符分隔符
-k: 以指定字段为排序标准(后需指定分隔符)
-u: 排序后可以进行去重

  1. [root@test ~]# sort -t: -k3 -n -r /etc/passwd # 以:为分割符,第3字段为排序标准
  2. 进行数值逆排序

uniq命令

去重命令,默认显示一次
-c:显示每行重复的次数
-d:仅显示重复的行
-u:仅显示不重复的行
以:为分隔符,取出/etc/passwd文件中的第6至第10列,并将这些信息按照第3字段进行
数值排序后,仅显示一个字段

  1. [root@localhost ~]# cut -d: -f6-10 /etc/passwd | sort -n -k3 -t: | uniq -c