Linux总结
一、Linux
linux系统的构成
1.linux系统内核:提供最核心的功能,如:调度CPU、调度内存、调度文件系统、调度网络通信、调度IO等。
2.系统级应用程序:出厂自带程序,可供用户快速上手操作系统。如:文件管理器、任务管理器、图片查看、音乐播放等。
Linux发行版
1.CentOS:先安装vmware,再安装finalshell。
2.UBuntu:打开控制面板--程序--程序和功能--启用或关闭Windows功能--勾选windows下的linux子系统--重启。再在微软商店下载Ubuntu和windows terminal。
wsl:windows系统之上的Linux子系统
虚拟机
虚拟机:通过虚拟化技术,在电脑内虚化计算机硬件,并给虚拟的硬件安装硬件系统,即可得到一台虚拟的电脑,称之为虚拟机。
FinalShell连接到Linux操作系统,虚拟机如果重启,IP有可能改变,需要修改FinalShell的IP。
固定虚拟机的IP:
使用 vim 修改 /etc/sysconfig/network-scripts/ifcfg-ens33 文件
把dhcp改成static
IPADDR="192.168.56.129"
NETMASK="255.255.255.0"
GATEWAY="192.168.56.2"
DNS1="192.168.56.2" //和网关一样
重启网卡 systemctl restart network(systemctl命令需要安装)
网关查询:
点击更改设置,选中VMnet8,点击NAT设置。
快照
保存虚拟机的状态,用做备份(关机拍摄快照更快)。
目录结构
Linux的目录结构:一个树型结构(Windows有多个,即盘符),根目录是‘/’,路径之间的层级关系用‘/’(Windows用‘\’)
二、Linux命令
1.命令的通用格式
命令本体+[命令的选项,命令的行为细节]+[命令的参数,命令的指向目标]
2.ls
ls [-a] [-l] [-h] 路径
ls:以平铺的形式,展现当前工作目录下的内容(默认HOME目录)。
-a:列出所有文件,包括隐藏的(以‘.’开头的文件是隐藏的)
-l:以列表的形式,展现当前工作目录下的内容,并展示更多的信息(-h要和-l一起用,显示文件的大小单位,默认B为单位)
第一个数字表示硬链接个数,文件为一个(通过绝对路径访问),目录为两个(通过cd.访问),子目录每有一个(通过cd..访问),个数加一。
3.cd
切换工作目录:cd 路径(不加路径回到home目录)
4.pwd
pwd:查看当前工作目录
5.特殊路径符
.表示当前目录
..表示上一级目录
~表示home目录
6.mkdir
创建目录:mkdir [-p] 路径
-p:创建多级目录
mkdir {1..100}
7.创建和查看文件
创建文件:touch 路径
查看文件:cat 路径
more 路径(分页查看)
less 路径
8.文件的复制,移动和删除
cp [-r] [-p] 路径1 路径2:文件或文件夹的复制
-r:文件夹的复制
-p 复制时保留源文件的所有属性
如果存在重名文件/目录则覆盖。
mv 源路径 目标路径:文件/文件夹的移动,目标路径不存在则改名
如果存在重名文件/目录则覆盖。
rm [-r] [-f] 路径1 [路径2]..
-r:文件夹的删除
-f:force,强制删除,不会弹出确认信息,root管理员用户才会有提示
rm命令支持通配符*
9.查找命令
which 命令名:查找命令的程序文件
find 起始路径 -name 文件名:按文件名查找文件,支持通配符
find 起始路径 -size +/-n[kMG]:按文件大小查找文件,+-表示大于小于
10.grep
grep [-n] 关键字 文件名/文件的路径:通过关键字过滤文件内容(可作为内容输入端口,即管道符的输入)
-n:显示关键字在文件里的行号
11.wc
wc [-c] [-m] [-l] [-w] 文件名:数量统计,默认输出行数、单词数、字节数(可作为内容输入端口)
-c:统计字节
编码:GBK,一个汉字字节数:2
编码:UTF-8,一个汉字字节数:3
一个字母一个字节
-m:统计字符
-l:统计行数
-w:统计单词数量,空格划分
注意:vi编辑器会在每一行用$
来标记行尾,用cat直接查看是不可见的(用cat -A),会导致统计字符和字节数+1.
12.管道符
将管道符左边的结果作为右边的输入,左边比如:ls,cat,右边比如:wc,grep,可嵌套使用。
13.echo
echo 要输出的内容
反引号符:用来包含一个命令,这个命令会先执行返回结果。
单引号符:单引号将其中的内容都作为了字符串,忽略所有的命令和特殊字符,类似于一个字符串的用法,等同于不加符号。
双引号符:双引号与单引号的区别在于其可以解析部分特殊字符(', ", $, \),如果要忽略特殊字符,就可以利用\
来转义,忽略特殊字符,作为普通字符输出。
14.重定向符
>:将左侧命令的结果,覆盖写入到右侧的文件中
>>:将左侧命令的结果,追加写入到右侧的文件中
15.tail
tail [-f] [-n] 路径 :查看文件尾部内容,并且可以持续追踪
-n:输入查看尾部的行数,不写默认查看最后10行
注意:tail -f命令是根据文件的索引来追踪文件的,每个文件有唯一的索引对应。而vim是将原来的文件删除后,然后再生成一个新的文件。新生成的同名文件的索引已经发生了变化,所以导致tail -f命令追踪失败。
解决:使用tail -F替代tail -f,tail -F在原文件被删除的时候,会一直尝试打开同名文件。
16.vi/vim编辑器
vim是vi的加强版本,兼容vi的所有指令,而且还具有shell程序编辑的功能,可以以不同颜色的字体来辨别语法的正确性。
vi/vim编辑器的三种工作模式:
命令模式
命令模式快捷键 | 描述 |
i | 进入输入模式 |
0 | 光标跳到行开头 |
$ | 光标跳到行尾 |
gg | 跳到首行 |
G | 跳到尾行 |
Pgup | 向上翻页 |
Pgdn | 向下翻页 |
/ | 进入搜索模式 |
n | 向下继续搜索 |
N | 向上继续搜索 |
dd | 删除光标所在行 |
ndd | 删除光标所在行向下n行 |
dG | 从当前行开始,向下全部删除 |
dgg | 从当前行开始,向上全部删除 |
d0 | 从当前光标开始,删除到本行开头 |
d$ | 从当前光标开始,删除到本行结尾 |
yy | 复制当前行 |
nyy | 从当前行开始,复制n行 |
p | 粘贴 |
u | 撤销修改 |
Ctrl+r | 反向撤销修改,即重做 |
输入模式:按Esc回到命令模式
底线命令模式:输入:进入底线命令模式,用于文件的保存,退出。按Esc回到命令模式。
底线命令模式快捷键 | 描述 |
wq | 保存并退出 |
w | 保存 |
q | 退出 |
q! | 强制退出 |
set nu | 显示行号 |
set paste | 设置粘贴模式 |
三、用户和权限
1.root
root超级管理员:普通用户的权限,一般在其home目录内是不受限的,其余目录普通用户仅有只读和执行权限,无修改权限。root用户拥有最大的权限。
2.切换用户
su - [用户名]
-:表示是否加载环境变量
用户名可省略,表示root用户
退回上一个用户:ctrl+d 或者 exit
root用户切换其它用户不用密码
3.sudo
让普通用户获得临时root身份,在其它命令之加上sudo
需要为普通用户配置sudo认证:root用户执行visudo命令,在文件的最后一行增加配置
要配置的用户名 ALL=(ALL) NOPASSWD:ALL
NOPASSWD:ALL表示使用sudo命令,无需输入密码。
4.用户和用户组
linux系统中可以配置多个用户,多个用户组,一个用户可以加入多个用户组。
linux关于权限的管控级别有两个:
针对用户的权限控制
针对用户组的权限控制
(1)用户组管理
创建用户组:groupadd 用户组名
删除用户组:groupdel 用户组名
(2)用户管理
创建用户:useradd [-g] [-d] 用户名
-g:指定用户的组,不指定-g会默认创建同名组并加入
-d:指定用户home路径,不指定,默认home路径为/home/用户名
删除用户:userdel [-r] 用户名
-r:删除用户的home目录
查看用户所属组:id [用户名] 不提供用户名则查看自身
修改用户所属组:usermod -aG 新的用户组 用户名
注意:修改后该用户仍然属于原来的用户组
查看系统中有哪些用户:getent passwd
输出的用户共有7份信息:分别是:
用户名:密码x:用户ID:组ID:描述信息(可为空):home目录:用户的执行终端(默认bash)
查看系统中有哪些用户组:getent group
输出共有3份/4份信息:分别是:
用户组名:组认证x:组ID:组内用户名(好像只显示第一个用户,不是通过命令创建的用户没有这一项)
5.权限控制
(1)查看权限信息
ls -l的输出:
第一列为文件/文件夹的权限控制信息:
一共有10个槽位:
第1位:-表示文件,d表示文件夹,l表示软链接
第2-4位:表示所属用户权限,有rwx三种权限,-表示无此权限。
第5-7位:表示所属用户组权限,有rwx三种权限,-表示无此权限。
第8-10位:表示其它用户权限,有rwx三种权限,-表示无此权限。
r:读权限
w:写权限
x:执行权限,对于文件表示可以将文件作为程序执行,对于文件夹表示可以更改工作目录到此文件夹,即cd
第二列为文件/文件夹的所属用户
第三列为文件/文件夹的所属用户组
(2)修改权限信息
只有文件/文件夹的所属用户或root用户可以修改。
chmod [-R] 权限 文件/文件夹 -R 表示对文件夹内的全部内容应用同样的操作。
权限的数字序号:第一位数字表示用户权限,第二位数字表示用户组权限,第三位数字表示其它用户权限。r记为4,w记为2,x记为1.
(3)修改文件/文件夹所属用户和用户组(需要root权限)
chown [-R] [用户] [:] [用户组] 文件名/文件夹名 -R 表示对文件夹内的全部内容应用同样的操作。
四、小技巧快捷键
ctrl+l 清屏=clear
ctrl+c 强制停止(应用、搜索、跟踪、命令)
ctrl+d 退出当前用户=exit
history 查看历史命令
!+命令前缀,自动匹配上一个命令
ctrl+r 搜索历史命令
ctrl+左右键 光标左右跳单词
ctrl+a/e 光标移动到命令开始或结束
ctrl+u/k 删除光标之前/之后的命令
tab 命令补全
五、软件安装
CentOS使用yum管理器:yum为.rpm包软件管理器(windows为.exe,mac为.pkg,ubuntu为.deb)
yum [-y] install/remove/search 软件名称 -y表示自动确认,该命令需要联网,需要root权限
ubuntu使用apt管理器,apt [-y] install/remove/search 软件名称
运行yum install出错解决方法:
①备份源文件:mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
②替换阿里yum源:curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
③执行:yum install wget
六、systemctl
可以控制软件(服务)的启动,关闭,开机自启动和查看状态。
系统内置服务(如NetworkManger主网络服务,network副网络服务,firewalld防火墙,sshd,ssh服务)均可被systectl控制,第三方软件(yum下载的)如果注册了服务,可以被systectl控制。没注册服务的需要手动添加。
systemctl start/stop/status/enable/disable 服务名
七、软链接
类似Windows的快捷方式。
ln -s 被链接的文件或文件夹 目的路径/链接名
-s表示软链接,不加表示硬链接
1、本质区别
硬链接:指的是同一个文件的多个名字。也就是说,不同的文件名指向同一个文件内容,这些文件名(即硬链接)共享同一个inode号。
软链接:又叫符号链接,它是指向另一个文件或目录的路径名,相当于Windows中的快捷方式。软链接本身是一个独立的文件,但它包含的是被指向文件的路径信息。
2、跨分区与目录创建
硬链接:不支持跨文件系统创建,即不能在不同分区之间建立硬链接。同时,硬连接只能对文件创建,不能对目录创建。
软链接:支持跨文件系统创建,即可以在不同分区之间建立软链接。软连接既可以对文件创建,也可以对目录创建。
八、日期和时区
date [-d] [格式化字符串] -d用于日期计算
格式化字符串:
%s:时间戳,从1970-01-01 00:00:00 UTC到现在的秒数
支持的时间标记:year,month,day,hour,minute,second
修改Linux时区(需要root权限):
1.删除原来的localtime文件:rm -f /etc/localtime
2.创建软链接:ln -s /user/share/zoneinfo/Asia/Shanghai /etc/localtime
ntp程序
ntp可以自动校准系统时间,也可以手动校准(需要root权限):ntpdate -u ntp.aliyun.com
九、IP地址、主机名
127.0.0.1:指代本机
0.0.0.0:指代本机,0.0.0.0
并不是一个真实的的IP地址,它表示本机中所有的IPV4地址
查看主机名:hostname
修改主机名(需要root权限):hostnamectl set-hostname 主机名
域名解析:先查看本机记录,再联网去DNS服务器
配置主机名映射(管理员身份):在Windows系统的:C:\Windows\System32\drivers\etc\hosts文件中配置。
十、网络传输
1.下载和网络请求
ping [-c num] ip或主机名 [-c num]表示ping的次数
wget:文件下载器(下载器)
wget [-b] url -b表示后台下载,会将日志写入当前工作目录的wget-log文件。可用tail -f wget-log跟踪下载进度。
curl:可以下载文件,发送网络请求(浏览器)
curl [-O] url -O表示下载文件
2.端口
物理端口
虚拟端口:ip只能锁定计算机,端口锁定具体的程序。
linux系统支持65535个端口,分为三类:
公认端口:1-1023
注册端口:1024-49151
动态端口:49152-65535
查看端口占用:nmap 被查看的ip(nmap要安装)
查看指定端口的占用情况:netstat -anp | grep 端口号(netstat要安装)
十一、进程管理
查看进程:ps [-e -f] -e表示展示全部进程,-f表示显示进程的全部信息,配合管道符查看指定进程。
输出有8组信息,分别是:用户id,进程id,进程的父id,此进程的cpu占用率(%),进程的启动时间,启动此进程的终端序号(?表示非终端启动),进程占用cpu的时间,进程对应的名称或启动路径或启动命令
关闭进程:kill [-9] 进程id -9表示强制关闭进程。
十二、主机状态监控
查看系统资源占用
top,类似windows的任务管理器,默认每3秒刷新一次。按q或者ctrl c退出
top命令详解
第一行:当前系统时间,启动时间,2个用户登录,1,5,15分钟负载
第二行:194个进程数,1个运行进程,193个进程睡眠,0个进程停止,0个僵尸进程
第三行:%Cpu(s)CPU使用率,us:用户使用率,sy:系统使用率
第四、五行(内存):kib mem物理内存 kib swap虚拟内存(交换空间)buff/cache:缓存占用
pr:进程优先级,越小越低
ni:负值表示高优先级,正值表示低优先级,pr-ni=20
virt:进程使用虚拟内存,单位KB
res:进程使物理内存,单位KB
shr:进程使用共享内存,单位KB
s:进程状态:S睡眠,R运行,Z僵死状态,N负数优先级,I空闲状态
%CPU:进程占用CPU率
%MEM:进程占用内存率
Time+:进程使用CPU时间总计,单位10ms
command:进程的命令或名称或程序文件路径
top命令选项
-p:只显示某个进程
-d:设置刷新时间
-c:显示产生进程的完整命令,默认是进程名
-n:指定刷新次数
-b:以非交互非全屏模式运行,以批次的方式执行top,一般配合-n和重定向符
-i:不显示任何闲置(idle)或无用(zombie)的进程
-u:查找特定用户启动的进程
top交互式选项
按键 | 功能 |
h | 显示帮助界面 |
c | 等同与-c选项 |
f | 可以选择需要展示的项目 |
M | 根据驻留内存大小(RES)排序 |
P | 根据CPU使用百分比大小排序 |
T | 根据时间/累计时间排序 |
E | 切换顶部内存显示单位 |
e | 切换进程内存显示单位 |
l | 切换显示平均负载和启动时间信息 |
i | 等同与-i选项 |
t | 切换显示CPU状态信息 |
m | 切换显示内存信息 |
磁盘信息监控
df [-h]:查看硬盘的使用情况,-h以更加人性化的单位显示
iostat [-x] [num1] [num2]
-x:显示更多信息
num1:刷新间隔
num2:刷新次数,默认是1
rrgm/s: 每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge,提高I0利用率,避免重复调用);
wrqm/s: 每秒这个设备相关的写入请求有多少被Merge了。
rsec/s: 每秒读取的扇区数;sectors
wsec/: 每秒写入的扇区数。
rKB/s: 每秒发送到设备的读取请求数
wKB/s: 每秒发送到设备的写入请求数
avgrq-sz 平均请求扇区的大小
avgqu-sz 平均请求队列的长度。毫无疑问,队列长度越短越好。
await: 每一个IO请求的处理的平均时间(单位是微秒毫秒)。
svctm 表示平均每次设备I/O操作的服务时间(以毫秒为单位)
%util: 磁盘利用率
网络状态监控
sar –n DEV [num1] [num2]
num1:时间间隔,表示每几秒采样一次
num2:采样次数,不填会一直采样
IFACE 本地网卡接口的名称
rxpck/s 每秒钟接受的数据包
txpck/s 每秒钟发送的数据包
rxKB/S 每秒钟接受的数据包大小,单位为KB
txKB/S 每秒钟发送的数据包大小,单位为KB
rxcmp/s每秒钟接受的压缩数据包
txcmp/s 每秒钟发送的压缩包
rxmcst/s 每秒钟接收的多播数据包
十三、环境变量
查看当前系统中记录的环境变量:env
设置环境变量
临时设置:export 变量名=变量值(export可省略)
永久生效:
针对当前用户:配置在~/bashrc文件中
针对所有用户生效:配置在/etc/profile文件中
source 配置文件,使配置文件生效。
$: 用于取变量的值,可以通过{}来标注变量,用echo输出。
十四、在Linux系统中进行上传和下载
1.可以在finalshell拖拽进行上传和下载,也可以右键选择
2.通过命令,需要下载lrzsz
rz上传
sz下载 sz+要下载的文件。
十五、压缩和解压
压缩格式
zip:linux,Windows,MacOS
7zip:Windows
rar:Windows
tar:Linux,MacOS
gzip:Linux,MacOS
.tar和.gz(.tar.gz)文件的压缩和解压
tar [-c –v –x –f –z -C] [文件1…]
-c:压缩
-v:查看进度
-x:解压
-f:压缩包名(必须在最后使用)
-z:gzip格式,默认使.tar格式
-C:解压目的路径(单独使用)
常用组合:
压缩:-cvf
解压:-xvf
.zip文件的压缩和解压
压缩:zip [-r] [文件1…] -r表示被压缩的包含文件夹
解压:unzip [-d] 压缩包文件 –d:表示目标路径
十六、Linux安装mysql
更新密钥:rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022安装yum库:rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm用yum安装:yum install mysql-community-server启动mysql并配置开机自启动systemctl status mysqldsystemctl start mysqldsystemctl enable mysqld修改root密码1.获取初始密码:grep 'temporary password' /var/log/mysqld.log2.登录mysql:mysql –u root –p3.修改:Alter USER 'root'@'localhost' identified with mysql_native_password by '';
必须修改密码,用初始密码登录的mysql不管输入什么命令都会报错。
密码要求:不少于8为,且包含大小写字母,数字和特殊符号。
配置简单密码:
set global validate_password.policy=0;//密码安全级别调低
set global validate_password.length=4;//密码长度限制为4
允许root用户远程登录
第一次配置用create user 'root'@'%' identified with mysql_native_password by '';
后续修改用Alter user 'root'@'%' identified with mysql_native_password by '';
分配权限:grant all on *.* to 'root'@'%';
Navacat连接(注意关闭防火墙)
(1)systemctl status firewalld.service查看防火墙的状态;(2)systemctl start firewalld.service启动防火墙;(3)systemctl stop firewalld.service关闭防火墙;(4)systemctl restart firewalld.service重启防火墙;(5)systemctl enable firewalld.service开机启动防火墙;(6)systemctl disable firewalld.service开机禁用防火墙;(7)systemctl is-enabled firewalld.service查看防火墙是否开机启动;
Mysql默认绑定端口是3306
netstat -anp | grep 3306
十七、补充
1.type命令用来显示指定命令的类型,判断给出的指令是内部指令还是外部指令
2.#是超级用户的提示输入,¥是普通用户提示输入。