关于Linux的基础总结

29 分钟

前言

这学期学习了Linux课程,对Linux的常用命令写个总结。


一、为什么Linux如此流行?

1.原因

作为目前世界上最受欢迎的系统,近乎世界超级计算机Top10中全是Linux系统的身影。
请添加图片描述
Linux流行的背后,原因是什么呢?:
1、Linux稳定且有效率。
2、Linux开源且免费,有强大的社区支持。
3、Linux拥有更加安全的用户与文件权限策略。
4、Linux易于维护,拥有超强的定制性
当然,个人认为,Linux流行的关键原因在于开源且免费,强大的社区支持。

2.Linux系统的版本

Linux的发行版本有很多,主要流行的如下:
1.Red Hat Linux
2.CentOs,与RedHat企业版完全兼容
3、Ubuntu、Debian、Kali
4、国内的OpenEuler、OpenAnolis

二、Linux的基础命令

1.目录结构

在这里插入图片描述
Linux的目录结构如上,/etc存放着系统配置文件的目录,/home是除root外的其它用户的目录,/dev存放设备文件,dev存放设备文件,boot存启动文件,tmp是临时目录,usr存放库文件,文档,命令,用户数据等,var存放变化的文件,如日志文件等,

目录名解析
bin存放普通用户可执行命令
etc系统的配置文件
root超级用户目录
dev系统的一些设备文件,驱动等
boot系统的启动文件
tmp临时文件存放目录
usr存放用户的应用程序和文件
var存放一些变化的文件,如程序日志等
home普通用户的目录
run存放进程产生的临时文件
mnt临时的挂载文件系统
sbin存放系统管理员才能执行的命令

2.文件命令

1.ls

列出该目录下的子目录与文件,常用参数:
-a 以.开头的隐藏项目也列出
-l 列出目录的详细信息,可直接使用ll
在这里插入图片描述

2.pwd

显示当前所处目录
在这里插入图片描述

3.cd

切换工作的目录,可使用相对路径与绝对路径,相对路径切换多个目录可以使用../..这种格式
在这里插入图片描述

4.touch、mkdir

touch是不存在文件则创建文件,存在则修改文件时间。
mkdir是创建目录
在这里插入图片描述

5.cat、tail、head、tail、od、tee、more、less

  1. cat 直接输出文件的全部内容
  2. head 输出文件开头的内容、-n 指定行数
  3. tail 输出文件末尾的内容,-n输出尾n行
  4. more 按页显示文本文件内容,只允许向前浏览
  5. less 与more类似,允许向前向后浏览
  6. tee 将文件的输出复制到另一个文件
  7. od 将文件内容以指定的禁止显示,-t指定进制
    在这里插入图片描述

    6.rm、cp、mv

  8. rm删除某个文件,常用rm -r 用于删除目录
  9. cp复制文件,-r可以复制目录
  10. mv移动文件

    7.find、grep、xargs

  11. find 搜索文件命令,可通过通配符搜索某个文件
  12. grep,以正则表达式进程全局查找匹配行
  13. 命令传递参数的过滤器,可将管道或标准输入数据转换成命令行参数,也可从文件中读取数据
    三者合一、可用于搜索文件的内容
    在这里插入图片描述

    8.tar、zip、uzip、gzip

    1.tar将文件打包或压缩或解包,压缩文件后缀有gz、bz、xz,常用参数 -c产生.tar打包文件,-x解包、-zjJ分别以gz、bz2、xz打包或解包文件。
    2.zip将文件打包,常用-r递归打包目录
    3.uzip将文件解包
    4.gzip压缩命令,只能压缩文件,不能压缩目录
    在这里插入图片描述

    9.ln

    创建软或硬连接,可以理解为相当于创建快捷方式,硬连接的链接文件和被链接文件必须在同一目录且不能建立指向目录的硬连接,链接的源文件消失,链接即失效。常用参数:-s 创建符号链接即软连接,-P,创建直接指向符号链接的硬链接,-f删除已存在的目标文件。
    在这里插入图片描述

    10.lsattr和chattr

    chattrlsattr 分别用于改变和显示文件属性,与 chmod 命令相比,chmod 只改变文件的读写、执行权限,更底层的属性控制是由 chattr 来改变。

chattr主要常用的参数有:-R 递归改变指定目录下的文件属性,+在原有的参数设定基础上、追加参数,-在原有的参数设定基础上、移除参数。

lsattr常用参数:-R 递归显示目录和文件属性、-a 显示所有隐藏文件属性、

chattr可以改变的文件属性有:

属性含义
a只允许向文件追加数据,不允许删除和修改文件内容。如果目录有具有这个属性,系统将只允许在目录下简历和修改文件,不允许删除任何文件。只有root才能设置该属性
c自动将文件压缩,在读取时自动解压缩
d在进行文件系统备份时,dump指令忽略此文件
e在ext文件系统中,表示该文件使用区段(extents)映射磁盘上的块
i不允许对文件进行任何的修改。对于目录而言,只能修改目录之下的文件,不允许建立和删除文件。只有root能设置此属性
j设定此参数使得当通过mount参数:data=ordered 或者 data=writeback 挂 载的文件系统,文件在写入时会先被记录(在journal中)。如果filesystem被设定参数为 data=journal,则该参数自动失效
s系统在删除文件时,使用0填充文件所在的区域
t文件拥有t属性时,与其它文件合并时末端不会存在局部块碎片
u与s相反,删除文件时,文件内容其实还存在磁盘中,以便以后能够恢复删除的文件
A不能修改文件的最后访问时间
D如果一个目录设置了D属性,任何改变将同步到磁盘;这等价于mount命令中的dirsync选项,同步目录
SSync,一旦应用程序对文件执行了写操作,则立刻将改动同步到磁盘
T目录设置T属性,Orlov块分配器将该目录视为目录层次结构的顶部,提示块分配器该目录下的子目录是无关的,将被分散的分配

11.Linux重定向与管道

linux执行命令行即shell命令时会有三种标准文件:

  1. 标准输入文件即0,使用<或<<
  2. 标准输出文件即代码1,使用>或>>
  3. 标准错误输出文件即代码2,使用2>或2>>
    注:双符号表示追加

管道:

  1. | 将上一次的输出作为下一次的输入
  2. || 当左边命令为假,右边命令才会执行
  3. & 表示任务在后台执行
  4. &&前一条命令执行成功才会执行后门的命令
  5. ;隔开命令,从左到右执行
    在这里插入图片描述

3.Vim编辑器

一个强大的文本编辑器,常用的操作如下

命令操作
k/j向上或下查找
gg移动到文件的第一行
G移动到文件的最后一行
/word搜索某个字符串,n表示到下一个
n光标向下移动n行
0或$移动到当前行首字符或尾字符
dd/ggdG删除当前行,ndd表示连续删除后n行,ggdG表示删除全部
yy复制当前行,nyy表示复制下面n行
p/P将复制内容在下一行粘贴上/在上一行粘贴上
u还原上一次操作
ctrl+r重复上一次动作
i光标前插入文本
x删除光标字符
R+word连续替换多个字符
:%s/old/new/g有$替换整个文档的内容,无%替换该行全部,去掉g表示替换首个
set number显示行数

vim编辑器异常退出会产生.swp临时文件,需要删除掉

4.关于Linux用户

linux的用户账号的基本信息主要存放在/etc/passwd中,存放方式为

字段1:用户帐号的名称(euler)
字段2:用户密码字串或者密码占位符“x”
字段3:用户帐号的UID号(用户ID,1000)
字段4:所属基本组帐号的GID号(组ID,1000)
字段5:用户全名(euler)
字段6:宿主目录(/home/euler)
字段7:登录Shell信息(/bin/bash)

一般密码文件存放在/etc/shadow中,进行了hash加密
在这里插入图片描述
组账号信息一般存放在/etc/group中,存放形式为
字段1:组名。
字段2:组密码:组密码,用x占位。
字段3:组标识符:简称GID,唯一标识一个组。
字段4:组内用户列表:属于这个组的所有用户的列表
在这里插入图片描述
其中上两张图的0都表示超级用户或超级用户所在组。

1.添加删除用户/组

  1. useradd:添加用户
  2. usedel:删除用户,常用-r删除用户和主目录
  3. usermod:将用户添加到某个组
  4. groupadd:增加某个组
  5. groupdel:删除某个组

注:以上操作皆要通过root用户完成。
在这里插入图片描述

2.关于文件权限(chmod、chown)

在这里插入图片描述

  1. r 表示读权限,数字4
  2. w 表示写权限,数字2
  3. x 表示执行权限,数字1

图中-rw-r--r--的解析:

  1. -表示普通文件
  2. rw-表示文件拥有者权限
  3. r-- 表示文件所属组成员权限
  4. r--表示其它用户的权限

权限赋予命令:chmod

  1. 可通过数字直接赋予 chmod 数字 文件名
  2. 可通过对用户权限直接赋予 chmod u/g/o/a +/- /r/w/x 文件名

    字母解析
    u所有者
    g组成员
    o其他成员
    a所有人

更改文件和目录所有者和所属组:chown 需要root用户执行,命令格式:
chown [-R] user

在这里插入图片描述

5.进程与系统管理

1.进程管理

一般linux启动一个进程后,会在proc/PID创建一个文件夹,用于进程的管理
在这里插入图片描述

  1. 常用查看进程的命令,ps aux,a表示显示所有进程,u表示面向用户格式,x表示显示后台进程信息。
    在这里插入图片描述
字符解析
USER表示进程所属用户
PID进程唯一标识号
%CPUCPU的占用率
%MEM内存的占用率
VSZ虚拟内容的占用大小
RSS实际内存占用大小
TTY终端类型
Stat进程状态
START进程启动时刻
TIME进程运行时长
  1. top或者htop命令也可用于查看进程的情况,会每隔一段时间进行更新,htop要相对简单一些

在这里插入图片描述

  1. 终止进程命令:kill PID即可终止进程,-9参数表示强制终止
  2. 命令行终止:Ctrl+C与Ctrl+Z,区别在于前者是中断正在执行的命令,后者是将进程挂起,调入后台并停止执行,可通过jobs命令查看后台,或直接fg +序号将后台终止进程恢复
    在这里插入图片描述

2.定时任务

一般linux的定时任务都会存放在/etc/crontab中,不同的系统会有微笑的不同,日、月、小时任务都分别有不同的文件夹,如cron.daily、cron.hourly等

  1. linux可通过crontab设置定时任务,常用参数-e 设置任务,-l 查看任务计划

设置任务的时间格式为:

分钟 小时 日期 月份 星期   命令 
![在这里插入图片描述](http://www.aiwin.fun/usr/uploads/2024/01/3243682666.png)表示周一到周五的早上6点输出wakeup,* *代表通配符,表示该范围的任意时间。

3.一些其它命令

  1. free 查看内存使用情况
  2. df 查看磁盘使用情况
  3. du 显示指定目录或文件所占用的磁盘空间
  4. alias 设置别名,支队当前中断生效,要永久使用,需要写入到~/.bashrc中并保存,然后执行 source ~/.bashrc

在这里插入图片描述

4.关于环境变量

linux系统与windows系统一样,根据环境变量去寻找命令的执行命令,一直往下找,找不到即报错,找到即执行。
在这里插入图片描述
linux的环境变量以:为分割符,可以知道我们命令执行的诸如ls等命令都在/usr/bin目录中,在/usr/bin目录找到原文件进而进行命令行的命令执行。

关于环境变量的设置:利用命令export在原有环境变量上:目录即可,同样要永久生效,需要写入~/.bashrc中
在这里插入图片描述

5.Linux防火墙(ufw、iptables)

不同的linux系统一般会使用不同的防火墙工具,如Openeuler/centos会使用firewalld、ubuntu使用ufw等,也可以直接使用iptables进行规则的配置,iptables配置要较为复杂,一般执行有关防火墙的操作都需要sudo权限。

ufw常用命令如下:

命令解析
ufw status查看防火墙状态
ufw enable开启ufw防火墙
ufw disable关闭ufw防火墙
ufw default allow默认通过
ufw allow port允许某个端口
ufw deny port拒绝某个端口
ufw allow from IP允许某个IP地址访问本机全部端口
ufw delete allow port删除一条规则
ufw allow from IP to any port PORT允许特定的IP/端口组合

关于iptables:
iptables是采用数据包过滤机制工作的,所以它会对请求的数据包的包头进行分析,并根据我们预先设定的规则进行匹配来决定是否可以进入主机,一般来说,会一层一层的匹配,若上免的规则明确表示阻止或通过,则不会再匹配下面的规则,配置一般采用先精细后粗犷的规则。

iptables包含了四表五链,分别是:

Filter表:过滤数据包
NAT表:用于网络地址转换(IP、端口)
Mangle表:修改数据包的服务类型、TTL、并且可以配置路由实现QOS
Raw表:决定数据包是否被状态跟踪机制处理

INPUT链 :处理输入数据包。
OUTPUT链 :处理输出数据包。 FORWARD链 :处理转发数据包。

PREROUTING链 :用于目标地址转换(DNAT)。
POSTOUTING链 :用于源地址转换(SNAT)。

不同的链路存放着用户设置的规则,这些规则根据功能不同被存放到不同的表中,会按照表的优先级取出对应的规则,进行匹配,表的优先级是 raw->mangle->nat->filter。

各链对应的表如下:

链名表名
PREROUTINGrao、mangle、nat
FORWARDmangle、filter
INPUTmanle、filter
OUPUTraw、mangle、nat、filter
POSTROUTINGmangle、nat

一般数据库进入网卡的处理流程 :
1、首先匹配PREROUTING链,系统根据数据包的目的地址判断接下来的数据过程,可能有三种情况:
(1)数据包目的地址是本机,发往INPUT链,匹配INPUT链规则,通过则发给相应本地处理,没有则丢弃。
(2)数据包目的地址不是本机,包被发往FORWARD链,匹配规则,通过则发往相应本地处理,没有则丢弃。
(3)数据包是本地产生的,则发往OUPUT链,匹配OUPUT链的规则,通过则发往相应本地处理,没有则丢弃。

iptables常用命令:

  1. iptables -A INPUT -p tcp --dport 80 -j ACCPET 追加规则开放80或某端口
  2. iptables -I INPUT -p icmp -j ACCEPT 根据协议插入一条记录
  3. iptables -D INPUT number 删除INPUT链中第number条记录
  4. iptables --list 查看所有规则
  5. iptables -nL -t 表名 查看某个表名的规则

在这里插入图片描述
iptables中包含了可以查看ufw防火墙设置的规则信息。

6.一些基本的系统信息、日志查询

  1. last:查看用户最近登录信息,主要存放在/var/log/wtmp|btmp|utmp中,wtmp存储登录成功信息、btml存储登录失败
  2. lastb,查看显示用户错误的登录列表
  3. lscpu,查看cpu的相关信息,包括型号,内核
  4. uname -a,查看关于操作系统的信息
  5. cat /proc/version,查看操作系统版本
  6. lsmod,查看所有载入系统的模块信息
  7. netstat,查看端口的开放和连接信息

6.磁盘管理

关于磁盘的设备一般存储再/dev/或者/snap/文件夹中。

  1. 查看磁盘信息常用命令:lsblkfdisk
    在这里插入图片描述
sr0是光驱设备即光盘,也成为cdrom,只支持读,不支持写入操作
  1. 磁盘分区
    磁盘分区可以将硬盘驱动器划分多个逻辑存储单元,单元称为分区。磁盘分区的好处:
    (1)限制应用或用户可用空间
    (2)将操作系统和程序文件与用户文件分隔
    (3)创建用于操作系统虚拟内存交换的单独区域
    (4)允许同一磁盘不同操作系统启动
    在这里插入图片描述

关于分区的命名规则:
在这里插入图片描述

分区的方案: MPT分区中: SCSI接口硬盘最多有16个分区,主分区最多4个,逻辑分区最多12个。
IDE接口硬盘最多只能有63个分区,主分区最多4个,逻辑分区最多60个 分区最大2T。

GPT分区中: 由LBA规划,每个硬盘前面有34个LBA,后门有33个LBA用于前面的备份。
LBA0用于兼容MBR,不能修改,LBA1称为GPT表头记录,用于记录备份的对应关系和记录表本身的大小,LBA2-LBA33用于记录实际分区信息。
每一个LBA可用记录4个分区表,一共4*32=128个分区表。
每个硬盘最多128个分区(不分类型),GPT逻辑块地址分配64位,最大支持18EB分区大小。

磁盘分区操作:
首先,增加虚拟磁盘,VMvare操作如下:
在这里插入图片描述

命令解析
parted /磁盘目录对磁盘进行分区
mklabel+类型创建新的分区表
mkpart +name+start+end创建分区
rm+number删除分区
quit退出

在这里插入图片描述

  1. 磁盘挂载

    命令解析
    mkfs -t +类型+目录创建磁盘挂载
    mount +目录+挂载点将磁盘挂载(临时,重启即消失)
    umount +挂载点取消磁盘挂载
    blkid +磁盘目录查看磁盘的信息,包括UUID
    /etc/fstab永久挂载磁盘,要将挂载目录等写入该文件

在这里插入图片描述

在这里插入图片描述

  1. 非交互式磁盘
    简单说,就是交互式需要进入parted的命令行进行操作,非交互式就是不用进去就能操作,加个--script,后面命令跟parted里面的一样即可,如:
    sudo parted --script 目录 mklabel gpt,创建gpt分区
    sudo parted --script 目录 +命令
  2. 关于逻辑卷
    LVM-逻辑卷管理是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层,用于提高磁盘分区管理的灵活性,主要有以下概念:
    在这里插入图片描述
    逻辑卷的划分:
    在这里插入图片描述

常用命令

命令解释
pvcreate /DEV创建物理卷
pvs查看物理卷
pvremove /DEV删除物理卷
vgcreate VGNAME /DEV创建卷组
vgextend /DEV扩展卷组
vgreduce VGNAME /DEV收缩卷组
vgremove VGNAME删除卷组
lvcreate -L 10G -n LVNAME VGNAME创建指定逻辑卷大小和逻辑卷名称的名称
lvs查看逻辑卷
lvextend -L +10G /DEV增加10G逻辑卷大小
lvremove /DEV/VGNAME/LVNAME删除逻辑卷

7.下载软件包命令

linux下载软件包的命令很多,根据Linux系统的不同会使用不同的命令。
OpenEuler:dnf、rpm。
Ubuntu:apt、yum。
Centos:rpm、yum。
Debian:apt。
常用的命令如下:

命令作用
apt-get update/apt update更新软件包列表
yum/dnf check-update更新软件包列表
apt-get/apt upgrade更新已安装的包
yum/dnf upgrade更新已安装的包
apt/yum/dnf search搜索某个包
apt show package显示包的安装状态
yum info/deplist package列出包依赖
dnf info package列出包依赖
dnf repoquery --requires package列出包依赖
apt/yum/dnf/pkg install package安装包
apt/yum remove package删除包
dnf erase package删除包
rpm -ivh可视化安装进度安装软件包
rpm -qa查询所有已安装软件包
rmp -e卸载指定软件包

三、Linux的Shell编程开发

1.符号变量

符号介绍
#注释符
$变量符
''单引号字符,全部普通字符
""双引号字符,可以包括特殊字符如反引号`,变量符$
$?返回上一个变量返回值
$#传送给shell程序位置参数的数量
$0当前执行的进程名
$!后台运行的最后一个进程号
$$当前进程的进程号
$n第n个参数
$@、 $*全部位置参数做列表,*做变量
$()获取命令输出结果
``获取命令输出结果
$(())算数拓展运算符
-eq、-ne、-lt、le、-gt、-ge表示相等、不等于、小于、小于或等于、大于、大于或等于
[]条件表达式
-d是否是目录,如 if [-f a.sh]
-f是否是普通文件,如if [-d a.txt]
-a、-o逻辑和与逻辑或

2.常用方法

命令解析
set查看环境变量
env查看全局变量
declare定义变量
unset删除变量
export定义环境变量
~/.bashrc用户级环境

在这里插入图片描述

四、关于git

  1. git是分布式的版本控制系统,说白了,就是一种代码管理工具,能够方便程序员在编写代码,未完成时候能够保存但却不影响项目的运行。

git的流程:
在这里插入图片描述

git的常用命令:

命令解释
git init初始化git仓库
git config user.name name设置目标用户名
git config user.email email设置目标邮箱
git config --list查看配置信息
git add 文件名将文件添加到暂存区
git checkout暂存区内容恢复到工作区
git commit -m "提交说明"将文件从暂存区添加到仓库区
git log查看提交日志
git reset --hard 版本号将代码恢复到已经提交的某一个版本
git branch 分支名创建分支
git checkout -b 分支名称切换分支
git branch -d 分支名称删除分支
git push URL master将缓存区内容提交到远程仓库
git pull将远程代码下载到本地
git remote add 仓库别名 仓库地址为远程仓库添加别名
git push -u 别名 分支将缓存区内容提交到仓库

具体操作如提交到Github:

  1. 先在github创建仓库,然后在Settings->develop settings->Personal Access token->Generate new token创建一个提交的token
    在这里插入图片描述
  2. 然后就可以在Linux中通过命令行提交。

在这里插入图片描述
这里输入的用户名和密码就是刚才生成Token的用户名和token。

~  ~  The   End  ~  ~


 赏 
承蒙厚爱,倍感珍贵,我会继续努力哒!
logo图像
tips
文章二维码 分类标签:开发开发
文章标题:关于Linux的基础总结
文章链接:https://aiwin.fun/index.php/archives/3053/
最后编辑:2024 年 1 月 4 日 16:53 By Aiwin
许可协议: 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
(*) 6 + 6 =
快来做第一个评论的人吧~