Linux基础复习笔记第一天

Linux基础第一天笔记

1.常用的Linux系统有哪些?

  • 新手:Ubuntu、Linux Mint、Zorin OS。
  • 企业用户:RHEL、CentOS、openSUSE Leap。
  • 开发者:Fedora、Arch Linux、Manjaro。
  • 游戏/娱乐:SteamOS、Deepin。
  • 高级用户:Debian、Gentoo、NixOS。

2.哪些Linux系统属于国产化

(1)银河麒麟(KylinOS)

(2)统信UOS(UnionTech OS)

(3)欧拉(openEuler)

(4)Deepin(深度操作系统)

(5)中标麒麟(NeoKylin)

(6)红旗Linux(Red Flag Linux)

(7)普华Linux(i-soft)

(8)中兴新支点(New Start)

(9)龙蜥(Anolis OS)

(10)TencentOS

(11)一铭Linux(YMOS)

3.哪些系统使用yum,哪些使用apt?

(1)使用 APT(Advanced Package Tool)的系统:

​ APT 是 Debian 系 Linux 发行版的包管理工具,管理 .deb 格式的软件包。

发行版说明
Ubuntu最流行的 Debian 衍生版,广泛用于个人和服务器场景。
Debian最流行的 Debian 衍生版,广泛用于个人和服务器场景。
Linux Mint最流行的 Debian 衍生版,广泛用于个人和服务器场景。
Deepin国产 Linux 发行版,基于 Debian,注重美观和用户体验。
Elementary OS基于 Ubuntu,提供类似 macOS 的界面。
Zorin OS基于 Ubuntu,专为 Windows 用户设计,界面类似 Windows。
MX Linux基于 Debian,轻量级桌面系统,适合老旧硬件。

(2)使用 YUM(Yellowdog Updater Modified)的系统:

​ YUM 是 Red Hat 系 Linux 发行版的包管理工具,管理 .rpm 格式的软件包。

DNF(Dandified YUM)是 YUM 的现代替代品,用于 RHEL 8+、Fedora 22+ 等新版本。

发行版说明
Red Hat Enterprise Linux(RHEL)企业级商业发行版,长期支持(LTS)。
CentOSRHEL 的免费社区版(CentOS 8 后转向 CentOS Stream)。
FedoraRed Hat 赞助的社区版,技术前沿,常用于开发和测试。
openSUSE提供 Leap(稳定版)和 Tumbleweed(滚动更新版),支持 YUM/DNF。
Rocky LinuxRHEL 兼容的社区发行版,CentOS 8 停止维护后的替代方案。
AlmaLinux另一个 RHEL 兼容的社区发行版,与 CentOS 类似。

4.yum与apt有什么区别?

(1)基本概念与适用发行版

​ APT(Advanced Package Tool):APT 是 Debian 系 Linux 发行版的包管理工具,管理 .deb 格式的软件包。****

​ YUM(Yellowdog Updater Modified):YUM 是 Red Hat 系 Linux 发行版的包管理工具,管理 .rpm 格式的软件包。

(2)包格式与底层工具

​ APT:基于 DEB(Debian Package Manager)包管理系统,通过 APT 仓库自动解决依赖关系。

​ YUM:基于 RPM(Red Hat Package Manager) 包管理系统,通过 YUM 仓库自动解决依赖关系。

5.安装Linux系统,推荐Ubuntu22.04?

(1)长期支持(LTS)
支持周期:Ubuntu 22.04 LTS 提供 5 年技术支持(至 2027 年),适合需要长期稳定性的场景(如生产环境、企业服务器、开发环境)。
安全性:定期发布安全补丁和更新,降低系统漏洞风险。
(2)稳定性与性能优化
内核版本:基于 Linux Kernel 5.15(部分资料提到 6.8,需确认),对现代硬件(如 NVMe SSD、多核 CPU)支持更完善。
性能提升:优化了内存管理、磁盘 I/O 和启动速度,适合高负载任务(如开发、虚拟化、数据库服务)。
(3)软件生态丰富
预装工具:默认包含 LibreOffice、Firefox、Thunderbird 等常用软件,满足办公和开发需求。
软件源支持:提供丰富的 APT 仓库,安装第三方软件简单高效(如 sudo apt install )。
兼容性:支持 GNOME 42 桌面环境,适配触控设备和高分辨率显示器。
(4)安全增强
安全机制:默认启用 AppArmor 和 SELinux,强化应用程序隔离和权限控制。
加密支持:支持 OpenSSL v3,提升数据传输和存储的安全性。
(5)社区与商业支持
开源社区:活跃的开发者社区,问题排查和资源获取便捷。
企业支持:Canonical 提供付费技术支持(如 Ubuntu Advantage),适合企业用户。

6.Linux安装系统之后,如何使用账号密码登录,截图你登录成功的界面。

(1)本地终端登录

​ 根据安装系统时设置的账号密码登录

在这里插入图片描述

(2)通过ssh远程登录

​ 首先要查看本机的IP地址:

#管理网络接口的 IP 地址
ip addr

在这里插入图片描述

​ 我这边选择的是windterm工具:

在这里插入图片描述

​ 输入账户名和密码,便可以进入到ssh工具界面

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

7.Linux下的目录结构是什么与Windows有什么区别?

目录用途示例特点
/根目录所有文件系统的起点
/bin基本用户命令/bin/ls/bin/bash通常为/usr/bin的符号链接
/boot启动文件/boot/vmlinuz/boot/grub/grub.cfg系统启动依赖,勿随意删除
/dev设备文件/dev/sda/dev/null以文件形式表示硬件设备
/etc配置文件/etc/passwd/etc/fstab系统和应用程序的配置文件
/home用户主目录/home/user1/home/user2每个用户有独立子目录
/lib系统库文件/lib/libc.so.6支持/bin和/sbin中的命令
/lost+found文件恢复文件系统检查时恢复损坏文件
/media可移动设备挂载/media/usb自动挂载U盘、光盘等
/mnt临时挂载点/mnt/data手动挂载硬盘分区、网络共享
/opt第三方软件/opt/google/chrome安装大型商业软件或工具
/proc虚拟文件系统/proc/cpuinfo/proc/1/status显示运行时系统信息
/rootroot用户主目录/root/.bashrc仅root可访问
/run运行时数据/run/lock/subsys重启后清空,存储临时状态
/sbin系统管理命令/sbin/reboot/sbin/fdisk通常需root权限
/sys硬件状态/sys/class/net/内核与硬件交互接口
/tmp临时文件/tmp/scratch重启后清空,所有用户可读写
/usr用户程序和资源/usr/bin/usr/share类似Windows的Program Files
/var动态数据/var/log/syslog/var/spool/cron存储日志、缓存、队列数据
/
├── bin/           # 基本用户命令
├── boot/          # 启动文件
├── dev/           # 设备文件
├── etc/           # 配置文件
├── home/          # 用户主目录
│   ├── user1/     # 用户1的文件
│   └── user2/     # 用户2的文件
├── lib/           # 系统库文件
├── lost+found/    # 文件恢复
├── media/         # 可移动设备挂载点
├── mnt/           # 临时挂载点
├── opt/           # 第三方软件
├── proc/          # 虚拟文件系统
├── root/          # root 用户主目录
├── run/           # 运行时数据
├── sbin/          # 系统管理命令
├── sys/           # 硬件状态
├── tmp/           # 临时文件
├── usr/           # 用户程序和资源
│   ├── bin/       # 用户级应用程序
│   ├── lib/       # 应用程序依赖库
│   ├── include/   # 头文件(开发)
│   ├── share/     # 共享数据(字体、文档)
│   └── local/     # 本地安装的软件
└── var/           # 动态数据
    ├── log/       # 系统日志
    ├── cache/     # 应用缓存
    ├── spool/     # 队列数据(邮件、打印)
    └── lib/       # 程序运行时数据

和Windows的区别:

特性LinuxWindows
目录结构单一树状结构(所有文件从 / 开始)多根结构(如 C:\ 、D:\ )
路径分隔符正斜杠 /反斜杠 \
大小写敏感区分大小写(File.txt 不等与 file.txt)不区分大小写
权限管理基于rwx权限模型(用户/组/其他)基于ACL(访问控制列表)

8.Linux下如何 进入目录,创建目录,删除目录,更改目录名,移动目录

(1)进入目录 :cd

​ 命令:cd [路径]

​ 功能:切换当前工作目录

​ 示例:

cd /home/user/Documents  # 进入指定路径
cd ..                    # 返回上一级目录
cd ~                     # 返回当前用户的家目录
cd -                     # 返回上一次所在的目录

(2)创建目录:mkdir

​ 命令:mkdir [选项] 目录名

​ 功能:创建新目录

​ 常用选项:

  • -p:递归创建多级目录(即使父目录不存在也会自动创建)。
  • -m:设置目录权限(如 mkdir -m 755 secure_dir)。

​ 示例:

mkdir project            # 创建单个目录
mkdir -p project/src     # 递归创建多级目录(project/src)

(3)删除目录:rmdirrm -r

​ 命令:rmdir [目录名]rm -r [目录名]

​ 功能:

  • rmdir:仅删除空目录。

  • rm -r:递归删除目录及其内容(需谨慎使用)。

  • rm -rf:强制删除(不提示确认)。

    示例:

    rmdir empty_dir          # 删除空目录
    rm -r non_empty_dir      # 删除非空目录(会提示确认)
    rm -rf non_empty_dir     # 强制删除非空目录(无提示)
    

(4)更改目录名:mv

命令:mv [原目录名] [新目录名]

​ 功能:重命名目录(或文件)。

​ 示例:

mv old_dir new_dir       # 将 old_dir 重命名为 new_dir

(5)移动目录:mv

命令:mv [原目录路径] [目标路径]

​ 功能:将目录移动到其他位置。

​ 示例:

mv project /home/user/backup/  # 将 project 目录移动到 /home/user/backup/

(6)实际场景示例

场景 1:创建项目目录结构

mkdir -p project/{src,docs,tests}  # 创建 src、docs、tests 子目录

场景 2:清理旧目录

rm -rf /tmp/old_project            # 删除 /tmp 下的旧项目目录

场景 3:重命名并移动目录

mv project new_project             # 重命名目录
mv new_project /home/user/backup/  # 移动到备份目录

9.Linux下如何 查看文件,删除文件,更改文件名,移动文件

(1)查看文件内容

命令功能示例
cat显示文件的全部内容(适合小文件)cat file.txt
more分页查看文件内容(按空格翻页,按 q 退出)。more large_file.txt
less分页查看文件内容(支持上下键滚动,按 q 退出)。less big_file.log
head显示文件前几行(默认 10 行)。head file.txt
tail显示文件后几行(默认 10 行,实时查看日志时常用 -f)。tail -n 20 file.txt
tail -f log.txt

注意事项

  • cat 适合查看小文件,大文件可能导致终端卡顿。
  • lessmore 更灵活(支持上下滚动)。
  • tail -f 可实时监控日志文件更新。

(2)删除文件

​ 命令:rm [文件名]

​ 功能: 删除文件或目录(需谨慎使用)

​ 常用选项:

  • -i:删除前提示确认(避免误删)
  • -f:强制删除(不提示确认)
  • -v:显示删除过程(verbose模式)

​ 示例:

rm file.txt                  # 删除单个文件
rm -i *.txt                  # 删除当前目录下所有 .txt 文件(需确认)
rm -rf directory/            # 强制删除目录及其内容(危险操作!)

注意事项

  • rm -rf / 是毁灭性操作,绝对不能执行

  • 删除文件前建议先用 ls 确认路径和文件名。

  • 若权限不足,可使用sudo提权:

    sudo rm -rf directory/
    

(3)更改文件名

​ 命令:mv [原文件名] [新文件名]

​ 功能:重命名文件或目录

​ 示例:

mv old_name.txt new_name.txt       # 将 old_name.txt 重命名为 new_name.txt
mv file.txt /path/to/new_directory/ # 移动并重命名文件

注意事项

  • 使用通配符(如 *.txt)时,确保目标路径存在。
  • 移动目录时,目录内容会一并移动。

(4)常见问题与技巧

场景1:误删文件怎么办?
Linux 默认没有回收站,删除后无法恢复!建议:

  • 使用 rm -i 确认删除。
  • 对重要文件定期备份。

场景2:查找文件后直接操作
结合 findxargs 批量处理文件:

find /path/to/search -name "*.log" -exec rm -f {} \;  # 删除所有 .log 文件

场景3:查看文件类型
使用 file 命令判断文件类型:

file file.txt        # 显示文件类型(如 ASCII text)

场景4:文件权限问题
若无法操作文件(如删除或重命名),检查权限:

ls -l file.txt       # 查看文件权限
chmod +w file.txt    # 添加写权限

10.Linux下如何编辑文件。

(1)使用vivim编辑器

vi 是 Linux 最经典的文本编辑器,vim 是其增强版,功能更强大。适合命令行环境和高级用户。

基本操作流程:

  • 打开文件
vi 文件名    # 例如:vi example.txt

如果文件不存在,会创建新文件

  • 切换到插入模式

​ 按键i(insert)进入插入模式,此时可编辑文本。

​ 其他进入插入模式的按键:

a:在当前光标后插入

o:在当前行下方插入新行

  • 保存并退出

    Esc退出插入模式,进入命令模式。

    输入以下命令并按回车:

    :wq:保存并退出

    :q!:强制退出(不保存)

    :w:仅保存

    :q:仅退出(文件未修改时)

  • 常用快捷键

    操作快捷键
    删除当前行dd
    复制当前行yy
    粘贴p
    查找关键字/关键字
    撤销操作u
    显示行号:set nu
    移动到文件末尾G
    移动到文件开头gg

(2)其他编辑器

编辑器特点适用场景
vi/vim功能强大,适合命令行环境高级用户、服务器管理
nano简单易用,适合新手快速编辑小型文件
gedit图形化界面,操作直观图形桌面环境下的日常编辑
emacs功能丰富,支持插件和自定义高级编程和文本处理

(3)实际场景示例

场景 1:修改系统配置文件

sudo vi /etc/ssh/sshd_config  # 修改 SSH 配置

场景 2:快速编辑日志文件

nano /var/log/syslog  # 查看并临时修改日志(谨慎操作!)

场景 3:批量替换文本
使用 vim 替换文件中的所有 oldnew

vim 文件名

vim命令模式下输入:

:%s/old/new/g
:wq

11.Linux的Tab键有什么用,按1次和按2次有什么区别,对应什么场景

在 Linux 命令行中,Tab 键是提升效率的重要工具,主要用于自动补全命令、路径、参数等。

(1)按 1 次 Tab 键的作用

功能

自动补全唯一匹配项:如果当前输入的内容只有一个可能的匹配项,系统会直接补全整个内容。

无操作(无匹配时):如果当前输入的内容没有唯一匹配项,按 1 次 Tab 键不会有任何反应。

适用场景

​ 命令补全:输入部分命令后,按 Tab 键自动补全完整命令。

示例

ls /etc/pa[TAB]  # 自动补全为 `ls /etc/passwd`(假设只有唯一匹配)

​ 路径补全:输入路径的一部分后,按 Tab 键补全完整路径。

示例

cd /ho[TAB]  # 自动补全为 `cd /home/`

2. 按 2 次 Tab 键的作用

功能

  • 列出所有可能的匹配项:如果当前输入的内容存在多个匹配项,按 2 次 Tab 键会列出所有可能的选项,方便用户选择。

适用场景

​ 命令补全:输入部分命令后,按 2 次 Tab 键查看所有可能的命令。

​ 示例:

ls /etc/p[TAB][TAB]  # 显示所有以 `/etc/p` 开头的命令或文件(如 `passwd`、`php.ini` 等)

​ 路径补全:输入路径的一部分后,按 2 次 Tab 键列出所有匹配的目录或文件。

​ 示例:

cd /u[TAB][TAB]  # 显示所有以 `/u` 开头的路径(如 `/usr`、`/users` 等)

(3)实际使用场景

场景 1:快速补全命令

vi /etc/ap[TAB]  # 如果只有 `apache2` 匹配,补全为 `/etc/apache2`
  • 按 1 次 Tab:直接补全为 /etc/apache2
  • 按 2 次 Tab:列出所有以 /etc/ap 开头的路径(如 /etc/apt//etc/apparmor/ 等)。

场景 2:处理长路径

cd /home/user/do[TAB]  # 补全为 `/home/user/documents/`
  • 按 1 次 Tab:直接补全路径。
  • 按 2 次 Tab:列出所有以 /home/user/do 开头的目录(如 documents/downloads/ 等)。

场景 3:补全参数或选项

git st[TAB][TAB]  # 列出所有以 `st` 开头的 Git 命令(如 `status`、`stash`)

(4)常见问题与技巧

问题 1:Tab 键不起作用

原因:终端模拟器设置问题、Shell 配置冲突(如 .bashrc 中禁用了补全功能)。

​ 解决方法:

  • 检查终端设置,确保未禁用 Tab 补全。
  • 重启终端或运行 source ~/.bashrc 重新加载配置。

问题 2:补全选项过多

​ 解决方法:

  • 按 2 次 Tab 查看所有选项。
  • 输入更多字符后再按 Tab(逐步缩小匹配范围)。

技巧:

  • 通配符补全:输入*.txt后按 Tab,系统会列出所有.txt文件。

    rm file[TAB]  # 补全为 `file1.txt`(如果有唯一匹配)
    

12.如何查看一个目录的大小

(1) 基本用法

1.查看目录的总大小

du -sh /path/to/directory

参数解释:

  • -s:汇总模式,只显示目录的总大小(不列出子目录的大小)。
  • -h:以易读的格式显示大小(如 KB、MB、GB)。
  • /path/to/directory:替换为实际的目录路径。

示例

du -sh /home/user/data

​ 输出可能为:

2.3G    /home/user/data

2.查看目录及其子目录的详细大小

du -h /path/to/directory
  • 功能:列出目录下每个文件和子目录的大小。

示例

du -h /home/user/data

​ 输出可能为:

1.5M    /home/user/data/file1.txt
2.0M    /home/user/data/subdir1
3.5G    /home/user/data/subdir2

(2)高级用法

1.递归查看并按大小排序

du -ah /path/to/directory | sort -h
  • 功能:列出目录下的所有文件和子目录,并按从小到大的顺序排序。

示例

du -ah /home/user/data | sort -h

2.从大到小排序

du -ah /path/to/directory | sort -hr
  • 功能:列出目录下的所有文件和子目录,并按从大到小的顺序排序。

示例

du -ah /home/user/data | sort -hr

(3)其他方法

1.使用 lsawk 计算当前目录下所有文件的大小总和

ls -l | awk '{sum += $5} END {print sum}'
  • 功能:仅计算当前目录下所有文件的大小总和(不包括子目录)。

2.使用 ncdu 工具(交互式磁盘使用分析)

安装 ncdu

  • Ubuntu/Debian:

    sudo apt install ncdu
    
  • CentOS/RHEL:

    sudo yum install ncdu
    

运行 ncdu

ncdu /path/to/directory
  • 功能:交互式查看目录大小,并支持快速导航和删除操作。

(4)常见问题及解决方法

问题 1:权限不足

  • 现象:无法访问某些受保护的目录。

  • 解决方法:使用sudo提权。

    sudo du -sh /path/to/protected_directory
    

问题 2:目录结构复杂导致 du 运行缓慢

  • 解决方法:限制递归深度(--max-depth 参数)。

    du -h --max-depth=1 /path/to/directory
    

问题 3:排除特定文件或目录

  • 解决方法:使用--exclude 参数。

    du -sh --exclude='*.log' /path/to/directory
    

13.如何查看一个文件的大小

(1)使用 ls 命令(查看文件的实际内容大小)

基本语法

ls -l 文件路径
  • 默认单位:字节(Byte)

  • 示例:

    ls -l /etc/passwd
    

    输出:

    -rw-r--r-- 1 root root 1234 May 10 14:30 /etc/passwd
    
    • 第5列1234)表示文件的实际大小(字节)。

以人类可读格式显示大小

ls -lh 文件路径
  • 示例:

    ls -lh /etc/passwd
    

    输出:

    -rw-r--r-- 1 root root 1.2K May 10 14:30 /etc/passwd
    
    • 1.2K 表示文件大小为 1.2 千字节。

2. 使用 du 命令(查看文件的磁盘占用空间)

基本语法

du -b 文件路径
  • 功能:显示文件占用的磁盘空间(以字节为单位)。

  • 示例:

    du -b /etc/passwd
    

    输出:

    4096    /etc/passwd
    
    • 4096 表示文件占用 4096 字节(即使文件实际内容只有 1234 字节,也可能因文件系统块大小而占用更多空间)。

以人类可读格式显示磁盘占用空间

du -h 文件路径
  • 示例:

    du -h /etc/passwd
    

    输出:

    4.0K    /etc/passwd
    

3. 使用 stat 命令(查看文件的详细信息)

基本语法

stat 文件路径
  • 功能:显示文件的元数据,包括实际大小、磁盘占用块数等。

  • 示例:

    stat /etc/passwd
    

    输出:

    File: /etc/passwd
    Size: 1234        Blocks: 8          IO Block: 4096   regular file
    ...
    
    • Size:文件的实际内容大小(字节)。
    • Blocks:文件占用的磁盘块数(每个块通常为 512 字节或 4096 字节)。

仅显示文件的实际大小

stat -c "%s" 文件路径
  • 示例:

    stat -c "%s" /etc/passwd
    

    输出:

    1234
    

4. 其他方法

使用 wc 命令(统计文件内容的字节数)

wc -c 文件路径
  • 功能:仅统计文件内容的字节数。

  • 示例:

    wc -c /etc/passwd
    

    输出:

    1234 /etc/passwd
    

命令对比与选择建议

命令显示内容适用场景优势
ls -l文件的实际内容大小(字节)快速查看单个文件大小简洁直观,支持 -h 人类可读格式
du -b文件占用的磁盘空间(字节)分析存储占用(如小文件优化)反映真实磁盘消耗
stat实际大小 + 磁盘占用块数调试文件系统行为信息全面,支持定制输出
wc -c文件内容的字节数脚本中精确获取大小输出纯净,易于程序解析

注意事项

  • 权限问题

​ 查看系统文件时可能需要sudo权限,例如:

sudo du -h /root/file
  • 实际大小 vs 磁盘占用

实际大小ls/stat/wc):文件的真实内容大小。

磁盘占用du):受文件系统块大小影响,小文件可能占用更多空间。

​ 例如:1 字节的文件可能占用 4KB 的磁盘空间(默认块大小为 4KB)。

  • 文件路径含空格

​ 若文件路径包含空格,需用引号或反斜杠转义:

ls -l "文件 名"
# 或
ls -l 文件\ 名

14.如何查看系统磁盘的大小

(1)使用 df 命令(查看已挂载磁盘的使用情况)

基本语法

df -h

功能:以人类可读的格式(如 GB、MB)显示已挂载磁盘的总容量、已用空间、可用空间及使用百分比。

​ 示例输出:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        20G   15G  4.0G  78% /
tmpfs           3.9G     0  3.9G   0% /dev/shm
/dev/sdb1       100G   60G   40G  60% /data
  • Size:磁盘总容量。
  • Mounted on:挂载点路径。

其他常用选项

  • 查看特定文件系统类型:

    df -t ext4  # 仅显示 ext4 文件系统
    
  • 排除特定文件系统类型:

    df -x tmpfs -x devtmpfs  # 排除 tmpfs 和 devtmpfs
    
  • 汇总所有磁盘的总容量:

    df -h --total
    

(2)使用 fdisk 命令(查看磁盘和分区的详细信息)

基本语法

sudo fdisk -l

功能:列出所有磁盘及其分区的详细信息,包括总大小、分区表类型、起始和结束扇区等。

​ 示例输出:

Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
  • Disk /dev/sda:磁盘名称及总大小(如 21.5 GB)。

适用场景

  • 查看未挂载的磁盘或分区信息。
  • 分析磁盘的分区表结构(如 MBR 或 GPT)。

(1)使用 lsblk 命令(列出块设备信息)

基本语法

lsblk

功能:以树状结构显示磁盘、分区及挂载点信息。

​ 示例输出:

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0  21.5G  0 disk
└─sda1   8:1    0  20.5G  0 part /
sdb      8:16   0 107.4G  0 disk
└─sdb1   8:17   0 107.4G  0 part /data
  • SIZE:磁盘或分区的大小。
  • MOUNTPOINT:挂载点路径。

扩展功能

  • 显示文件系统类型和挂载点:

    lsblk -f
    

4. 使用 parted 命令(高级分区工具)

基本语法

sudo parted -l

功能:列出所有磁盘的分区信息,包括总大小、分区类型和文件系统。

​ 示例输出:

Disk /dev/sda: 21.5GB
Disk /dev/sdb: 107.4GB

(5)查看未挂载磁盘的总大小

如果某些磁盘未挂载,可以结合 fdisklsblk 查看:

lsblk | grep disk
  • 示例输出:

    sda      8:0    0  21.5G  0 disk
    sdb      8:16   0 107.4G  0 disk
    

(6)图形化工具(适用于桌面环境)

  • GNOME 桌面环境:
    1. 打开应用程序菜单,搜索并运行 “磁盘” 工具。
    2. 以图形界面查看磁盘分区、总大小、已用空间等信息。

(6)命令对比与选择建议

命令适用场景优势
df -h快速查看已挂载磁盘的使用情况简单直观,支持人类可读格式
fdisk -l查看磁盘和分区的详细信息显示分区表类型和扇区信息
lsblk列出磁盘和分区的树状结构输出清晰,支持文件系统类型和挂载点
parted -l高级分区信息分析支持大容量磁盘(如 GPT 分区)

注意事项

  1. 权限问题
    • fdiskparted 需要 sudo 权限。
    • 普通用户使用 dflsblk 通常无需权限。
  2. 磁盘大小单位
    • dfSize 列默认以 1K 块为单位,使用 -h 参数后自动转换为 GB/MB。
    • fdiskparted 以字节(bytes)为单位显示磁盘大小。
  3. 未挂载磁盘
    • 未挂载的磁盘在 df 中不会显示,需通过 fdisklsblk 查看。

15.Linux中进程是什么

在 Linux 系统中,进程(Process) 是操作系统进行资源分配和调度的基本单位。它是程序在内存中的一次动态执行过程,包含程序代码、数据、运行状态及系统资源(如内存、文件描述符等)。

(1)进程的核心概念

  • 程序 vs 进程

    • 程序:是静态的指令集合(如存储在磁盘上的可执行文件)。
    • 进程:是程序的运行实例,是动态的,占用系统资源(CPU、内存、I/O 等)。

    例如:/bin/ls 是程序,运行 ls 命令时会创建一个对应的进程。

  • 进程的唯一标识符(PID)

    • 每个进程都有唯一的 进程 ID(PID),由内核分配,用于标识和管理进程。
    • 父进程的 PID 称为 PPID(Parent Process ID)。
  • 进程控制块(PCB)

    • 进程的信息通过 PCB(Process Control Block) 存储,Linux 中的 PCB 是 task_struct 结构体。

    • task_struct
      

      包含以下关键信息:

      • 状态:进程的当前状态(运行、睡眠、停止等)。
      • 资源分配:内存地址、打开的文件、信号处理方式等。
      • 优先级:Nice 值(-20 到 19,值越低优先级越高)。
      • 调度信息:进程的调度策略和上下文切换数据。

(2)进程的状态

Linux 进程可能处于以下状态之一(可通过 pstop 查看):

状态含义
R可运行(Running):进程正在运行或等待 CPU 调度。
S可中断睡眠(Sleeping):进程等待某个事件(如 I/O 完成),可被信号中断。
D不可中断睡眠(Uninterruptible Sleep):进程等待关键资源(如磁盘 I/O),不能被信号中断。
T停止(Stopped):进程被暂停(如收到 SIGSTOP 信号)。
Z僵尸(Zombie):进程已终止,但父进程未回收其资源。
X退出(Dead):进程即将被销毁(通常不可见)。

(3)进程的分类

  1. 交互式进程
    • 由用户直接启动(如终端中运行的 vimbash)。
    • 需要与用户交互,响应时间敏感。
  2. 批处理进程
    • 在后台运行,不与用户直接交互(如定时任务 cron)。
    • 通常按计划执行,对响应时间要求较低。
  3. 守护进程(Daemon)
    • 系统启动时运行的后台进程(如 sshdnginx)。
    • 无控制终端,提供系统服务。

(4)进程的创建与管理

  • 创建进程

    • 使用 fork() 系统调用复制当前进程,生成子进程。
    • 子进程通过 exec() 系列函数加载新的程序代码。
  • 进程调度

    • 内核通过调度器(Scheduler)分配 CPU 时间片。
    • 支持多种调度策略(如 SCHED_FIFOSCHED_RR)。
  • 进程优先级

    • 通过 Nice 值 调整优先级(范围 -20 到 19)。

    • 使用nicerenice命令设置优先级:

      nice -n 5 ./myprogram    # 启动进程,Nice 值为 5(优先级较低)
      renice -10 -p 1234       # 修改 PID 为 1234 的进程优先级为 -10
      

(5)查看和管理进程的常用命令

命令功能
ps查看当前进程快照(如 ps -efps aux)。
top / htop实时监控进程资源使用情况(CPU、内存等)。
kill向进程发送信号(如 kill -9 PID 强制终止进程)。
pkill根据名称终止进程(如 pkill nginx)。
pgrep根据名称查找进程 PID(如 pgrep sshd)。
pstree以树状结构显示进程层级关系。

(6)进程与线程的关系

  • 进程:拥有独立的地址空间和资源(如内存、文件描述符)。
  • 线程:同一进程内的执行单元,共享进程的资源,但拥有独立的栈和寄存器。
  • Linux 中的线程:通过 pthread 库实现,本质上是轻量级进程(Lightweight Process)。

(7)进程的生命周期

  1. 创建:通过 fork()exec() 生成。
  2. 运行:占用 CPU 执行代码。
  3. 等待:因 I/O 或资源阻塞进入睡眠状态。
  4. 终止:通过 exit() 或信号结束,进入僵尸状态。
  5. 清理:父进程调用 wait() 回收资源。

示例:查看进程信息

# 查看当前终端的进程
ps -o pid,ppid,cmd,%cpu,%mem --sort -%cpu

# 实时监控进程资源
top

# 查看指定进程的详细信息
cat /proc/1234/status   # 1234 是进程的 PID

16.如何查看哪个进程占用CPU最高

方法 1:使用 top 命令

top 是 Linux 最常用的实时进程监控工具,默认按 CPU 使用率排序。

步骤:

  1. 运行 top 命令:

    top
    
  2. 按 CPU 使用率排序:

    • top 界面中按下键盘上的 P(大写),进程列表会按 CPU 使用率从高到低排序。
    • 最上方的进程即为当前占用 CPU 最高的进程。
  3. 退出 top

    • qCtrl + C 退出。

关键字段解释:

  • %CPU:进程占用的 CPU 百分比。
  • PID:进程 ID。
  • COMMAND:启动进程的命令名称。

方法 2:使用 htop 命令(增强版 top

htop 提供更友好的交互界面和更直观的进程管理功能。

步骤:

  1. 安装 htop(如未安装):

    sudo apt install htop    # Debian/Ubuntu
    sudo yum install htop    # CentOS/RHEL
    
  2. 运行 htop

    htop
    
  3. 按 CPU 使用率排序:

    • 默认按 CPU 使用率排序,占用最高的进程会显示在顶部。
    • 可通过鼠标点击表头(如 %CPU)调整排序方式。

优势:

  • 支持颜色标记、垂直/水平滚动。
  • 可直接通过鼠标选择进程并操作(如终止、调整优先级)。

方法 3:使用 ps 命令(一次性快照)

ps 可快速列出当前系统的进程状态,并结合 sort 排序。

查看 CPU 占用最高的前 10 个进程:

ps aux --sort=-%cpu | head -n 10

输出示例:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      1234 99.6  0.1  57636  2936 ?      R    10:00  26:19 java
root      1235 98.7  0.1  57636  2936 ?      R    10:01  26:18 java
...

关键参数:

  • --sort=-%cpu:按 CPU 使用率降序排序。
  • head -n 10:仅显示前 10 行结果。

方法 4:使用 pidstat 命令(详细统计)

pidstatsysstat 工具包中的命令,提供更详细的进程资源使用数据。

步骤:

  1. 安装 sysstat(如未安装):

    sudo apt install sysstat    # Debian/Ubuntu
    sudo yum install sysstat    # CentOS/RHEL
    
  2. 查看 CPU 使用情况:

    pidstat -u 1 5
    
    • -u:显示 CPU 使用情况。
    • 1:每秒更新一次。
    • 5:总共显示 5 次。

输出示例:

Linux 5.4.0 (hostname)    01/01/2025     _x86_64_    (4 CPU)

01:00:00 PM   UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
01:00:01 PM     0      1234   99.60    0.00    0.00    0.00   99.60     0  java
01:00:01 PM     0      1235   98.70    0.00    0.00    0.00   98.70     0  java
...

方法 5:直接查看 /proc 文件系统

通过 /proc 文件系统可获取进程的详细资源使用情况。

查看指定进程的 CPU 使用率:

cat /proc/<PID>/stat
  • <PID>:替换为实际进程 ID。
  • 输出中的第 14 和 15 个字段表示用户态和内核态的 CPU 时间(以时钟周期为单位)。

进一步分析高 CPU 进程的原因

如果发现某个进程占用 CPU 过高,可进一步排查:

  1. 检查进程的线程(适用于多线程程序):

    top -Hp <PID>
    
    • H 键切换线程视图,找到占用 CPU 最高的线程。
  2. 将线程 ID 转换为 16 进制:

    printf "%x\n" <LID>
    
    • <LID>:线程 ID。
  3. 分析线程堆栈(如 Java 应用):

    jstack <PID> | grep <16进制LID> -A 10
    
  4. 使用 strace 跟踪系统调用:

    strace -p <PID>
    

总结:推荐方法

方法适用场景优点
top实时监控系统资源使用情况默认安装,无需额外配置
htop图形化交互式进程管理界面友好,支持鼠标操作
ps快速查看一次性快照结合 sort 可灵活排序
pidstat详细统计进程资源使用(需安装)提供时间间隔内的平均值

17.如何查看哪个进程占用内存最高

方法 1:使用 top 命令

top 是 Linux 最常用的实时进程监控工具,默认按 CPU 使用率排序,但可以切换为按内存排序。

步骤:

  1. 运行 top 命令:

    top
    
  2. 按内存占用排序:

    • top 界面中按下键盘上的 Shift + M,进程列表会按内存使用率从高到低排序。
    • 最上方的进程即为当前占用内存最高的进程。
  3. 退出 top

    • qCtrl + C 退出。

关键字段解释:

  • %MEM:进程占用的物理内存百分比。
  • RES(Resident Set Size):进程实际占用的物理内存大小(单位 KB)。
  • VIRT(Virtual Memory):进程使用的虚拟内存总量(包括物理内存和 Swap)。

方法 2:使用 htop 命令(增强版 top

htop 提供更友好的交互界面和更直观的进程管理功能。

步骤:

  1. 安装 htop(如未安装):

    sudo apt install htop    # Debian/Ubuntu
    sudo yum install htop    # CentOS/RHEL
    
  2. 运行 htop

    htop
    
  3. 按内存使用率排序:

    • 默认按 CPU 使用率排序,可通过点击表头 MEM% 列或按下 F6 键选择 MEM% 排序。
    • 占用内存最高的进程会显示在顶部。

优势:

  • 支持颜色标记、垂直/水平滚动。
  • 可直接通过鼠标选择进程并操作(如终止、调整优先级)。

方法 3:使用 ps 命令(一次性快照)

ps 可快速列出当前系统的进程状态,并结合 sort 排序。

查看内存占用最高的前 10 个进程:

ps aux --sort=-%mem | head -n 10

输出示例:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      1234  0.5 10.2  57636  2936 ?      Ss   10:00  26:19 java
root      1235  0.3 8.7  57636  2936 ?      Ss   10:01  26:18 java
...

关键参数:

  • --sort=-%mem:按内存使用率降序排序。
  • head -n 10:仅显示前 10 行结果。
  • RSS:实际占用的物理内存(Resident Set Size)。
  • VSZ:虚拟内存使用量(Virtual Memory Size)。

方法 4:使用 /proc 文件系统

通过 /proc 文件系统可获取进程的详细内存使用情况。

查看指定进程的内存使用:

cat /proc/<PID>/status | grep -i mem
  • <PID>:替换为实际进程 ID。

  • 输出示例:

    VmSize:   57636 kB  # 虚拟内存(VIRT)
    VmRSS:     2936 kB   # 实际内存(RES)
    VmSwap:       0 kB   # Swap 使用量
    

方法 5:使用 smem 命令(更详细的内存报告)

smem 提供更精确的内存统计,支持按物理内存、Swap 等排序。

步骤:

  1. 安装 smem(如未安装):

    sudo apt install smem    # Debian/Ubuntu
    sudo yum install smem    # CentOS/RHEL
    
  2. 查看内存占用最高的进程:

    smem -s rss -r | head -n 10
    
    • -s rss:按实际内存(RSS)排序。
    • -r:降序排列。

输出示例:

  PID User     Command                         Swap      USS      PSS      RSS
 1234 root     java                            0.0   2936.0   2936.0   57636.0
 1235 root     java                            0.0   2936.0   2936.0   57636.0
...

方法 6:使用 glances 工具(综合监控)

glances 是一个综合监控工具,支持内存、CPU、磁盘等资源的实时查看。

步骤:

  1. 安装 glances

    sudo apt install glances    # Debian/Ubuntu
    sudo yum install glances    # CentOS/RHEL
    
  2. 运行 glances

    glances
    
  3. 按内存排序:

    • 按键 m 可切换内存排序视图。

进一步分析内存占用高的原因

如果发现某个进程占用内存过高,可进一步排查:

  1. 检查进程的线程(适用于多线程程序):

    top -Hp <PID>
    
    • H 键切换线程视图,找到占用内存最高的线程。
  2. 将线程 ID 转换为 16 进制:

    printf "%x\n" <LID>
    
    • <LID>:线程 ID。
  3. 分析线程堆栈(如 Java 应用):

    jstack <PID> | grep <16进制LID> -A 10
    
  4. 使用 pmap 查看内存映射:

    pmap -x <PID>
    
  5. 检查 Swap 使用情况:

    • top 中按 f 键启用 SWAP 字段。

    • 或使用:

      smem -s swap -r | head -n 10
      

总结:推荐方法

方法适用场景优点
top实时监控系统资源使用情况默认安装,无需额外配置
htop图形化交互式进程管理界面友好,支持鼠标操作
ps快速查看一次性快照结合 sort 可灵活排序
smem详细统计内存使用(需安装)支持 Swap 和物理内存区分
/proc精确查看单个进程的内存使用直接读取内核数据,无需额外工具

18.系统重启和关机命令有哪些

一、系统重启命令

  1. reboot
  • 功能:立即重启系统。

  • 示例:

    sudo reboot
    
  • 特点:

    • 简单直接,适合快速重启。
    • 会通知用户并安全关闭服务,避免数据丢失。
  1. shutdown -r
  • 功能:安全重启系统,支持延迟和通知用户。

  • 示例:

    sudo shutdown -r now      # 立即重启
    sudo shutdown -r +5       # 5分钟后重启
    sudo shutdown -r 23:00    # 在23:00重启
    sudo shutdown -r +10 "系统将在10分钟后重启,请保存工作!"  # 带警告信息
    
  • 特点:

    • -r 表示重启(reboot)。
    • 可指定时间或发送通知,适合生产环境。
  1. init 6
  • 功能:通过切换运行级别(runlevel)重启系统。

  • 示例:

    sudo init 6
    
  • 特点:

    • 早期 Linux 系统常用,现代系统中逐渐被 rebootshutdown 替代。

二、系统关机命令

  1. shutdown -h
  • 功能:安全关机,支持延迟和通知用户。

  • 示例:

    sudo shutdown -h now      # 立即关机
    sudo shutdown -h +10      # 10分钟后关机
    sudo shutdown -h 04:00    # 在04:00关机
    sudo shutdown -h +5 "系统将在5分钟后关机,请保存工作!"  # 带警告信息
    
  • 特点:

    • -h 表示关机(halt)。
    • 安全关闭所有服务并通知用户,适合生产环境。
  1. halt
  • 功能:停止系统运行,但不一定关闭电源。

  • 示例:

    sudo halt
    
  • 特点:

    • 类似于 shutdown -h,但不强制切断电源。
    • 通常需要手动关闭电源。
  1. poweroff
  • 功能:立即关闭系统并切断电源。

  • 示例:

    sudo poweroff
    
  • 特点:

    • 直接断电,操作“粗暴”。
    • 如果系统有未保存的数据,可能导致数据丢失,不建议随意使用。
  1. init 0
  • 功能:通过切换运行级别(runlevel)关机。

  • 示例:

    sudo init 0
    
  • 特点:

    • 早期 Linux 系统常用,现代系统中逐渐被 shutdownpoweroff 替代。

三、注意事项

  1. 权限要求:

    • 大多数命令需要 root 权限,需使用 sudo 或以 root 身份执行。
  2. 生产环境建议:

    • 优先使用 shutdown:支持延迟和通知用户,确保服务安全关闭。
    • 避免 poweroff:除非明确需要立即断电,否则可能引发数据丢失。
  3. 取消计划任务:

    • 如果误操作设置了延迟关机或重启,可用以下命令取消:

      sudo shutdown -c
      
  4. 紧急情况:

    • 如果系统无响应,可尝试 REISUB 组合键(Alt + SysRq + R/E/I/S/U/B)强制重启,但需谨慎使用。

四、总结对比

命令功能是否安全是否需要 root 权限适用场景
reboot立即重启快速重启
shutdown -r安全重启计划重启、通知用户
init 6通过 runlevel 重启旧系统或脚本中使用
shutdown -h安全关机计划关机、通知用户
halt停止系统临时停止(需手动断电)
poweroff立即断电紧急情况或服务器无人值守时使用
now # 立即关机
sudo shutdown -h +10 # 10分钟后关机
sudo shutdown -h 04:00 # 在04:00关机
sudo shutdown -h +5 “系统将在5分钟后关机,请保存工作!” # 带警告信息

- 特点:

- `-h` 表示关机(halt)。
- 安全关闭所有服务并通知用户,适合生产环境。

2. **`halt`**

- **功能**:停止系统运行,但不一定关闭电源。

- 示例:

sudo halt


- 特点:

- 类似于 `shutdown -h`,但不强制切断电源。
- 通常需要手动关闭电源。

3. **`poweroff`**

- **功能**:立即关闭系统并切断电源。

- 示例:

sudo poweroff


- 特点:

- 直接断电,操作“粗暴”。
- 如果系统有未保存的数据,可能导致数据丢失,不建议随意使用。

4. **`init 0`**

- **功能**:通过切换运行级别(runlevel)关机。

- 示例:

sudo init 0


- 特点:

- 早期 Linux 系统常用,现代系统中逐渐被 `shutdown` 和 `poweroff` 替代。

------

**三、注意事项**

1. 权限要求:

 - 大多数命令需要 `root` 权限,需使用 `sudo` 或以 root 身份执行。

2. 生产环境建议:

 - **优先使用 `shutdown`**:支持延迟和通知用户,确保服务安全关闭。
 - **避免 `poweroff`**:除非明确需要立即断电,否则可能引发数据丢失。

3. 取消计划任务:

 - 如果误操作设置了延迟关机或重启,可用以下命令取消:

   ```
   sudo shutdown -c
   ```

4. 紧急情况:

 - 如果系统无响应,可尝试 **REISUB** 组合键(Alt + SysRq + R/E/I/S/U/B)强制重启,但需谨慎使用。

------

**四、总结对比**

| **命令**      | **功能**           | **是否安全** | **是否需要 root 权限** | **适用场景**                   |
| ------------- | ------------------ | ------------ | ---------------------- | ------------------------------ |
| `reboot`      | 立即重启           | ✅            | ✅                      | 快速重启                       |
| `shutdown -r` | 安全重启           | ✅            | ✅                      | 计划重启、通知用户             |
| `init 6`      | 通过 runlevel 重启 | ✅            | ✅                      | 旧系统或脚本中使用             |
| `shutdown -h` | 安全关机           | ✅            | ✅                      | 计划关机、通知用户             |
| `halt`        | 停止系统           | ✅            | ✅                      | 临时停止(需手动断电)         |
| `poweroff`    | 立即断电           | ❌            | ✅                      | 紧急情况或服务器无人值守时使用 |
| `init 0`      | 通过 runlevel 关机 | ✅            | ✅                      | 旧系统或脚本中使用             |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值