文章目录
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的设备管理器,把所有硬件都已文件的形式存储/media
linux系统会自动识别一些设备,例如U盘,光盘mnt
系统提供该目录是为了让用户临时挂在别的文件系统,我们可以将外部的存储挂载在```mnt``上,然后进入该目录就可以查看里面的内容了/opt
这是给主机额外安装软件所存放的目录。/etc
所有系统管理所需要的配置文件和子目录/usr
这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于window的program files目录/boot
存放linux使用的一些核心文件/proc
虚拟目录,系统内存映射,不能动/src
service的缩写,该目录存放一些服务启动之后需要提取的数据/sys
用来看内核态的一些驱动或者设备/tmp
用来存放一些临时文件/usr/local
用来安装通过编译源码方式安装的程序/var
将经常被修改的目录放在这个目录下,包括各种日志文件selinux
SELInux是一种安全子系统,它能控制程序访问特定文件,有三种工作模式,可以自行设置。
5、关机、重启、登录注销命令
shutdow -h now
立刻进行关机shutdow -h 1
1分钟后进行关机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
:将目录结构保存到数据库中,可以快速定位文件位置,使用前必须先执行updatedb
which
:查看指令的所在位置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,对于开发,我觉得到此为止了,加油,老黄牛!