Linux基础入门笔记

Linux基础入门笔记,具体可见下载链接

大家阅读时可善用目录功能,可以提高大家的阅读效率

下载地址:Linux笔记


初始linux

  • 操作系统:操作系统是用户和计算机硬件之间的桥梁,调度和管理计算机硬件进行工作
  • 常见操作系统
    • Window
    • Linux
    • MacOS
    • Android
    • ios
    • HarmonyOS

linux内核

  • linux系统组成
    • Linux系统内核------提供最核心的功能:调度CPU,调度内存。调度文件系统,调度网络通讯,调度IO等
    • 系统及应用程序------可供用户快速上手操作系统
  • linux内核完全开源
  • linux发行版
    • 任何人都可以获得并修改内核,继承系统级程序之后完成封装,就是linux发行版
    • 常用发行版:CentOS Ubuntu

远程链接linux系统

图形化,命令行

  • 对于操作系统的使用,有两种使用形式
    • 图形化界面操作系统:使用操作系统提供的图形化界面,以获得图形化反馈的形式去操作系统
    • 命令行的形式操作系统:使用操作系统提供的各类命令,以获得字符反馈的形式去使用操作系统

Linux,MacOS,Windows都支持这两种

  • 使用Linux系统的时候一般都是使用命令行
    • linux并未重点优化图形化界面,所以图形化界面并不好用
    • 开发中使用命令行效率更高,更加直观,资源占用低,程序更加稳定

虚拟机快照

在学习阶段无法避免的会损坏Linux操作系统,损坏之后重新安装就非常麻烦

虚拟机快照可以将当前虚拟机的状态保存下来,在之后通过快照恢复虚拟机到保存的状态


Linux基础命令

  • linux只有一个顶级目录,叫根目录 ------ /
  • linux用/表示路径

linux命令入门

在linux中,命令有通用的格式
command [-options] [parameter]

  • command:命令本身
  • -options:可选,命令的一些选项,可以通过选项控制命令的行为细节
  • parameter:可选,命令的参数,多数用于命令的指向目标

ls命令

ls命令的作用是列出目录下的内容,语法细节如下

ls [-a -l -h] [linux路径]

  • 在不使用选项和参数的情况下,会以平铺的形式列出当前工作目录下的内容

  • 当前工作目录默认在用户目录/home(root默认是/root)

  • 选项

    • -a : 列出隐藏文件/文件夹
    • -l : 以列表形式展示内容,并展示更多内容
    • -h : 以易于阅读的形式,列出文件大小,如K、M、G(必须和-l搭配使用)
  • 选项混用,以下命令都一样

    • ls -a -l
    • ls -al
    • ls -la

cd/pwd命令

  • cd命令用于更改工作目录 Change Directory

    • cd命令无需选项,参数为空表示回默认工作目录
    • cd [linux路径]
  • pwd用于打印当前工作目录 ------ 仅返回目录名

    • pwd

相对路径,绝对路径,特殊路径符

  • 相对路径: 开头不需要加/
  • 绝对路径: 开头需要加/
  • 特殊路径符:
    • . 当前目录
    • ... 上一级目录
    • ~ 默认目录

mkdir 命令

  • 创建新的文件夹/目录
    • mkdir [-p] linux路径
    • 参数必填(一次创建一个层级)
    • -p: 一次性创建多个层级的目录

touch、cat、more

  • touch 创建文件
    touch linux路径
  • cat 查看文件内容
    cat linux路径
  • more 查看文件内容------支持翻页 空格翻页,b上一页,q退出查看
    more linux路径

cp、mv、rm

  • cp用于复制文件/文件夹
    • 语法: cp [-r] 参数1 参数2
    • -r: 可选 复制文件夹时使用,表示递归
    • 参数1: 被复制的路径
    • 参数2: 要复制到的路径 带文件名表示改名
  • mv用于移动文件/文件夹
    • 语法: mv 参数1 参数2
    • 参数1 :被移动的路径
    • 参数2 :移动到的路径 带文件名表示改名
  • rm用于删除文件、文件夹
    • 语法 rm [-r -f] 参数1 参数2 ... 参数n
    • -r 表示删除文件夹
    • -f 强制删除 (只有root会有提示,一般用户用不到-f)
    • 参数1-n:表示要删除的路径,用空格隔开
  • 通配符:
    • *可匹配任意内容(包括空)
    • test* 表示以test开头
    • *test 表示以test结尾
    • *test* 表示任何包含test的内容

which,find

前面学习的linux命令其实是一个个二进制程序, 可以通过which来查询一系列的系统命令存放在哪里

  • which 查询命令程序位置
    • 语法: which 要查找的命令
    • 使用ubuntu并不能查询cd的位置,因为cd是shell内置的一个命令,不是程序
  • find 查找指定的文件
    • 指定文件名查找find 起始路径 -name "被查找文件名" 可使用通配符
    • 指定文件大小查找find 起始路径 -size +/- -n[KMG]
      • +/-表示大于或小于
      • n表示大小数字
      • KMG表示大小单位

grep,wc,管道符

  • grep通过关键字过滤文件行
    • 语法:grep [-n] 关键字 文件名
    • -n 表示在结果中显示匹配的行号
    • 关键字:带有空格或其他特殊符号,建议使用"" 将关键字包围起来
    • 文件路径: 要过滤内容的文件,可作为管道符输入端口
  • wc 统计文件的行数、单词数量
    • 语法:wc [-c -m -l -w] 文件路径
    • -c:统计bytes数量
    • -m:统计字符数量
    • -l:统计行数
    • -w:统计单词数量
    • 文件路径:被统计的文件,可作为管道符输入端口
  • 管道符 |
    • 将右面的命令应用于左面的结果中(左面的结果作为右面的输入)
    • 可嵌套使用
    • 前提是要有输出

echo,tail,重定向符

  • echo 输出语句
    • 语法echo + 输出内容
    • 反引号`` 也叫做飘号 被飘号包围的内容会作为命令执行
  • 重定向符
    • > 将左侧命令的结果,覆盖写到符号右侧指定的文件中
    • >> 将会左侧命令的结果,追加写入符号右侧的文件中
  • tail 查看文件尾内容,跟踪文件最新更改
    • 语法: tail [-f -num] linux路径
    • 路径:被跟踪的文件路径
    • -f: 表示持续跟踪
    • -num: 查看尾部多少行 默认十行
    • 可再开一个标签去观察持续跟踪结果

vi/vim编辑器介绍

是linux中最经典的编辑器,vim是vi的加强版

三种工作模式

  • 命令模式:默认模式
    • 此模式下,不能自由进行文本编辑,所敲的按键编辑器都理解为命令,以命令的驱动执行不同的功能
    • 语法: vi/vim 文件路径使用vi/vim均可
    • 如果目标路径表示的文件不存在,则编辑新文件,路径必须存在
  • 输入模式
    • 此模式下,可对文件内容自由进行编辑
  • 底线命令模式
    • 以:开始,通常用于文件的保存,退出
  • 常用命令:

linux用户和权限

多用户管理模式进行权限管理

linxu最大权限用户是:root(超级管理员),拥有最大的系统操作权限

  • 普通用户的权限一般在home目录内是不受限的,离开home目录,一般只有只读和执行权限,无修改权限

su和exit命令

  • su :用户切换帐号的系统命令
    • 语法: su [-] [用户名]
    • -符号可选:表示是否在切换用户后加载环境变量 建议加上
    • 用户名: 表示要切换的用户,用户名也可以省略,默认切换到root
  • exit命令回退到上一个用户,也可以使用快捷键 ctrl+d
    • 普通用户切换其他用户需要密码,root切换其他用户则不需要

sudo命令

  • sudo:为普通的命令授权,临时以root身份执行
  • 语法: sudo 其他命令
  • 并不是所有用户都有权利使用sudo,需要为普通用户配置sudo认证,没有配置sudo,即使有管理员密码也无法使用sudo命令

用户,用户组

linux权限管理有两个级别,用户/用户组

用户组管理

  • 创建用户组
    • 语法: groupadd 用户组名
  • 删除用户组
    • 语法: groupdel 用户组名

用户管理:

  • 创建用户
    • 语法: useradd [-g -d] 用户名
    • -g:指定用户的组,不指定会创建同名组并自动加入,指定组需保证组存在,若已有同名组则必须使用-g
    • -d:指定用户HOME路径,不指定则默认在/home/用户名
  • 删除用户
    • 语法: userdel [-r] 用户名
    • -r : 删除用户的HOME目录
  • 查看用户归属组:
    • 语法: id [用户名]
    • 默认为当前用户
  • 修改用户归属组:
    • 语法: usermod -aG <group> <user>
    • 将指定用户加入到指定组
    • 语法: deluser <user> <group>
    • 将指定用户移除用户组

getent

  • 查看当前系统中有哪些用户、用户组
  • 语法: getent passwd/group
  • passwd结果: 用户名:密码(X):用户ID:组ID:描述信息(无用):HOME路径:终端
  • group结果: 组名称:组认证(X):组ID

查看权限控制

通过ls -l 可以通过列表查看详细信息,并显示权限细节,可将信息大体分为三部分

  • 序号1 ,表示所属用户权限

    • -表示无权限

    • r------读(eg:ls,cat等),w------写(eg:touch,mkdir,rm等),x------执行(cd进入)

  • 序号2 ,表示所属用户组权限

  • 序号3 ,表示其他用户权限

chmod 修改权限

  • 可以使用chmod命令修改文件/文件夹的权限------只有文件、文件夹的所属用户才能修改
    • 语法: chmod [-R] 权限 文件或文件夹
    • -R,对文件内的全部内容应用同样的操作
    • eg: chmod u=rwx,g=rx,o=x hello.txt即可将文件修改为: rwxr-x--x
      • u表示user,g表示group,o表示other
  • 权限快捷表示
    • r=4,w=2,x=1
    • 751 -> rwxr-x--x

chown 修改文件/文件夹归属

  • 可以使用chown修改文件/文件夹所属的用户/用户组
  • 普通用户无法操作,只有root用户可以操作
    • 语法: chowm [-R] [用户] [:] [用户组] 文件或文件夹
    • ':' :用于分割用户和用户组
    • eg: chown root:root hello.txt归属修改为root用户,root用户组
    • eg: chown :root hello.txt归属修改为root用户组
    • eg: chown root hello.txt归属修改为root

linux实用操作

各类小技巧

按键 作用
ctrl + C 强制停止
ctrl + D 退出或登出(不能退出vim)
history 查找历史记录
!+字符 自动配置执行匹配前缀的命令
ctrl + R 输入内容匹配历史命令
ctrl + A 光标跳到命令开头
ctrl + E 光标跳到命令结尾
ctrl + -> 光标向右跳一个单词
ctrl + <- 光标向左跳一个单词
ctrl + L 清屏(clear)

软件安装

yam命令

  • RPM包软件管理器,用于自动化安装配置linux软件,并可以自动解决依赖问题。
    • 语法: yum [-y] [install | remove | search] 软件名称
    • -y:自动确认,无需手动确认安装或卸载过程
    • install : 安装
    • remove : 卸载
    • search : 搜索
  • 需要root权限,可以su切换或者sudo提权
  • 需要联网

apt命令(Ubuntu)

  • 与centOS的yum命令相同,用于软件安装[Ubuntu的软件包是 .deb文件]
    • 语法: apt [-y] [install | remove | search] 软件名称
    • 用法一样,需要联网

systemctl命令

  • 大部分软件都支持systemctl命令控制:启动、停止、开机自启
  • 能被systemctl管理的软件一般称之为:服务
    • 语法: ```systemctl start/stop/status/enable/disable 服务名
    • 启动/关闭/查看状态/开机自启/关闭开机自启

系统内置了很多服务 如:

  • NetworkManager: 主网络服务
  • network : 副网络服务
  • firewalld : 防火墙服务
  • sshd,ssh服务
  • 有部分软件安装后不会自动集成到systemctl中,我们可以手动添加

软链接

  • 可以将文件,文件夹链接到其他位置,类似快捷方式
    • 语法: ln -s 参数1 参数2
    • -s: 创建软链接
    • 参数1 : 被链接的文件/文件夹
    • 参数2 : 链接目的地
  • 层数不宜过多

日期/时区

date命令:

  • 通过date命令可以在命令行中查看系统时间

    • 语法: data [-d] [+格式化字符串]
    • -d : 按照给定的字符串显示时间,一般用于日期计算,可加减 年月日时分秒
    • 格式化字符串: 通过特定的字符串标记,来控制显示的日期格式
    • %Y:年
    • %y:年份后两位数字
    • %m:月份
    • %d:日
    • %H:小时
    • %M:分钟
    • %S:秒
    • %s:时间戳
  • 使用root权限可修改时区,执行如下代码:

    rm -f etc/localtime
    sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

ntp程序

  • 自动校准系统时间,可设为开机自启

ip地址/主机名

虚拟机的ip地址是通过DHCP服务获取的,每次重启设备都会获取一次,可能导致ip地址频繁变更

  • 如何查看ip地址:
    • ip add / ip address
    • ifconfig ------ 这个命令使用不了的可以执行yum -y install net-tools,之后就可以用了
  • 特殊IP地址:
    • 127.0.0.1 本地回环ip, 代指本机
    • 0.0.0.0 特殊IP
      • 可代指本机
      • 可在端口绑定中确定绑定关系
      • 在ip地址限制中,表示所有ip
  • 主机名
    • 如何查看: hostname
    • 如何修改: hostnamectl set-hostname 主机名 (需root)

域名解析

访问地址时先去本机的hosts文件下找,看看有没有对应的记录,找不到再去公共的DNS服务器查询(114.114.114.114 8.8.8.8)

网络传输

ping命令

可以通过ip命令,检查指定的网络服务器是否为可联通状态

  • 语法: ping [-c num] ip或主机名
  • -c : 检查的次数,不使用-c将进行无限次检查

wget命令:

非交互的文件下载器,可以在命令行内下载网络文件

  • 语法: wget [-b] url
  • -b : 可选: 后台下载,会将工作日志写入到当前的工作目录的wget-log文件
  • url:下载链接

curl命令:

  • 语法: curl [-o] url
  • -o,用于下载文件,当url是下载链接时,可以使用此选项保存文件
  • url:要发起请求的网络地址

端口

是设备和外界通讯交流的出入口,。端口可分为物理端口和虚拟端口

  • 物理端口: 又可称之为接口,是可见的端口,USB,RJ45,HDMI
  • 虚拟端口: 是指计算机内部的端口,是不可见的是用来操作系统和外部进行交互使用的

linux可以支持65535个端口,这六万个端口分为三类使用

  • 公认端口: 1-1023,通常用于一些系统内置或知名程序的使用,ssh22端口,https的443端口,非特殊需要,不占用这里面端口
  • 注册端口:1024-49151 通常可以随意使用。用于松散的绑定一些程序/服务
  • 动态端口: 49152-65535 通常不会固定绑定程序,而是当程序对外进行网络链接时,用于临时使用

查看端口占用:

可以使用linux命令去查看端口的占用情况

  • nmap ------ 查看指定ip的端口占用情况
    • 安装: yum -y install nmap
    • 语法: nmap + ip地址
  • netstat 查看端口的占用情况
    • 安装: yum -y install net-tools
    • 语法: netstat -anp | grep 端口号

进程管理

程序在操作系统中,是被操作系统所管理的,每个程序在运行的时候都会被系统注册为一个进程,并分配进程ID(进程号)

ps命令 查看linux系统中的进程信息

  • 语法: ps [-e -f]
  • -e: 列出全部的进程
  • -f: 以完全格式化的形式展示信息(展示全部信息)
  • 一般来说,固定使用就是 ps -ef 列出全部信息
  • 信息从左到右:
    • UID: 进程所属的用户id
    • PID: 进程的进程号
    • PPID: 进程的父ID
    • C: 此进程的CPU占用率(百分比)
    • STIME: 进程的启动时间
    • TTY: 启动此进程的终端序号,如显示?,表示非终端启动
    • TIME: 进程占用CPU的时间
    • CMD: 进程的启动路径或启动命令
  • 查看指定进程
    • 可以使用管道符配合grep筛选
    • eg : ps -ef | grep 筛选的信息

kill 关闭指定进程:

  • 语法: kill [-9] 进程ID
  • -9: 表示强制关闭进程。不使用此选项会向进程发送信号要求其关闭,但是是否关闭进程看自身的处理机制

主机状态

查看系统资源占用

  • top 查看cpu,内存的使用情况,默认每五秒刷新一次
    • 语法 top
    • 退出: ctrl + C 或者 单击 q
  • top命令详解:
    • 第一行: top:命令名称,当前系统时间,启动了X分钟,X个用户登录,load:1、5、15分钟负载
    • 第二行: Tasks:X个进程,X个进程子在运行,X个进程睡眠,X个停止进程,X个僵尸进程
    • 第三行: CPU使用率:us:用户CPU使用率,sy:系统CPU使用率,ni:高优先级进程占用CPU时间百分比,id:空闲CPU率,wa:IO等待CPU占用率,hi:CPU硬件中断率,si:CPU软件中断率,st:强制等待占用CPU率
    • 第四行: Kib Mem:物理内存,total:总量,free:空闲,used:使用,buff/cache:buff和cache占用
    • 第五行: KibSwap:虚拟内存(交换空间),total:总量,free:空闲,used:使用,buff/cache:buff和cache占用
  • 详细信息:
    • PID:进程id
    • USER:进程所属用户
    • PR:进程优先级,越小越高
    • NI:负值表示高优先级,正表示低优先级
    • VIRT:进程使用虚拟内存,单位KB
    • RES:进程使用物理内存,单位KB
    • SHR:进程使用共享内存,单位KB
    • S:进程状态(S休眠,R运行,Z僵死状态,N负数优先级,I空闲状态)
    • %CPU:进程占用CPU率
    • %MEM:进程占用内存率
    • TIME+:进程使用CPU时间总计,单位10毫秒
    • COMMAND:进程的命令或名称或程序文件路径
  • top命令选项
  • top交互式选项

查看磁盘监控

  • df 使用df命令可以查看磁盘使用情况
    • 语法: df [-h]
    • -h: 更人性化的单位显示
  • iostat 查看CPU,磁盘的相关信息
    • 安装: yum install -y sysstat
    • 语法: iostat [-x] [num1] [num2]
    • -x:显示更多信息
    • num1: 刷新间隔 num2: 刷新几次
    • 该设备每秒的传输次数。"一次传输"意思是"一次I/O请求"。多个逻辑请求可能会被合并为"一次I/O请求"。"一次传输"请求的大小是未知的。
  • 详细信息:
    • rrqm/s: 每秒这个设备相关的读取请求有多少被Merge了
      • (当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge, 提高IO利用率, 避免重复调用);
    • wrqm/s: 每秒这个设备相关的写入请求有多少被Merge了。
    • rsec/s: 每秒读取的扇区数;sectors
    • wsec/: 每秒写入的扇区数。
    • rKB/s: 每秒发送到设备的读取请求数
    • wKB/s: 每秒发送到设备的写入请求数
    • avgrq-sz 平均请求扇区的大小
    • avgqu-sz 平均请求队列的长度。毫无疑问,队列长度越短越好。
    • await: 每一个IO请求的处理的平均时间(单位是微秒毫秒)。
    • svctm 表示平均每次设备I/O操作的服务时间(以毫秒为单位)
    • %util: 磁盘利用率

网络状态监控

  • sar 查看网络相关统计
    • sar非常复杂,这里仅使用简单的统计网络
    • 语法: sar -n DEV num1 num2
    • -n : 查看网络,DEV表示查看网络端口
    • num1: 刷新间隔(不填就一次结束) num2 : 不填不限次数

)

  • 信息解读:
    • IFACE 本地网卡接口的名称
    • rxpck/s 每秒钟接受的数据包
    • txpck/s 每秒钟发送的数据包
    • rxKB/S 每秒钟接受的数据包大小,单位为KB
    • txKB/S 每秒钟发送的数据包大小,单位为KB
    • rxcmp/s 每秒钟接受的压缩数据包
    • txcmp/s 每秒钟发送的压缩包
    • rxmcst/s 每秒钟接收的多播数据包

环境变量:

环境变量是操作系统在运行时记录的一些关键性信息,用以辅助程序运行

  • env ------ 查看系统中记录的环境变量

环境变量: path

无论在哪里,都能执行cd这个程序,就是借助path这个项目的值来做到的,当执行任何命令时,都会按照顺序从上述路径中搜索执行程序的本体

$符号:

$用于取到环境变量记录的值

  • 语法: echo ${环境变量名}[想输出的其他内容]
  • 如果只想输出环境变量的内容,可不加{}

设置环境变量:

  • export 临时设置环境变量
    • 语法: export 变量名=变量值
  • 永久生效:
    • 针对当前用户生效,配置在当前用户的: ~/.bashrc文件中
    • 针对所有用户生效,配置在系统的: /etc/profile文件中
    • 并通过语法:source 配置文件,进行立刻生效,或重新登录FinalShell生效
  • 追加自定义path
    • PATH=$PATH:追加路径
    • 这样就保证了不会覆盖掉原本的path路径

安装和下载

rz,sz命令

除了使用FinalShell的下方窗体进行文件传输外,也可以通过rz,sz命令进行文件传输。

rz,sz命令需要安装

  • 安装: yum -y install lrzsz
  • 但是不推荐用这个命令,速度较慢,建议使用finalshell窗体拖拽实现
  • rz上传 sz下载

压缩,解压

tar命令

  • .tar,称之为tarball,归档文件,将文件简单的组装到一个.tar文件内,并没有太多的压缩,仅仅是简单的封装
  • .gz 常见为.tar.gz gzip格式压缩文件,即使用gzip压缩算法将文件压缩到一个文件内,可以极大的减小压缩后的体积
  • 语法: tar [-c -v -x -f -z -C] 参数1 参数2 ... 参数N
    • -c : 创建压缩文件,用于压缩模式
    • -v : 显示压缩,解压过程,用于查看进度
    • -x : 解压模式
    • -f : 要创建的文件,或者要解压的文件,必须处于所有选项中的最后一个
    • -z : gzip模式,不使用-z就是普通的tarball格式
    • -C : 选择解压的目的地,用于解压模式
  • eg: tar -cvf test.tar 1.txt 2.txt 3.txt------ 将123压缩到test.tar 文件中
  • eg: tar -zcvf test.tar.gz 1.txt 2.txt 3.txt------ 将123压缩到test.tar.gz 文件中,使用gzip模式
  • eg: tar -xvf test.rar解压test.rar到当前目录
  • eg: tar -zxvf test.tar.gz -c /home将.gz文件解压到指定目录

zip命令

  • 压缩语法: zip [-r] 参数1 参数2 ... 参数N
    • -r:被压缩的包含文件夹的时候,需要使用-r选项,和rm,cp的-r效果一致
    • eg: zip -r test.zip a b.txt c.txt将文件夹a,文件bc压缩到test.zip中
  • 解压语法: unzip [-d] 参数
    • -d : 指定要解压去的位置,同-c
    • 参数,被解压的zip文件
    • eg: unzip test.zip -d /home将test解压到指定目录
  • 解压同名文件会覆盖,注意保存
相关推荐
sigmoidAndRELU44 分钟前
读Vista
笔记·stable diffusion·世界模型
Sincerelyplz1 小时前
【Temproal】快速了解Temproal的核心概念以及使用
笔记·后端·开源
Yo_Becky3 小时前
【PyTorch】PyTorch预训练模型缓存位置迁移,也可拓展应用于其他文件的迁移
人工智能·pytorch·经验分享·笔记·python·程序人生·其他
即将头秃的程序媛3 小时前
centos 7.9安装tomcat,并实现开机自启
linux·运维·centos
fangeqin3 小时前
ubuntu源码安装python3.13遇到Could not build the ssl module!解决方法
linux·python·ubuntu·openssl
DIY机器人工房3 小时前
0.96寸OLED显示屏 江协科技学习笔记(36个知识点)
笔记·科技·stm32·单片机·嵌入式硬件·学习·江协科技
爱奥尼欧4 小时前
【Linux 系统】基础IO——Linux中对文件的理解
linux·服务器·microsoft
future14124 小时前
每日问题总结
经验分享·笔记
超喜欢下雨天5 小时前
服务器安装 ros2时遇到底层库依赖冲突的问题
linux·运维·服务器·ros2
tan77º5 小时前
【Linux网络编程】网络基础
linux·服务器·网络