linux学习

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:将目录结构保存到数据库中,可以快速定位文件位置,使用前必须先执行updatedb
  • which:查看指令的所在位置
  • grep:过滤查找,一般和管道符号|一块用,例如cat a.txt | grep ext,语法:grep 选项 查找内容 源文件
    • -n显示行数
    • -i忽略大小写

12.打包与压缩

  • zip文件: zipunzip
  • gz文件:gzipgunzip
  • 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 软件:查看当前系统中是否安装了firefox
  • rpm -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,对于开发,我觉得到此为止了,加油,老黄牛!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值