当前位置: 首页 > news >正文

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.#是超级用户的提示输入,¥是普通用户提示输入。


     

    http://www.xdnf.cn/news/783829.html

    相关文章:

  • Redis看门狗机制
  • Halcon光度立体法
  • 相机Camera日志分析之二十四:高通相机Camx 基于预览1帧的process_capture_request三级日志分析详解
  • 矩阵的偏导数
  • 点击启动「高效模式」:大腾智能 CAD 重构研发设计生产力
  • 『React』组件副作用,useEffect讲解
  • KEYSIGHT是德科技 E5063A 18G ENA系列网络分析仪
  • 【python与生活】用 Python 从视频中提取音轨:一个实用脚本的开发与应用
  • 6.RV1126-OPENCV 形态学基础膨胀及腐蚀
  • git stash介绍(临时保存当前工作目录中尚未提交的修改)
  • CentOS Stream 8 Unit network.service not found
  • 【Python进阶】元类编程
  • 本人精通各种语言输出hello world
  • Windows应用-音视频捕获
  • 关于Tabs组件下TabPane使用v-if导致顺序错误以及页面渲染异常的解决方法
  • Linux Maven Install
  • LeetCode第245题_最短单词距离III
  • PDF.js无法显示数字签名
  • ARM GIC V3概述
  • 预览pdf(url格式和blob格式)
  • 【C/C++】初步了解享元模式
  • Linux账号和权限管理
  • ubuntu 20.04挂载固态硬盘
  • 什么是“音节”?——语言构成的节拍单位
  • 【Java Web】7.事务管理AOP
  • 【Spring】Spring哪些源码解决了哪些问题P1
  • WINUI——Magewell视频捕捉开发手记
  • “packageManager“: “pnpm@9.6.0“ 配置如何正确启动项目?
  • Vue-ref 与 props
  • 不止抓请求:5种开发场景中的抓包组合策略(含 Charles 等工具)