文章目录
1.网络的三种连接方式
1.1网段的概念
通俗来说一个ip地址可写为XXX.XXX.XXX.XXX,只要前三组数据相同,就表示在同一网段,表示可以相互通信。
1.2基础概念
linux系统有三种网络模式分别是桥接模式、NAT模式、仅主机模式,名称分别为vmnet0、vmnet1、vmnet8,但是物理机上的虚拟网卡只有vmnet1和vmnet8,具体原因请看一下信息。
1.3桥接模式(Bridged)
桥接模式就是在物理机的网卡和虚拟的网卡上建立一个网桥,可以把物理机的网卡想象成交换机,这样就可以和同一网段上的主机进行通信了。(如果需要联网,则网关与DNS需要与主机网卡一致。)
1.linux配置外网和DNS目录:/etc/sysconfig/network-scripts/ifcfg-ens32
2.由于桥接模式使用的是物理机的网段,因此占用物理机的网段资源。

1.4NAT模式(地址转换模式)
虚拟NAT设备和虚拟DHCP服务器来实现虚拟机上网功能

1.5.仅主机模式
Host-Only模式其实就是NAT模式去除了虚拟NAT设备,然后使用VMware Network Adapter VMnet1虚拟网卡连接VMnet1虚拟交换机来与虚拟机通信的,Host-Only模式将虚拟机与外网隔开,使得虚拟机成为一个独立的系统,只与主机相互通讯如图。

2.磁盘分区机制
2.1原理介绍
- Linux无论有几个分区,分给哪一个目录使用,他归根结底就只有一个根目录,一个独立切唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分。
- Linux采用了一种叫“载入“的处理方法,它的整个文件系统包含了一整套的文件和目录,且将一个分区和一个目录挂载起来,这时要在入的一个分区将使它的存储空间在一个目录下获得。
2.2查看磁盘分区命令
lsblk
lsblk -f
2.3硬盘说明

例如:

2.4给虚拟机增加硬盘(centOS7)
步骤:1.虚拟机增加硬盘 -> 2.创建分区 -> 3.格式化硬盘 -> 4.暂时挂载硬盘 ->5.永久挂载硬盘
- 1.虚拟机增加硬盘






- 2.格式化硬盘,为硬盘设置类型




- 3.格式化分区


- 4.暂时设置挂载卷


- 5.永久设置挂载卷(修改/etc/fstab文件)


2.5查看磁盘容量
df -h查看磁盘的相关信息du -h查看文件的磁盘容量wc查看文件的行数 字数 字节数
3.虚拟机快照
如果你在使用虚拟机系统的时候,你想回到原先的某一个状态,也就是说你担心可能有些误操作造成系统异常,需要回到原先某个正常运行的状态,vmware也提供了这样的功能,就叫快照管理。
4.目录结构
linux的文件系统采用级层式的梳妆目录结构,在此结构的最上层是根目录“/”,然后在此目录下创建其他的目录。
/bin存放最经常用的命令/sbin存放系统管理员使用的系统管理程序/home存放普通用户的主目录,每个用户都有一个自己的目录,一般该目录名是以用户账号命名/root该目录为系统管理员的用户主目录/lib系统开启所需要最基本的动态连接共享库,其作用类似于Windowsli的DLL文件,几乎所有的应用程序都需要用到这些共享库/lost+found这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件/dev类似于Windows的设备管理器,把所有硬件都已文件的形式存储/medialinux系统会自动识别一些设备,例如U盘,光盘mnt系统提供该目录是为了让用户临时挂在别的文件系统,我们可以将外部的存储挂载在```mnt``上,然后进入该目录就可以查看里面的内容了/opt这是给主机额外安装软件所存放的目录。/etc所有系统管理所需要的配置文件和子目录/usr这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于window的program files目录/boot存放linux使用的一些核心文件/proc虚拟目录,系统内存映射,不能动/srcservice的缩写,该目录存放一些服务启动之后需要提取的数据/sys用来看内核态的一些驱动或者设备/tmp用来存放一些临时文件/usr/local用来安装通过编译源码方式安装的程序/var将经常被修改的目录放在这个目录下,包括各种日志文件selinuxSELInux是一种安全子系统,它能控制程序访问特定文件,有三种工作模式,可以自行设置。
5、关机、重启、登录注销命令
shutdow -h now立刻进行关机shutdow -h 11分钟后进行关机shutdown -r now立刻进行重启halt关机reboot重启sync把内存的数据同步到磁盘(注意每次重启/关机都要做一次,虽然)su - 登录名临时切换账号logout退出当前用户,在图像化界面上无效
6.用户操作
6.1常用操作
useradd 用户名添加用户passwd 用户名修改用户密码userdel 用户名删除用户,也可以通过删除用户的主目录来删除用户userdel -r 用户名id 用户名查看当前用户su - 用户名切换用户who am i查看当前登录用户
6.2用户组
类似于角色,系统可以对有共性/权限的多个用户进行统一的管理
6.2.1操作
groupadd 组名:新增组groupdel 组名:删除组useradd -g 用户组 用户名:增加用户名的时候直接设置用户组,不设置用户组,会自动创建一个与登录名相同用户组usermod -g 用户组 用户:修改用户名的用户组
6.2.2与用户组相关的文件
/etc/passwd:记录用户信息/etc/shadow:口令配置文件/etc/group:组配置文件
7.指定运行级别
- 0:关机
- 1:单用户【找回丢失密码】
- 2:多用户没有网络服务
- 3:多用户状态有网络服务常用
- 4:系统未使用保留给用户
- 5:图形界面常用
- 6:系统重启
可以使用
init 指令级别来切换电脑的运行指令
7.1开机流程

7.2systemctl指令
可以不用写service,比如
systemctl stop firewalld.service可以写成systemctl stop firewalld
ls /usr/lib/systemd/system | grep 服务名:查询当前服务是不是被systemctl管理systemctl start 服务名:临时开启服务,系统重启重启后不生效systemctl stop 服务名:临时关闭服务,系统重启重启后不生效systemctl status 服务名:查看当前服务状态,也可以用systemctl list-unit-files | grep 服务名来查询systemctl disable 服务名:永久关闭服务systemctl enable 服务名:永久开启服务systemctl is-enable 服务名:查看当前服务是否是永久开启
7.3firewalld指令
firewall-cmd --permanent --add-por=端口号/协议:打开端口firewall-cmd ==permanent --remove-port=端口号/协议:关闭端口firewall-cmd --reload:打开/关闭端口,需要重新执行这条语句firewall-cmd --query-port=端口/协议:查询端口是否打开
7.4top指令
动态显示进程情况,与
ps命令不一样的是,ps是显示一刻的时间,按下top命令后,当你再C/P,可以分别按照CPU/内存降序排列

7.5netstat命令
查看网络情况
-an:以一定顺序排列输出-p:显示那个进程在调用

8.帮助指令
- mam:获得帮助信息
基本语法:man [命令或配置文件]
- help指令
基本语法:help 命令(功能描述:获得shell内置命令的帮助信息)
9.文件操作指令
由于我已经经过了公司的历练,所以文件操作方面指令,我就没看视频,如有不同,私我
pwd:显示当前文件的绝对路径,这个绝对路径指的是以根目录/为基础的相对目录cd:切换目录ls:显示当前目录下的所有子目录和文件的名称-l:以列表的形式显示当前目录,显示内容比较详细,比如权限…-a:显示所有文件和目录,包括隐藏文件
mkdir:创建目录-p:创建多级目录
cp:拷贝目录-r:递归拷贝
less:分屏查看文件,可以用方向键控制tail:输出文件尾部的内容>和>>(重点)
>用来将内容覆盖到文件中,例如ls l > a.txt将当前目录下的文件写入到a.txt中(覆盖写),>>将内容写到文件最后一行,例如ls l >> a.txt将当前目录下的文件写入到a.txt中(追加写)
ln:软连接,类似于window中的快捷方式,语法:ln -s 源目录 软连接名history:查看已经执行过的历史记录touch:创建一个空文件
10.时间日期类(非重点了解)
date显示当前时间date +%Y显示当前年份date +%m显示当前月份date +%d显示当前是哪一个天date "+%Y-%m-%d %H:%M:%S"显示年月日时分秒date -s 字符串时间设置当前时间cal查看日历
11.搜索查找类
find:在指定目录下遍历查找-name:根据名称查找,例如find /etc -name *.txt-user:根据用户查找-size:根据大小进行查找
locate:将目录结构保存到数据库中,可以快速定位文件位置,使用前必须先执行updatedbwhich:查看指令的所在位置grep:过滤查找,一般和管道符号|一块用,例如cat a.txt | grep ext,语法:grep 选项 查找内容 源文件-n显示行数-i忽略大小写
12.打包与压缩
- zip文件:
zip和unzip - gz文件:
gzip和gunzip - tar.gz文件:
tar -zcvf 压缩文件名 源文件和tar -zxvf 压缩文件
13.权限和组
chown:改变文件的持有者- ```chgrp``:改变文件的所在组
chmod:修改文件权限
13.1权限的基本介绍
Linux通过10位管理文件的权限.
- 其中第一位是文件类型(
-代表普通文件,d代表目录,l代表软连接,b代表块设置,如硬盘,c代表
字符设备,如键盘、鼠标- 第2-4位代表文件持有者的权限,对于文件来说r->读,w->写,x->可执行,对于目录来说r->读,w->修改,x-
可进入- 第5-7位代表文件所在组的权限,8-10代表其他人的权限
14.任务调度(crond)
任务调度也就是我们常说的定时任务,只不过在linux中叫做任务调度
14.1cron表达式
- 语法:
* * * * *,分别代表分 时 天 月 星期 - 特殊的符号:
*:任意,:不连续的时间,如0 8,12,14 * * *是每天的8点,12点,14点执行-:连续的时间,如0-10 * * * *是每小时的前10分钟执行*/n:每隔多久执行一次
14.2crontab
- 语法:
cron tab 选项-e编辑crontable定时任务-l查询crontab任务-d删除当前用户的所有crontab任务
- 重启crontab:
service restart crontab
14.3at命令
一次性定时任务调度队列,由于linux的cron中没有提供年份设定,所以他就有用了
- 语法:
at 选项 时间 

使用方法:
- 设置时间
at 时间- 输入命令
ctrl + d保存at
15.进程
进程简称Pid,也就是程序在内存中的运行状态
15.1查询进程
ps:查看目前系统中,有哪些正在执行的,有那些正在执行,以及它们执行的状况,可以不加任何参数。-u:以用户的形式显示信息-x:显示后台进程运行的参数-a:显示当前终端的所有进程-e:显示进程的所有信息,与-a相同-f:显示父进程

pstree:树形显示进程
注意使用前需要按照psmisc,命令是
yum install psmisc
15.2杀死进程
kill:杀死进程-9:强制杀死
-killall:杀死进程和进程下的所有子进程
16.rpm包管理
rpm用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中,它生成具有.RPM扩展名的文件,RPM是RedHat Package Manager的缩写,类似于windows的setup.exe,这一文件格式名称虽然打上乐RedHat的标志,但理念是相通的。
rpm -qa | grep 软件:查看当前系统中是否安装了firefoxrpm -e RPM包的名称:卸载rpm包rpm -ivh RPM包的全路径名称:安装rpm包
17.yum
yum是一个Shell前端软件包管理器,基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包
yum list:显示软件列表yum install xxx:软件安装
18.Shell编程
shell是一个命令行解析器,它为用户提供了一个向linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动,挂起,停止甚至是编写一些程序。
18.1脚本格式要求
- 脚本开头必须声明shell形式(一般我们使用bash shell,所以要写上
#!/bin/bash - 脚本需要有可执行权限
- 不能随便使用空格
18.2变量
18.2.1规则
- 变量名称可以由字母、数字、下划线组成,但是不能以数字开头。
- 等号两侧不能有空格
- 变量
- 变量名称一般习惯为大写(规范)
将命令的返回值赋值给变量
- A=
date反引号,运行里面的命令,并把结果返回给变量A- A=$(date)等价于反引号
18.2.2语法
- 系统变量
Linux Shell中的变量分为系统变量和自定义变量,系统变量:
$HOME、$pwd等
- 自定义变量
基本语法:
- 定义变量:变量名=值(==需要注意的是变量赋值的时候不需要``$变量```这种做法)
- 撤销变量:unset 变量名
- 静态变量:readonly 变量,不能unset
- 全局变量
基本语法:
- 定义全局变量:
export 变量名=变量值- 配置信息立即生效:
source 配置文件
- 位置变量
执行shell脚本时,可以携带的参数,如
./auto.sh 100 2000,这里的100和200也就是我们常说的位置变量
基本语法:
$n:表示第几个参数,如$1,${10},代表第一个参数和第十个参数,十以上的参数要用{}包裹
$*,$@:所有参数,只不过$*是把所有位置变量当成一个,$@是把每个位置变量当成一个变量用
$#:参数个数
- 预定义变量
就是shell设计者事先已经定义好的变量,可以直接再shell脚本中使用
$$:当前进程的进程号$!:最后一个进程的进程号$?:最后一次执行的命令的返回状态,如果这个变量的值为0,证明上一个命令正确执行。
19.运算式
基本语法
- 1.“
$((运算式))” 或"$[运算]"或者expr m + n //expression表达式
$()与$[]的区别:$()是用来取shell命令了,$[]里包含linux变量和运算符
- expr m - n
- expr * / % 乘 除 取余
!:取反运算符
20.条件判断
条件判断类似于Java中的Boolean表达式,一般是要与分支语句相结合使用
- 字符串比较:
=- 数字比较:
-lt:小于-le:小于等于-eq:大于-gt:大于-ge:大于等于-ne:不等于- 按照文件权限进行判断
-r:有读的权限-w:有写的权限-x:有执行的权限- 按照文件类型进行判断
-f 文件路径:文件存在并且是一个常规的文件-e 文件路径:文件存在-d 文件路径:文件存在并是一个目录
== 注意:基础语法:[ 条件判断 ],例如:[ $a -lt 10 ],三目表达式:[ condition ] && 符合条件执行 || 不符合条件执行==
21.分支语句
21.1 if
我就不介绍单分支了,类比多分支,就可以推出单分支语句,需要注意的是if语句中括号中的条件判断左右要各空一格,条件判断运算符左右各空一格
if [ 条件判断 ]
then shell命令
elif [ 条件判断 ]
then shell命令
else
shell命令
fi
21.2 case
case 变量 in
值1)
;;
shell表达式
值2)
;;
shell表达式
*)
;;
.....
shell表达式
esac
22.循环控制
22.1for
第一种写法
for 变量 in 值1 值2 值3....
do
程序/代码
done
第二种写法
for((初始值;判断条件;变量变化))
do
程序/代码
done
22.2while
while [ 条件表达式 ]
do
程序
done
注意点
- while和
[要有一个空格- 条件表达式与
[和]有个空格
23.Read函数
读取用户控制台输入的值
语法
read 选项 提示语 变量名
24系统函数
basename
- 语法:
basename [pathname] [suffix]- 作用:返回完整路径最后的/的部分,常用与获取文件名,当然如果写了后缀,如:
basename /root/1.txt .txt,只会显示文件名,不会显示后缀
dirname
- 语法:
dirname [pathname]- 作用:返回完整路径最后一个/前的部分
25自定义函数
- 语法:
function 函数名() { 参数列表用$n来取,例如第一个参数为$1,第二个参数为$2 return 返回值; }
- 使用:
函数名 参数列表,例如:sum $a $b- 注意点:
- 自定义函数定义时不需要指定参数列表和返回值
26.日志
日志是linux系统运行中产生的,常见的日志都存放在
/var/log/下,常用的日志如下:

26.1执行原理
CentOS7.6日志服务是rsyslogd,CentOS6.X日志服务是syslogd。rsyslogd功能强大,rsyslogd的使用、日志文件的格式和syslogd服务兼容的,在CentOS7中日志服务是通过
etc/rsyslog.conf文件配置的


26.2日志轮替
日志论题就是把旧的日志文件移动并改名,同时建立新的空日志文件,当旧日志文件超过保存的范围之后,就会进行删除。
26.3查看内存日志

27.恢复与备份
dump和restore,对于开发,我觉得到此为止了,加油,老黄牛!





9561

被折叠的 条评论
为什么被折叠?



