2、Linux 命令大全:从文本处理到系统管理,16 章实战教程(tr/sort/sed/grep/find/tar/systemctl 等 100+ 常用命令详解)

Linux运维实战入门:从零部署Nginx到Shell脚本自动化 很多同学想入门运维或开发,但面对Linux系统时,常常被复杂的命令和陌生的操作界面劝退。从安装系统、配置网络,到部署服务、编写脚本,每一步都可能遇到意想不到的坑。网上资料虽然多,但往往零散不成体系,要么过于理论,要么缺少关键的排错步骤,导致跟着教程走却跑不通。 本文旨在解决这个痛点,为你提供一份从零开始的Linux系统化实战指南。无论你是计算机专业的学生、想转行运维的开发者,还是需要搭建服务器环境的程序员,都能从本文找到清晰的路径。我们将从最基础的虚拟机安装讲起,覆盖Linux核心命令、用户权限、软件管理、 阅读详情

摘要:本文系统讲解 Linux 文本处理与系统管理的核心命令,涵盖通配符、正则表达式、文本处理命令(tr、sort、sed、cut、paste、join、uniq)、文本匹配命令(wc、grep、find、diff)、数值计算(expr、bc、calc)、常用内置命令、系统信息查看、文件系统管理、文件权限管理、网络操作、文件压缩与打包、输入输出重定向与管道、用户管理以及服务管理等十六个章节,帮助读者从基础到进阶全面掌握 Linux 命令行操作技能。

目录

第五章 文本处理

5.1 通配符(glob)

5.2 正则表达式

正则表达式的三种主要类型

基础元字符(BRE)

数量限定符(ERE)

示例:

PCRE:增强的现代正则表达式

常见正则表达式实例

5.3 文本处理命令

tr:字符替换与删除

示例:

sort:文本排序

常用选项:

sed:流编辑器

Stream Editor,强大的流式文本编辑。

示例:修改一行中第 4 列的数据

# 示例:将目录下所有.txt文件改成.csv文件

cut:按列或字符位置切割文本

paste:按列拼接多个文件的内容

join:联合文件

按关键字段合并(需排序)。

uniq:文件去除重复

去除已排序文件中的连续重复行。

第六章 文本匹配命令

6.1 wc:计数

统计文件行数、词数和字节数。

6.2 grep:文本搜索

Global Regular Expression Print,文本搜索(最重要)。

6.3 find:递归查找文件

6.4 diff:比较两个文件的差异

第七章 数值计算

7.1 expr - 简单整数运算

7.1.1 整数运算

7.1.2 比较运算:

7.1.3 逻辑运算:

7.2 bc:Basic Calculator

7.2.1 bc循环

7.2.2使用数学库 `bc -l`:

7.3 calc

第八章 其他常用内置命令

8.1 clear:清屏

8.2 alias/unalias

8.3 echo :输出

8.4 read:读取输入

8.5 printf:格式化输出

说明符:

格式修饰符:

8.6 nano / vi / vim:终端文本编辑器

8.7 本章小结

第九章 系统信息查看

9.1 uname:查看系统核心信息

9.2 lscpu:查看 CPU 信息

输出示例:

​编辑9.3 free:查看内存信息

输出示例:

显示物理内存条的详细信息:

9.4 df / du:查看磁盘和目录空间

9.5 top:实时动态监控系统资源

9.6 uptime:系统负载和运行时间

输出示例:

各项含义:

9.7 nice / renice:调整系统优先级

验证示例:

9.8 hostname:查看或临时修改主机名

9.9 date:查看和格式化系统时间

9.10 ps:查看当前系统运行的进程

9.11 kill:终止系统中的进程

9.12 watch:周期性执行命令

9.13 timeout:指定命令执行时间

第十章 文件系统管理

10.1 文件系统概念

10.2 一切皆文件

硬件设备被抽象为文件:

进程与内核信息被抽象为文件:

系统配置与设备参数被抽象为文件(`/sys`):

10.3 文件系统类型

本地磁盘文件系统:

特殊用途文件系统(虚拟 / 伪文件系统):

10.4 文件系统层次结构标准(FHS)

FHS 标准目录详解:

10.5 目录是一种特殊的“文件”

目录中存储的内容——目录项(Directory Entry):

从文件名到数据:完整链路

10.6 inode 与目录的关系图解

10.7 硬链接 vs 符号链接

硬链接:

硬链接示例:

符号链接:

符号链接示例:

​编辑对比:

第十一章 文件权限管理

11.1 权限概述

11.2 ls -l 权限解读

11.3 chmod:修改文件或目录的访问权限

11.4 chown / chgrp:修改所有者和所属组

11.5 umask:设置新建文件和目录的默认权限

第十二章 网络操作

12.1 网络协议栈

Ethernet/IP 协议栈:

12.2 网络拓扑

12.3 ping:测试网络连通性

12.4 traceroute:追踪数据包达到目标经过的路由路径

12.5 ifconfig / ip:查看和配置网络接口

12.6 netstat / ss:查看网络连接状态和侦听端口

12.7 wget:从网络下载文件

12.8 curl:通过 URL 语法传输数据

12.9 scp:远程文件复制

12.10 sftp:远程文件管理

第十三章 文件压缩与打包

13.1 zip / unzip:跨平台压缩格式

13.2 gzip / gunzip:单文件压缩与解压

13.3 tar:打包和解包(最核心)

第十四章 输入输出重定向与管道

14.1 输入输出重定向与管道

文件句柄:

14.2 > / >> 输出重定向

14.3 输入重定向

14.4 HERE 文档

14.5 变量输入

14.5.1<<< 变量输入

14.5.2 < <( 变量输入

14.6 | :匿名管道

14.7 mkfifo:有名管道

14.8 tee:同时输出到终端和文件

14.9 && || ;命令连接符:条件执行

14.10 后台执行命令

14.10.1命令连接符:条件执行

14.10.2后台管理:

14.10.3 nohup

14.10.4 disown

14.10.5 ()

14.11 子进程与 exec

14.11.1 exec

14.11.2 重定向当前shell文件描述符

14.12 screen:终端多路复用器

常用快捷键:

14.13 tmux:screen 的升级版

第十五章 用户管理

15.1 who / whoami:查看登录用户

15.2 id:查看用户 UID、GID 和所属组

15.3 useradd / userdel:创建和删除用户

15.4 groupadd / groupdel / usermod:管理用户组和修改用户属性

第十六章 服务管理

16.1 systemctl:控制系统服务

管理系统服务的启动、停止和自启

systemctl 状态输出

16.2 crontab:定时任务管理


第五章 文本处理

5.1 通配符(glob)

用简单的特殊符号(如 `*`、`?`、`[]`)来匹配一组符合某种模式的文件名或字符串。

5.2 正则表达式

正则表达式(Regex)是 Linux 系统中最强大、最常用的文本处理工具之一。它是一种用于匹配、查找、替换和提取文本模式的“语言”,被广泛应用于文本处理工具中。

随着 GNU 工具的发展,现代的 BRE 和 ERE 在功能上的界限已经变得模糊,最主要的区别体现在元字符是否需要使用反斜杠进行转义。

正则表达式是用一些特殊字符(称为“元字符”)来定义一种搜索模式。它可以精确地匹配特定格式的文本。

正则表达式的三种主要类型

基础元字符(BRE)

数量限定符(ERE)

正则表达式核心元字符 - 分组与或

示例:

2026-3-25 转换成 3/25/2026

今天是2026-3-25,我。。。。。。。

--> 今天是3/25/2026,我。。。。。。。

2026-4-25是一个好日子

(^.*)([0-9][0-9][0-9][0-9])-([0-9]?[0-9])-([0-9]?[0-9])(.*$)

\1\3\/\4\/\2\5

cat file | sed -E "s/(^.*)([0-9][0-9][0-9][0-9])-([0-9]?[0-9])-([0-9]?[0-9])(.*$)/\1\3\/\4\/\2\5/"

PCRE:增强的现代正则表达式

常见正则表达式实例

5.3 文本处理命令

本节将介绍 7 个常用的文本处理命令,下表汇总了它们的用途、典型用法和常用选项,方便快速查阅。

命令用途典型用法常用选项
tr字符替换、删除与压缩echo 'hello' | tr 'a-z' 'A-Z'-d 删除字符;-s 压缩重复字符;-c 取反
sort对文本行进行排序sort -n file-n 按数字排序;-r 逆序;-t 指定分隔符;-k 指定排序字段
sed流式文本编辑(替换、删除、插入)sed 's/旧/新/g' file.txt-i 直接修改文件;-n 静默输出;-e 多个操作;-r/-E 扩展正则
cut按列或字符位置切割文本cut -d: -f1 /etc/passwd-d 指定分隔符;-f 选择列;-c 按字符位置;--complement 排除列
paste按列拼接多个文件的内容paste file1.txt file2.txt-d 指定分隔符;-s 多行拼接为单行
join按关键字段合并两个文件join s1.txt s2.txt-a 保留未匹配行;-i 忽略大小写;-1/-2 指定合并列
uniq去除已排序文件中的重复行sort file.txt | uniq -c-c 统计次数;-d 只显示重复行;-u 只显示不重复行;-i 忽略大小写
tr - 字符替换与删除
sort - 文本排序
sed - 流编辑器(替换/删除/插入)
cut - 按列切割文本
paste - 按行拼接文本
join - 关键字段合并文件
uniq - 去重与计数
正则表达式 (regular expression)

tr:字符替换与删除

Translate,字符替换、删除和压缩。

bash

# 大小写转换

echo 'hello' | tr 'a-z' 'A-Z' # HELLO

# 字符删除 -d

cat file.txt | tr -d '0-9' # 删除所有数字

# 空白压缩 -s

echo 'a b' | tr -s ' ' # a b

# 取反 -c

echo 'a b c' | tr -c 'a ' 'd' # 替换为 a d d

示例:

# 八进制、转义字符

echo -e 'abc\n123' | tr '\010' 'X' # 将八进制 010 (\n) 改成 X

echo $'abc\nddd' | tr '\n' '\r'

echo -e 'abc\tddd' | tr '\t' '\n'

sort:文本排序

bash

# 按字符顺序排序

sort file

# 按数字顺序排序

sort -n file

# 指定分隔符 -t

sort -t: file

常用选项:

sed:流编辑器

Stream Editor,强大的流式文本编辑。

bash

# 文本替换 s

sed 's/旧/新/g' file.txt # 全局替换(g)

sed 's/^/Hello/' file.txt # 在行头添加 Hello

sed 's/$/Hello/' file.txt # 在行尾添加 Hello

sed -i 's/旧/新/g' file.txt # 直接修改文件(-i)

sed -n '1,5p' file.txt # 打印 1-5 行

sed '/^$/d' file.txt # 删除空行

sed '/^#/d' file.txt # 删除注释行

sed 's/error/& Hello/' file.txt # error 后面添加 Hello(& 代表匹配到的内容)

# 文本添加 a i

sed '2a Hello' file.txt # 在第 2 行后面添加 Hello

sed '2i Hello\nHello' file.txt # 在第 2 行前面添加 Hello

sed 'a Hello' file.txt # 在尾行后面添加 Hello

sed '/error/a 请检查错误' # 在包含 error 的行后面添加 Hello

# 顺序执行多个操作 -e

sed -e 's/a/A/g' -e 's/AB/cd/' file.txt # 顺序执行操作

# 执行文件中指定的操作 -f

sed -f command file.txt # 执行 command 文件中的操作

# 使用扩展正则表达式(ERE)-r 或 -E

echo '123abc' | sed -r 's/([0-9]+)([a-z]+)/\2\1/g' # 输出 abc123

示例:修改一行中第 4 列的数据

bash

cat a

# 1 lwt 80 65 89

# 2 abd 80 65 89

echo $ID # 1

echo $Score # 90

sed -r 's/(^$ID\t)(.*\t)(.*\t)(.*\t)(.*$)/\1\2\3$Score\t\5/' a

# 1 lwt 80 90 89

# 2 abd 80 65 89

sed -r 或 -E 启用扩展正则表达式(ERE)功能

sed 's/1+:/hello/g'

# 示例:将目录下所有.txt文件改成.csv文件

ls *.txt > list

sed -r 's/(^.*)(.txt)/mv \1\2 \1.csv/' list > cmd

bash cmd

ls *.csv

rm list cmd

cut:按列或字符位置切割文本

bash

# 按分隔符切割

echo 'a:b:c' | cut -d: -f2 # b

cat /etc/passwd | cut -d: -f1 # 提取用户名

cat /etc/passwd | cut -d: -f1,3,6 # 多列

cat file | cut -d$'\t' -f1-3 # 使用 Tab 作为分隔符

# 按字符位置

echo 'abcdef' | cut -c1-3 # abc

cut -c5- /etc/hostname # 第 5 字符到行尾

# 补充模式(排除列)

cut -d: -f1,3 --complement /etc/passwd

# 压缩没有匹配到列分隔符的行的输出

cut -s -d: -f2 file.txt

# 指定输出的列分隔符

cut -f1-2 --output-delimiter '#' file.txt

paste:按列拼接多个文件的内容

bash

# 默认 TAB 分隔

paste file1.txt file2.txt

# 自定义分隔符

paste -d: names.txt phones.txt

# 多行拼接为单行

paste -s file.txt

# 每两行拼成一行

paste - - < file.txt

join:联合文件

按关键字段合并(需排序)。

bash

sort -o s1.txt f1.txt && sort -o s2.txt f2.txt # 先将 f1.txt 和 f2.txt 排序

join s1.txt s2.txt # 按相同关键字合并

join -a 1 s1.txt s2.txt # 保留 f1 全部记录

join -i s1.txt s2.txt # 忽略大小写

join -1 <column> -2 <column> s1.txt s2.txt # 选择两个文件中的合并列

uniq:文件去除重复

去除已排序文件中的连续重复行。

bash

sort file.txt | uniq # 去重

sort file.txt | uniq -c # 统计行的出现次数

sort file.txt | uniq -d # 只显示重复的行,每个重复行显示一次,-D 为重复行全部显示

sort file.txt | uniq -u # 只显示不重复的行

sort file.txt | uniq -i # 忽略大小写

5.4 本章小结

本章系统讲解了 Linux 文本处理的核心工具。通配符(glob)用于快速匹配文件名,正则表达式则提供了更强大的模式匹配能力,包括基础元字符(BRE)、数量限定符(ERE)和增强的现代正则表达式(PCRE)。在文本处理命令方面,tr 负责字符替换与删除,sort 用于文本排序,sed 作为流编辑器可完成替换、删除、插入等操作,cut 按列或字符位置切割文本,paste 按列拼接多个文件,join 按关键字段合并文件,uniq 去除重复行。掌握这些工具的组合使用,可以高效完成日常的文本处理任务。

第六章 文本匹配命令

6.1 wc:计数

统计文件行数、词数和字节数。

bash

wc file.txt # 行数 词数 字节数

# 128 1024 8192 file.txt

cat file.txt | wc -l # 以管道方式输入

wc -l file.txt # 只显示行数

wc -w file.txt # 只显示词数

wc -c file.txt # 只显示字节数

# 实用技巧:

wc -l *.py # 统计所有 .py 行数

ps -ef | wc -l # 统计进程数量

6.2 grep:文本搜索

Global Regular Expression Print,文本搜索(最重要)。

bash

grep 'error' /var/log/syslog # 搜索关键字,文件可以通过通配符进行匹配,如:sys*

grep -i 'error' log.txt # 忽略大小写

grep -v '#' config.ini # 排除注释行

grep -n 'warning' log.txt # 显示行号

grep -c 'failed' log.txt # 统计次数

grep -r 'main' src/ # 递归搜索目录

grep -w 'is' file.txt # 整词匹配

# 显示上下文:

grep -A 2 'error' log.txt # 匹配行及后面 2 行

grep -B 2 'error' log.txt # 匹配行及前面 2 行

grep -C 2 'error' log.txt # 匹配行及前后各 2 行

# 正则表达式:

grep '^[0-9]' file.txt # 以数字开头的行

grep '\.txt$' list.txt # 以 .txt 结尾

grep -e 'err' -e 'warn' log # 包含 err 或者 warn 的行

# 使用扩展正则表达式(ERE):

grep -E 'aa|aaa|error|info' file

# 使用 Perl 兼容正则表达式(PCRE):-P

#查找多个数字 echo "123" | grep -Po '\d+'

#查找多个空白字符 echo "123 4" | grep -Po '3\s+4'

#匹配数字(整数、小数、正负数) echo "122.3abc+5.0-3.4xy&" | grep -Po '[+-]?\d+(\.\d+)?'

6.3 find:递归查找文件

bash

# 按名称查找

find / -name '*.txt' # 查找 .txt 文件

find / -name 'nginx.conf' # 查找配置文件 nginx.conf

# 按类型 / 大小查找

find . -type d # 查找目录

find . -size +1M # 大于 1MB 的文件,-size n[cwbkMG]

# 执行操作:

find . -name '*.tmp' -delete # 删除 .tmp

find . -name '*.c' -exec wc -l {} \; # 统计找到的 .c 文件的行数

6.4 diff:比较两个文件的差异

bash

diff file1.txt file2.txt # 基本比较

diff -u file1.txt file2.txt # 统一格式(推荐)

diff -i file1.txt file2.txt # 忽略大小写

# 统一格式输出示例:

# --- file1.txt 2026-06-01

# +++ file2.txt 2026-06-02

# @@ -1,3 +1,3 @@

# -old text

# +new text

6.5 本章小结

本章介绍了 Linux 文本匹配的核心命令。其中 wc 用于快速统计文件的行数、词数和字节数,是日常检查文件规模和进程数量的常用工具;grep 是最重要的文本搜索命令,支持基本正则、扩展正则(-E)和 Perl 兼容正则(-P),配合 -i、-v、-n、-r 等选项可以灵活完成日志过滤、配置检查和代码检索等任务;find 用于按名称、类型、大小等条件递归查找文件,并可结合 -exec 或 -delete 对结果执行操作;diff 用于比较两个文件的差异,-u 统一格式输出便于阅读和生成补丁。掌握这些命令,可以大幅提升在 Linux 环境下定位和分析文本信息的效率。

第七章 数值计算

7.1 expr - 简单整数运算

7.1.1 整数运算

expr <数值计算表达式> # 支持 + - * / (整除) % (取模) 运算

bash

expr 10 + 5 # 注意,每个元素之间都要用空格分开

expr 10 - 2

expr 5 \* 3 # 乘法计算,需要转义

expr 10 / 3 # 得到 3(取整)

expr 10 % 3 # 得到 1(取模)

expr 5 \* \( 5 + 5 \) # 得到 50

value=$(expr 10 / 3) # value = 3

7.1.2 比较运算:

expr <比较表达式> # 支持 = != < > <= >= 结果为真返回1,假返回0

bash

expr 10 = 5 # 得到 0

expr 5 \> 3 # 得到 1,需要转义

7.1.3 逻辑运算:

expr <逻辑表达式> # 支持 & (与) | (或)

bash

expr 10 \& 2 # 得到 10,如果两个参数都非空且非 0,则返回第一个参数;否则返回 0

expr 5 \| 3 # 得到 5,如果第一个参数非空且非 0,则返回它;否则返回第二个参数

7.2 bc:Basic Calculator

支持整数和浮点数运算(通过 scale 指定精度),支持进制间转换(obase、ibase),支持变量计算。支持的运算符:`+ - * / % ^`(指数),支持交互式模式、管道模式,支持函数、判断、循环等。

bash

echo "10/3" | bc # 输出 3

echo "scale=2; 10/3" | bc # 输出 3.33

echo "obase=16; 255" | bc # 输出 FF(十进制转十六进制)

echo "ibase=16; FF" | bc # 输出 255(十六进制转十进制)

echo "x=5; y=3; x*y + 2" | bc # 输出 17

7.2.1 bc循环

7.2.2使用数学库 `bc -l`:

7.3 calc

原生支持科学计数法,内置了复数、矩阵、超过 70 个统计函数等高级功能。

7.4 本章小结

本章介绍了 expr、bc、calc 三种数值计算工具,它们各有侧重,适用于不同的场景。下面通过表格对比三者的核心差异,帮助读者快速做出选择。

对比维度exprbccalc
适用场景Shell 脚本中的简单整数运算、字符串比较与逻辑判断需要高精度小数运算、进制转换、数学函数(配合 -l)的脚本计算交互式科学计算、复数与矩阵运算、统计分析等高级场景
精度支持仅支持整数,无小数支持任意精度小数,可通过 scale 控制小数位数原生支持科学计数法,精度高,适合浮点与复数运算
内置函数无数学函数,仅支持基本算术、比较和逻辑运算符配合 -l 提供 sqrt、sin、cos、log 等常用数学函数内置超过 70 个统计函数,支持复数、矩阵等高级运算
性能特点轻量、启动快,适合脚本内频繁调用精度高但启动稍慢,适合批量或管道计算功能强大但体积较大,适合交互式或复杂科学计算

选择建议:

  • 如果只是在 Shell 脚本中做简单的整数加减乘除或条件判断,优先使用 expr,它轻量且无需额外安装。
  • 如果涉及小数运算、需要控制精度或进行进制转换,推荐使用 bc,它是 Linux 系统自带的通用计算器。
  • 如果需要进行科学计算、复数、矩阵或统计分析等高级功能,选择 calc,它能提供更强大的数学能力。

第八章 其他常用内置命令

8.1 clear:清屏

clear # 清屏并清除 屏幕缓冲区

bash

clear # 清屏并清除屏幕缓冲区

clear -x # 清屏,但不清除屏幕缓冲区

8.2 alias/unalias

为命令设置别名,提高效率

bash

alias ll='ls -alF' # 设置别名

alias rm='rm -i' # 防止误删

alias ..='cd ..' # 快速返回上级

alias # 查看所有别名

unalias rm # 取消别名

# 永久生效:写入 ~/.bashrc

echo "alias ll='ls -alF'" >> ~/.bashrc

source ~/.bashrc # 执行 ~/.bashrc,使命令生效

8.3 echo :输出

bash

echo 'Hello World' # 输出字符串

echo $HOME # 输出变量值

echo -e '第一行\n第二行' # 启用转义

echo -E '第一行\n第二行' # 关闭转义,输出 第一行\n第二行

8.4 read:读取输入

bash

read -p '输入姓名: ' name # 带提示

read -s -p '密码: ' pass # 静默输入

read -t 5 -p '5秒内输入: ' x # 超时

8.5 printf:格式化输出

bash

printf '%03d\n' 5 # 005

printf '%.2f\n' 3.14159 # 3.14

说明符:

格式修饰符:

8.6 nano / vi / vim:终端文本编辑器

bash

# nano - 简单易用

nano file.txt

# Ctrl+O 保存,Ctrl+X 退出,Ctrl+W 搜索

# vim - 功能强大

vim file.txt

# i 进入插入模式,Esc 退出

# :w 保存,:q 退出,:wq 保存退出

# :q! 强制退出,/关键词 搜索

# n/N 上下切换匹配结果

8.7 本章小结

本章介绍的 clear、alias、echo、read、printf 以及 nano / vi / vim 等命令,是日常终端操作中使用频率最高的内置命令。它们虽然功能简单,却能在脚本编写和交互式操作中发挥关键作用:clear 用于保持终端界面整洁,alias 用于简化高频命令,echo 用于输出文本和变量,read 用于接收用户输入,printf 则提供更精确的格式化输出能力。

在实际使用中,这些命令经常组合出现。例如,通过 alias 定义常用命令的快捷方式,再配合 echo 输出提示信息,用 read 接收用户输入,最后用 clear 清理屏幕,可以快速搭建一个简单而实用的交互式脚本。下面给出一个组合使用这些命令的示例:

#!/bin/bash
# 组合使用 clear、alias、echo、read 的简单脚本示例
clear  # 清屏,保持界面整洁
为常用命令设置别名
alias ll='ls -alF'
alias grep='grep --color=auto'
echo "欢迎使用系统信息查询工具"
echo "----------------------------------------"
使用 read 接收用户输入
read -p "请输入要查询的用户名: " username
echo "正在查询用户 $username 的信息..."
echo "----------------------------------------"
输出查询结果
id $username
echo "----------------------------------------"
echo "查询完成,感谢使用!"

这个脚本先用 clear 清屏,再通过 alias 为 ls 和 grep 设置更友好的别名,随后用 echo 输出提示信息,并用 read 接收用户输入的用户名,最后调用 id 命令查询该用户的信息。读者可以将这段脚本保存为 info.sh,通过 bash info.sh 运行,体会这些内置命令组合使用的实际效果。

此外,这些内置命令还经常与文本处理命令配合使用。例如,用 read 读取用户输入后,通过 printf 进行格式化输出,再结合 sort 或 grep 对数据进行处理,可以构建出功能更完整的命令行工具。掌握这些命令的组合用法,是提升 Shell 脚本编写效率的关键一步。

第九章 系统信息查看

uname, cpuinfo - 查看内核版本与系统架构
free - 查看内存使用情况
df , du - 查看磁盘分区和使用情况
top , uptime - 查看实时进程和资源占用
nice renice - 调整进程的优先级
hostname - 查看/修改主机名
date - 查看/设置系统时间
ps - 查看进程列表
kill - 终止进程

9.1 uname:查看系统核心信息

bash

uname -a

# Linux ubuntu22 5.15.0-91-generic #101-Ubuntu SMP x86_64 x86_64 x86_64 GNU/Linux

uname -r # 内核版本(5.15.0-91-generic)

uname -m # 架构(x86_64)

uname -n # 主机名(ubuntu22)

9.2 lscpu:查看 CPU 信息

bash

lscpu

输出示例:

9.3 free:查看内存信息

bash

free -h

输出示例:

显示物理内存条的详细信息:

bash

sudo dmidecode -t memory

9.4 df / du:查看磁盘和目录空间

bash

df -h # 磁盘分区使用(人性化)

df -hT # 显示文件系统类型

# Output:

# Filesystem Size Used Avail Use% Mounted on

# /dev/sda1 20G 8G 12G 41% /

du -sh /home/user # 查看目录总大小

du -sh * | sort -h # 按大小排序

9.5 top:实时动态监控系统资源

- `top` → # 启动实时监控

#交互快捷键:

- `P` → 按 CPU 排序

- `M` → 按内存排序

- `1` → 展开多核 CPU

- `H` → 显示线程

- `k` → 杀进程

- `q` → 退出

9.6 uptime:系统负载和运行时间

bash

uptime

输出示例:

各项含义:

- 当前系统时间:21:19:19

- 系统已运行的时间:34 分钟

- 当前系统中登录的用户数:1

- 系统在过去 1 分钟、5 分钟和 15 分钟内的平均负载:0.00、0.01、0.04

9.7 nice / renice:调整系统优先级

直接影响进程在 CPU 资源竞争中的能力。

nice -n <优先级> <命令> # 运行命令之前,设置命令的系统优先级

# <优先级>:-20 到 19。数值越小,优先级越高。

# 非 root 用户只能调低命令的优先级;root 用户可以调高命令的优先级

renice -n <优先级> -p <进程号> # 运行命令期间,更改命令的系统优先级

renice -n <优先级> -i <userid>

验证示例:

使用 top -p <id> 验证系统优先级变化

bash

#!/usr/bin/bash

echo $$

while true ;

do

:

done

9.8 hostname:查看或临时修改主机名

bash

hostname # 查看当前主机名

# 输出:ubuntu22

sudo hostname <新的主机名> # 临时修改(重启失效)

sudo hostnamectl set-hostname <新的主机名> # 永久修改

cat /etc/hostname # 永久主机名配置文件

9.9 date:查看和格式化系统时间

bash

date

# Mon Jun 30 21:30:00 CST 2026

date +'%Y-%m-%d' # 2026-06-01

date +'%Y/%m/%d %H:%M:%S' # 2026/06/01 10:30:00

date -d '+1 day' # 明天日期

date -d '-1 week' # 一周前

9.10 ps:查看当前系统运行的进程

bash

ps -ef # 查看所有进程(完整格式)

ps -aux # BSD 格式(更详细)

ps -u user # 查看指定用户的进程

ps -ef | grep nginx # 查找特定进程

输出字段:

UDI: 用户ID PID:进程ID PPID:父进程ID %CPU:CPU占用率 %MEM 内存占用率

- `STAT`:`R` 运行,`S` 睡眠,`Z` 僵尸,`T` 暂停,`I` 空闲

- `STAT`:`<` 高优先级,`N` 低优先级,`l` 多线程进程,`+` 前台进程,`s` 会话领导者

9.11 kill:终止系统中的进程

bash

kill 1234 # 发送 SIGTERM(请求终止)

kill -9 1234 # 发送 SIGKILL(强制终止)

# 查找并杀死:

ps -ef | grep firefox # 先查 PID

kill -9 <PID> # 再杀死

kill -l # 列出所有 KILL 信号

# 快捷方式:

pkill firefox # 按进程名终止

9.12 watch:周期性执行命令

bash

watch [-n <interval>] -d <command>

# -n 执行周期(s)

# -d 显示两次执行结果的不同

# 每隔两秒钟,查看系统资源的使用情况

watch -n 2 -d free

# 定期查看目录下的文件,文件名中包含 log

watch -n 1 'ls -l | grep log'

9.13 timeout:指定命令执行时间

到时后退出。

bash

# 在执行 watch 命令 1 分钟后退出

timeout 1m watch -n 2 -d free

# 如果在指定时间内命令完成,则正常退出,否则强制退出

timeout 10 ls -l

echo $?

timeout 10 sleep 100

echo $? # 查看退出状态

time timeout 10 sleep 100

9.14 本章小结

本章围绕 Linux 进程管理展开,核心内容包括:

  • 进程查看:掌握 ps、top、htop 等工具,能够实时监控系统进程状态与资源占用。
  • 进程控制:理解 kill、pkill、killall 的信号机制,学会优雅终止或强制结束进程。
  • 后台与前台任务:熟练使用 &、jobs、fg、bg 管理前后台任务,掌握 nohup 让任务在终端关闭后继续运行。
  • 任务调度:通过 at 安排一次性任务,通过 cron 实现周期性任务,通过 timeout 限制命令执行时间。

进程管理是 Linux 运维的基础能力,建议读者在真实环境中反复练习,理解信号与进程状态之间的转换关系。

第十章 文件系统管理

什么是 Linux 文件系统?
"一切皆文件" 哲学
文件系统类型
本地磁盘文件系统
特殊用途文件系统
FHS 目录结构

10.1 文件系统概念

文件系统定义了数据在存储设备上存放、读取、更新和删除的规则和方法。

10.2 一切皆文件

Linux 核心哲学:不仅是普通数据文件,硬件设备、进程信息、网络连接等都被抽象为文件,通过统一接口访问。


硬件设备被抽象为文件:


进程与内核信息被抽象为文件:


系统配置与设备参数被抽象为文件(`/sys`):

10.3 文件系统类型

本地磁盘文件系统:

- **ext4**:最主流的日志文件系统,单文件上限 16 TB,单卷上限 1 EB。Ubuntu 默认。

- **XFS**:高性能,支持并发 I/O。RHEL/CentOS 默认。

- **Btrfs**:写时复制,支持快照和子卷。openSUSE 默认文件系统。

- **ZFS**:集成卷管理,企业级存储。

- **FAT32/exFAT/NTFS**:Windows 兼容,通过 `ntfs-3g` 驱动进行挂载(mount)。

VMware Workstation 中,物理 USB 磁盘被挂载到 `/mnt/media` 目录下。

VMware Workstation 可以将任意 Windows 目录映射到虚拟机系统 `/mnt/hgfs` 目录下。

特殊用途文件系统(虚拟 / 伪文件系统):

- `proc`:进程和内核信息(`/proc/cpuinfo`)

- `sysfs`:设备和内核对象(`/sys`)

- `tmpfs`:基于内存,速度极快(`/tmp`)

- `devfs`:管理设备文件(`/dev`)

10.4 文件系统层次结构标准(FHS)

FHS 标准目录详解:

10.5 目录是一种特殊的“文件”

目录中存储的内容——目录项(Directory Entry):

验证:用 `ls -lai` 查看文件的 inode 编号。

从文件名到数据:完整链路

关键点:`open("/home/user/notes.txt")` → 内核逐级查找每个目录项的 inode → 最终读取文件数据块。

10.6 inode 与目录的关系图解

10.7 硬链接 vs 符号链接

均创建链接到源文件的目标文件。

硬链接:

ln <source> <target> # 类似于 Windows 的 mklink /H

bash

ls -l original_file # 源文件

ln original_file linkfile # 创建硬链接文件

ls -li original_file linkfile

stat original_file linkfile

硬链接示例:

符号链接:

ln -s <source> <target> # 类似于 Windows 的 mklink /D

bash

ls -l original_file # 源文件

ln -s original_file slinkfile # 创建符号链接文件

ls -li original_file slinkfile

stat original_file linkfile

readlink -f slinkfile

符号链接示例:

对比:

10.8 本章小结

本章深入讲解了 Linux 文件系统与链接机制,核心要点包括:

  • 文件系统结构:理解 / 根目录下的标准目录布局,掌握 df、du 查看磁盘与目录占用。
  • inode 与数据块:明白文件由 inode 和数据块组成,inode 保存元数据,数据块保存实际内容。
  • 硬链接与符号链接:硬链接共享同一 inode,删除原文件不影响链接;符号链接是独立文件,指向目标路径,目标删除后链接失效。
  • 文件查找:熟练使用 find、locate、which 等命令定位文件。

理解 inode 与链接机制是深入掌握 Linux 文件系统的关键,建议通过实际操作对比硬链接与符号链接的行为差异。

第十一章 文件权限管理

11.1 权限概述

- 三类用户:`u`(所有者)、`g`(所属组)、`o`(其他人)

- 三种权限:`r`(4)读取、`w`(2)写入、`x`(1)执行

- `chmod`:修改访问权限

- `chown`:修改文件所有者

- `chgrp`:修改所属组

- `umask`:设置默认权限掩码

11.2 ls -l 权限解读

查看并理解文件权限格式

11.3 chmod:修改文件或目录的访问权限

# 符号模式:

chmod u+x script.sh # 所有者加执行权限

chmod g-w file.txt # 组去掉写入权限

chmod a+x script.sh # 所有人加执行权限

# 数字模式(最常用):

chmod 755 script.sh # rwxr-xr-x

chmod 644 file.txt # rw-r--r--

chmod 600 secret.txt # rw-------

chmod -R 755 /www # 递归修改

11.4 chown / chgrp:修改所有者和所属组

需要 root 权限。

bash

# chown:修改所有者

sudo chown john file.txt # 改所有者

sudo chown john:dev file.txt # 同时改组

sudo chown :dev file.txt # 仅改组

sudo chown -R john:john /home/john # 递归

# chgrp:修改所属组

sudo chgrp developers file.txt

sudo chgrp -R developers /project

11.5 umask:设置新建文件和目录的默认权限

bash

umask # 查看当前掩码

# 输出:0002

umask 0022 # 设置掩码

# 文件默认权限 = 666 - umask

# 目录默认权限 = 777 - umask

umask 0022 -> 文件 644 (rw-r--r--)

umask 0022 -> 目录 755 (rwxr-xr-x)

umask 0077 -> 文件 600 (仅所有者读写)

11.6 本章小结

本章聚焦 Linux 文件权限与用户管理,核心内容包括:

  • 权限体系:理解读(r)、写(w)、执行(x)三种权限,掌握 chmod 修改权限、chown 修改所有者。
  • 特殊权限:了解 SUID、SGID、Sticky Bit 的作用与适用场景。
  • 默认权限:掌握 umask 如何影响新建文件和目录的默认权限。
  • ACL 访问控制:使用 setfacl、getfacl 实现细粒度的权限管理。

权限管理是 Linux 安全的基础,建议读者结合多用户场景练习,理解权限位与 umask 的计算逻辑。

第十二章 网络操作

ping - 测试网络连通性
traceroute - 追踪路由路径
ifconfig/ip - 查看网络接口
netstat/ss - 查看网络连接
wget/curl - 下载与网络传输
scp/sftp - 远程文件复制

12.1 网络协议栈

Ethernet/IP 协议栈:

12.2 网络拓扑

12.3 ping:测试网络连通性

bash

ping -c 4 8.8.8.8

# 输出示例:

PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.

64 bytes from 8.8.8.8: icmp_seq=1 ttl=117 time=12.3ms

--- 8.8.8.8 ping statistics ---

4 packets transmitted, 4 received, 0% packet loss

# time=12.3ms → 延迟 12.3 毫秒

12.4 traceroute:追踪数据包达到目标经过的路由路径

bash

traceroute baidu.com

# 输出示例:

# 192.168.1.1 1.123 ms

# 10.0.0.1 3.456 ms

# 202.96.128.86 8.901 ms

# 39.156.66.10 12.345 ms```

每跳显示:节点 IP + 延迟时间。用于网络故障排查。

12.5 ifconfig / ip:查看和配置网络接口

bash

# ifconfig(需安装 net-tools)

sudo apt install net-tools -y

ifconfig

# inet 192.168.1.100 netmask 255.255.255.0

# ip 命令(新版推荐):

ip addr show # 查看所有 IP 地址(ip ad)

ip route show # 查看路由表

ip link set eth0 down # 关闭网卡

ip link set ens33 up # 开启网卡

12.6 netstat / ss:查看网络连接状态和侦听端口

bash

# netstat:

netstat -tul # TCP/UDP 侦听端口

netstat -tunlp # 显示对应进程(需 root)

# ss(更高效,推荐):

ss -tul # 查看所有侦听端口

ss -tunp # 显示进程信息

# 常用:查看端口是否被占用

ss -tul | grep 3306 # 查找 MySQL 端口

12.7 wget:从网络下载文件

bash

wget https://example.com/file.zip

wget -O myfile.zip https://example.com/file.zip # 指定文件名

wget -P /tmp/ https://example.com/file.zip # 指定目录

wget -c https://example.com/bigfile.zip # 断点续传

wget -q https://example.com/file.zip # 静默模式

# 实用示例:

wget https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tgz

12.8 curl:通过 URL 语法传输数据

API 调试利器。

bash

# 下载文件

curl -O https://example.com/file.zip

curl -o myfile.zip https://example.com/file.zip

# API 请求(开发者常用)

curl https://gitee.com # GET

curl -X POST -d 'name=john' https://example.com/api # POST

# 查看响应头

curl -I https://www.baidu.com

# HTTP/2 200

12.9 scp:远程文件复制

与远程系统之间安全复制文件,使用 ssh 协议进行底层数据传输。

bash

# 本地 → 远程

scp file.txt john@192.168.1.100:/home/john/

scp -r project/ john@192.168.1.100:/home/john/ # 目录

# 远程 → 本地

scp john@192.168.1.100:/home/john/file.txt .

# 指定端口

scp -P 2222 file.txt john@192.168.1.100:/home/john/

12.10 sftp:远程文件管理

sftp 在 scp 的基础上,提供了交互式会话,支持浏览、管理远程目录,功能更全。

sftp [-P <port>] <user>@<remote ip>

12.11 本章小结

本章介绍了 Linux 远程管理与文件传输工具,核心要点包括:

  • SSH 远程登录:掌握 ssh 连接远程主机,理解密钥认证与端口配置。
  • SCP 文件传输:使用 scp 在本地与远程之间安全复制文件。
  • SFTP 交互式传输:通过 sftp 进行交互式文件管理,支持上传、下载、目录浏览。
  • 远程执行:利用 ssh 在远程主机上执行单条命令,实现批量运维。

远程管理是 Linux 运维的必备技能,建议读者配置 SSH 密钥认证,提升连接安全性与便捷性。

第十三章 文件压缩与打包

zip/unzip - 跨平台压缩格式
gzip/gunzip - 单文件压缩
tar - 打包工具(最常用)

13.1 zip / unzip:跨平台压缩格式

创建和解压 ZIP 格式的压缩包

bash

zip archive.zip file1.txt file2.txt # 压缩多个

zip -r archive.zip dir/ # 压缩目录

zip -9 archive.zip bigfile.txt # 最大压缩比

zip archive.zip file.txt -P password # 加密

unzip archive.zip # 解压到当前目录

unzip archive.zip -d /tmp/ # 解压到指定目录

unzip -l archive.zip # 查看内容(不解压)

13.2 gzip / gunzip:单文件压缩与解压

bash

gzip file.txt # 压缩为 file.txt.gz(原文件消失)

gzip -k file.txt # 压缩并保留原文件

gzip -9 file.txt # 最大压缩比

gunzip file.txt.gz # 解压

gzip -d file.txt.gz # 解压(同上)

gzip -dk file.txt.gz # 解压保留压缩包

zcat file.txt.gz | head # 查看压缩文件内容

13.3 tar:打包和解包(最核心)

Tape Archive。

bash

# 打包:

tar -czf archive.tar.gz dir/ # 打包 + gzip(最常用)

tar -cjf archive.tar.bz2 dir/ # bzip2 压缩

# 解包:

tar -xzf archive.tar.gz # 解压 + 解包

tar -xzf archive.tar.gz -C /tmp/ # 解压到指定目录

# 查看:

tar -tf archive.tar.gz # 查看包内文件列表

第十四章 输入输出重定向与管道

14.1 输入输出重定向与管道

> 和 >> - 输出重定向(覆盖/追加)
2> 和 2>&1 - 错误重定向
< - 输入重定向
<< HERE - HERE 文档
<<< 变量输入
| 匿名 管道 - 命令串联
mkpipe - 有名管道
tee - 同时输出到终端和文件
&& ,|| 和 ; - 命令连接符
后台执行命令
screen / tmux

文件句柄:

- `0`:标准输入,键盘

- `1`:标准输出,终端

- `2`:标准错误输出,终端

14.2 > / >> 输出重定向

输出重定向:将命令结果写入文件

bash

ls > /tmp/filelist.txt # 覆盖写入

echo 'hello' >> log.txt # 追加写入

# 标准输出和标准错误:

ls /valid > out.txt # 正常输出到文件

ls /nonexist 2> err.txt # 错误信息到文件

# 合并输出:

cmd > all.txt 2>&1 # 输出 + 错误合并

cmd &> all.txt # 简化写法

cmd > /dev/null 2>&1 # 全部丢弃

14.3 输入重定向

将文件内容作为命令的输入。

bash

cat < /etc/hostname # 从文件读入并显示

sort < unsorted.txt # 对文件内容排序

tr 'a-z' 'A-Z' < file.txt # 转为大写

cat - < file

cat 0< file

# 结合输入输出:

cat < input.txt > output.txt # 复制

sort < unsorted.txt > sorted.txt # 排序后保存

14.4 HERE 文档

多行输入重定向,常用于脚本中生成文件。

bash

cat << EOF

这是多行文本

直到遇到分隔符 EOF 为止

EOF

# 示例:保存到文件:

cat > config.txt << END

server=my_server

port=8080

END

14.5 变量输入

14.5.1<<< 变量输入

bash

input="1 2 3"

read a1 a2 a3 <<< $input

# 将变量 input 的内容作为输入,读入到 a1 a2 a3 三个变量中

示例:将文件 abc 中的三行数据一次性赋值给三个变量

14.5.2 < <( 变量输入

将变量作为输入

bash

input="1 2 3"

read a1 a2 a3 < <( echo $input)

# 将变量 input 的内容作为输入,读入到 a1 a2 a3 三个变量中

`<(cmds)` 命令的作用是:执行 cmds,将输出结果写入到一个匿名的文件中,进行一次性的使用,用完即刻销毁。

14.6 | :匿名管道

将一个命令的输出作为另一个命令的输入。

bash

ls -l | grep 'txt' # 筛选 .txt 文件

ps -ef | grep nginx # 查找进程

history | tail -20 # 最近 20 条历史

# 多级管道:

cat /etc/passwd | cut -d: -f1 | sort | head -10

# 显示前 10 个用户(按字母排序)

# 统计:

ps -ef | wc -l # 统计进程数

14.7 mkfifo:有名管道

Make FIFO,创建有名管道(进程间通信)。

bash

mkfifo mypipe # 创建管道文件

root@DESKTOP-3094FQG:~# mkfifo tube

root@DESKTOP-3094FQG:~# ls -l tube

prw-r--r-- 1 root root 0 Sep 14 14:11 tube

# 终端 1:读取管道

cat mypipe

# 终端 2:写入管道

echo 'Hello' > mypipe

# 终端 1 会立即收到写入的内容

14.8 tee:同时输出到终端和文件

bash

ls -l | tee filelist.txt # 显示并保存

# 追加模式 -a

echo 'backup start' | tee -a log.txt

# 典型应用:

date | tee -a script.log

echo '开始备份' | tee -a script.log

cp -r /data /backup 2>&1 | tee -a script.log

echo '备份完成' | tee -a script.log

14.9 && || ;命令连接符:条件执行

bash

# && - 前一个成功才执行后一个

ls /valid_dir && echo '目录存在'

make && make install # 编译成功才安装

# || - 前一个失败才执行后一个

ls /nonexist || echo '路径不存在'

ping -c 1 server || echo '服务器不可达'

# ; - 无论成功与否都执行

echo A ; ls /nonexist ; echo B

14.10 后台执行命令

14.10.1命令连接符:条件执行

bash

# 在命令后面添加 &,会将命令执行转入后台执行

sleep 100 &

# 使用 ps 可以查看在后台运行的命令

ps -f

# Ctrl-Z 组合键终止正在前台运行的命令

14.10.2后台管理:

bash

bg # 将使用 Ctrl-Z 挂起的命令转入后台运行

bg %<id>

fg # 将命令从后台恢复到前台

fg %<id>

jobs # 查看在后台运行的命令

jobs

kill # 删除在后台运行的命令

kill %1

14.10.3 nohup

nohup 让命令在 用户退出登录或关闭终端后,仍能继续运行

bash

# nohup 让命令在用户退出登录或关闭终端后,仍能继续运行。

# nohup 会将命令的标准输出(stdout)和标准错误(stderr)都重定向到当前目录下一个名为 nohup.out 的文件中

nohup <command>

nohup <command> 1> 标准输出文件 2>&1 # 使用自定义的文件

14.10.4 disown

disown 让命令 和 运行该命令的进程脱离,由 PID = 1 的进程托管运行

# 1. 前台运行命令

# 2. 使用 Ctrl-Z 强制停止命令运行

# 3. 使用 bg %1 将命令转入到后台运行

# 4. 使用 disown %1 将命令与当前进程脱离

14.10.5 ()

( ) 在独立子进程中运行命令

1. fork 一个全新的子 Shell 进程
2. 子进程继承父进程的环境变量
3. 但子进程的所有变量修改、操作,都不会影响父进程!
4. 执行完成后,子进程自动退出

$ ( cat file.txt ; sleep 10 && )

14.11 子进程与 exec

14.11.1 exec

exec 的核心作用是用新进程替换当前进程,或者改变当前 Shell 的文件描述符

# exec:替换当前进程(执行命令)

# 调用 exec 后,当前进程的代码段、数据段被新程序替换

# PID 保持不变

# 原 Shell 的后续代码不再执行

#!/bin/bash

echo "这是 PID $$"

exec ls -l

echo "这行永远不会执行!"

#! /bin/bash

echo "这是 PID $$"

exec sleep 100

echo "在另一个终端ps 查看sleep 进程号"

14.11.2 重定向当前shell文件描述符

重定向当前 Shell 的文件描述符,常用于把整个脚本的输入/输出重定向到文件:

bash

exec [n] <file # 以 FD n 打开 file 中的内容

exec [n] >file # 将 FD n 的输出重定向到 file 中

exec [n] >& m # 将 FD n 的输出重定向到 FD m 中

exec n > &- # 关闭 FD <n>

#!/bin/bash

exec 3< input # 以 fd 3 打开 input 读

read line <&3

echo "读到: $line"

exec 3<&- # 关闭 fd 3

#!/bin/bash

exec 3>>/tmp/a # 打开 fd 3,指向 /tmp/a 添加

exec 4>&3 # 将 fd 4 指向 fd 3

echo "hfsdjlello" >&4 # 把 echo 的输出写到 fd 4 -> fd 3

exec 4>&- # 关闭 fd 4

exec 3>&- # 关闭 fd 3

#!/bin/bash


exec 3>/tmp/a # 打开 fd 3,指向 /tmp/a

echo "hello" >&3 # 把 echo 的输出写到 fd 3

exec 3>&- # 关闭 fd 3

14.12 screen:终端多路复用器

screen 是一个终端多路复用器,它允许在一个终端窗口中运行多个独立的终端会话,并且这些会话可以在后台运行,即使你断开 SSH 连接,它们也不会终止。

# 启动新会话

screen

screen -ls # 列出所有会话

screen -S <session-name> # 启动并命名会话

# 分离会话(Detach)

screen -d <session-name>

# 或者快捷键 Ctrl-a 然后按 d

# 重新连接会话

screen -r <session-name>

# 终止会话

exit # 从当前会话中输入

screen -X -S <session-name> quit # 从外部终止会话

# 多用户共享会话

screen -x <session-name>

常用快捷键:

14.13 tmux:screen 的升级版

bash

# 启动新会话

tmux

tmux new -s <session-name> # 启动并命名会话

# 分离会话(Detach)快捷键 Ctrl-b 然后按 d

# 重新连接会话

tmux attach -t <session-name>

# 终止会话

exit # 从当前会话中输入

第十五章 用户管理

who/whoami - 查看登录用户
id - 查看用户信息
useradd/userdel - 添加/删除用户
passwd - 修改密码
groupadd/groupdel - 管理用户组
usermod - 修改用户属性
/etc/passwd - 用户配置文件

15.1 who / whoami:查看登录用户

bash

who

# user pts/0 2026-06-01 09:00 (192.168.1.50)

# root tty1 2026-06-01 08:30

whoami # 查看当前登录用户名

who am i # 查看原始登录用户

15.2 id:查看用户 UID、GID 和所属组

bash

id # 查看当前用户

# uid=1000(user) gid=1000(user) groups=1000(john),4(adm),27(sudo)

id root # 查看指定用户

id -u user # 仅查看 UID

id -g user # 仅查看 GID

id -G user # 查看所有附属组 ID

15.3 useradd / userdel:创建和删除用户

需 root 权限。

bash

# 创建用户(完整参数):

sudo useradd -m -s /bin/bash -c 'John' john

# -m:创建 HOME 目录,-s:指定 Shell

# 创建后必须设置密码:

sudo passwd john

# 删除用户:

sudo userdel john # 保留 HOME

sudo userdel -r john # 同时删除 HOME

15.4 groupadd / groupdel / usermod:管理用户组和修改用户属性

bash

# 创建和删除组:

sudo groupadd -g 1005 developers

sudo groupdel developers # 组内必须无用户

# usermod 修改用户属性:

sudo usermod -aG sudo john # 添加到 sudo 组

sudo usermod -L john # 锁定用户

sudo usermod -U john # 解锁用户

# 关键用户文件:

/etc/passwd /etc/group /etc/shadow

第十六章 服务管理

systemctl - 控制系统服务(启停/自启/状态)
crontab - 定时任务管理

16.1 systemctl:控制系统服务

管理系统服务的启动、停止和自启

bash

# 服务启停:

sudo systemctl start nginx # 启动

sudo systemctl stop nginx # 停止

sudo systemctl restart nginx # 重启

# 开机自启:

sudo systemctl enable nginx # 设置开机自启

sudo systemctl disable nginx # 取消自启

# 状态查询:

sudo systemctl status nginx # 查看详细状态

systemctl is-active nginx # 是否运行

systemctl list-units # 列出系统中的服务```

systemctl 状态输出

`systemctl status` 输出解读:

# 输出示例:

- nginx.service - A high performance web server

Loaded: loaded (/lib/systemd/system/nginx.service; enabled)

Active: active (running) since Mon 2026-06-01 09:00:00 CST

Main PID: 12345 (nginx)

Memory: 5.2M

# loaded: 已加载,enabled: 开机自启

# active (running): 正在运行

16.2 crontab:定时任务管理

bash

crontab -e # 编辑当前用户的定时任务

crontab -l # 查看当前用户的定时任务

crontab -r # 删除所有定时任务

# 格式:分 时 日 月 周 命令

# 0-59 0-23 1-31 1-12 0-7

# 示例:

0 2 * * * /home/john/backup_db.sh # 每天凌晨 2 点

*/5 * * * * /home/john/check.sh # 每 5 分钟

0 9 * * 1 /home/john/cleanup.sh # 每周一 9 点

Xilinx ERNIC RoCEv2 FPGA实现与QP队列深度解析 本文深入解析Xilinx ERNIC RoCEv2在FPGA上的实现,重点剖析QP队列对的管理机制与深度优化策略。通过Verilog代码示例和工程实战,详细介绍了如何实现高吞吐量、低延迟的RDMA硬件卸载方案,为金融交易和数据中心应用提供性能优化指导。 阅读详情

相关推荐

基于TMS320F28034的SCI技术简介

28034的SCI没有接入DMA总线,不过它的收发都有4级的FIFO,在一定程度上也能够缓解cpu的压力。 本文的设计思想如下: 接收:通过中断的方式,4级FIFO满后在中断里将RXDATA出栈。不过就存在这种情况,发送端发出的数据未必能填满4级FIFO,然而此时配置的是4级FIFO触发中断,所以这种情况下中断无法及时地触发。怎么办? 本文的做法是在主程序下循环读取FIFO。这样就可以确保在数据高速传输时,通过中断和主程序及时和有效地接收到总线的数据。(不过当总线波特率较低时可能中断是几...

weixin_48388779的博客 1407

Linux运维实战

去阿里源、清华源。

weixin_57136547的博客 286

别再让C盘爆红了!手把手教你将Anaconda虚拟环境迁移到其他盘(附权限问题解决)

本文详细指导如何将Anaconda虚拟环境从C盘迁移到其他驱动器,解决C盘空间不足问题。通过conda config命令和直接修改.condarc配置文件两种方法,确保环境迁移顺利进行,同时提供权限问题解决方案和长期维护技巧,帮助用户高效管理虚拟环境。

weixin_42525289的博客 421

linux命令大全

Linux常用命令

weixin_60996371的博客 255

华为无线WiFi实战:基于802.1x与NPS的企业级认证部署指南

本文提供了一份详尽的华为无线WiFi企业级认证部署实战指南。通过整合802.1x协议与Windows NPS服务器,构建基于AD域账号的安全认证体系,彻底解决传统WiFi密码共享带来的安全风险。文章详细拆解了从NPS服务器配置、证书部署到华为AC端RADIUS模板、AAA方案、认证域及VAP模板调用的全流程,并附有终端连接测试与常见故障排查方法,助力企业实现高效、安全的无线网络接入管理。

weixin_29239661的博客 271

《遥感大模型生产级实战:从数据到决策的端到端AI工程》系列第一部分:AI遥感工程师的基础设施与工具链-文章 4:传统遥感分析与机器学习基线

本章将系统性地介绍经典遥感分析工作流,从数据预处理到多维度特征工程,再到如何利用经典的机器学习模型(如随机森林、支持向量机)进行监督与非监督学习。我们将通过一个完整的“智慧农业作物分类”项目实战,展示如何利用我们之前构建的数据湖和工具链,从原始数据到最终的分析结果,构建一个性能可靠、可解释性强的基线系统。更重要的是,我们将深入剖析这种传统方法的局限性,从而为后续章节引入遥感大模型的必要性提供强有力的论证。

panshengwu的博客 707

Linux 运维命令速查大全:X86/ARM 通用,深度适配麒麟/Ubuntu/CentOS/红帽

摘要:本文整合优快云、掘金、知乎百万级流量优质博文,构建史上最完整的Linux命令手册。全文覆盖基础命令、文本处理、包管理、防火墙、用户权限、系统监控、网络配置、Docker运维等全场景,并深度适配银河麒麟、中标麒麟等国产信创系统,区分Debian/RedHat两大派系,解决ARM/X86跨架构命令报错问题。包含 “零基础极速上手”、 “运维血泪避坑” 、“ 完整命令速查表 ”等独家章节,适合新手入门、日常运维、国产化项目落地,文末提供带目录完整版PDF资源下载。

折哥|智能物流与Java实战,副高数据库工程师。深耕出版社物流WMS/OMS(线体/立库/VGA),也分享Java进阶与OMS电商对接。Oracle→PG实战派。相信沉淀可迁移能力,分享通用技术,不藏不虚。 3079

LM339 vs LM358:手把手教你选对比较器和运放(附电路设计避坑指南)

本文深入比较了LM339比较器与LM358运算放大器的核心差异,包括内部架构、输出结构和典型应用场景。通过实测数据和电路设计案例,揭示了选型要点和常见设计陷阱,帮助工程师在电源监控、传感器信号调理等场景中做出正确选择。

convnet3designer的博客 358

Linux命令实战:从基础到面试高频问题解析

Linux命令行是操作系统管理的核心工具,通过直接调用系统调用与内核交互。其技术价值在于高效完成文件操作、进程管理和系统监控等任务,广泛应用于服务器运维、性能调优等场景。本文重点解析面试常见考点如netstat/ss命令对比、文件权限管理、文本处理三剑客(grep/awk/sed)等实用技巧,并深入探讨硬链接与软链接等Linux核心概念。掌握这些命令不仅能提升工作效率,更是技术面试中展示系统理解深度的关键。

weixin_30615767的博客 339

小红书图文笔记图像批量爬取:Python爬虫实战与反反爬策略全解析

在当今社交媒体盛行的时代,小红书作为中国领先的生活方式分享平台,积累了海量的优质图文内容。对于数据分析师、市场研究人员或内容创作者来说,能够高效获取这些数据具有重要意义。本文将详细介绍如何使用Python构建一个高效、稳定的小红书图文笔记图像批量爬取工具,涵盖最新技术栈和反反爬策略。本文详细介绍了如何使用Python构建一个高效、稳定的小红书图文笔记图像批量爬取系统。通过结合Playwright、aiohttp等现代工具,实现了从列表页采集到图片下载的完整流程。

2201_76125261的博客 2364

CANoe-vTESTstudio之Test Diagram编辑器

总之,CANoe-vTESTstudio的Test Diagram编辑器提供了一个直观且强大的工具,用于创建和管理测试用例。通过图形化的界面和丰富的功能,测试工程师可以更轻松地编写复杂的测试脚本,并有效地进行测试开发。在上面的示例中,我们创建了一个名为"MyTestCase"的测试用例,并定义了两个测试步骤"Step1"和"Step2"。在上面的示例中,我们在执行"Step1"之后使用条件语句来确定是否执行"Step2"。在每次迭代中,我们创建一个新的测试步骤,并根据迭代次数动态生成相应的日志和验证消息。

TcData的博客 249

Linux系统管理命令大全

本文总结了Linux系统管理和网络配置的常用命令,分为以下5个部分: 系统信息查询 主机名、系统/内核版本、CPU/内存使用情况查询 文件系统分析、环境变量查看、登录记录检查 SELinux状态管理及字体缓存刷新 系统操作命令 端口监听、别名设置、文件查找与复制 主机名修改、时间同步配置、NFS挂载 内存释放、定时任务设置、系统备份方法 用户管理 用户创建/删除、密码策略配置 权限管理、家目录重建、目录权限检查 网络安全 网络连接诊断、路由追踪、DNS配置 网络抓包(tcpdump)与分析(Wireshar

weixin_43289813的博客 470

Moviepy自动化剪辑视频中的广告

本教程展示了如何使用 Python 中的 MoviePy 库,通过检测和剪辑广告段落来实现视频内容的清洁播放。通过广告检测算法和 MoviePy 剪辑功能的结合,可以自动化处理视频,极大提升编辑效率。在学习和应用中,理解广告检测的原理及其实现方法尤为重要,以便针对不同类型的视频进行调整。此外,MoviePy 的灵活性使其适用于多种视频编辑场景,适合自动化内容制作与优化。

Mr数据杨 3418

Linux Command:600+ Linux 命令速查手册与多平台部署开发实战指南

Linux Command 是一个以 Markdown 形式搜集并整理 Linux 命令手册的开源仓库,当前仓库收录了 **600 多个 Linux 命令**,并将其构建为带索引搜索能力的静态 Web 站点,同时以 npm 包形式对外发布命令数据。本篇指南以仓库根目录的 [README.md](https://link.gitcode.com/i/1f08e9418e7083bfe392da297

gitblog_00574的博客 934

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

(16)-Shell脚本与变量与函数与循环条件语句

——*个人学习复习用笔记

2301_80041579的博客 164

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【Linux】【busybox】基于busybox的根文件系统的完善以及介绍根文件系统下的文件夹和文件与Linux内核的衔接

最直观的是就是用户日常直接交互的那一层所有文件夹是根文件系统,内核作为底层支撑,运行在后台,不直接以文件夹的形式呈现给用户。1. 内核启动↓2. 解析 bootargs 中的 root 参数↓3. 加载 initrd 到内存↓4. 执行 initrd 中的 init 脚本- 加载必要的驱动- 检测存储设备- 挂载根文件系统↓5. 切换根文件系统(pivot_root)↓6. 启动 init 进程(PID 1)↓7. init 进程执行系统初始化。

qq_73648789的博客 288

理解 Linux 动态库加载:LD_LIBRARY_PATH

flyfish

二分掌柜的 399

USB 技术系列 11 · USB Linux 驱动框架

本文系统解析Linux USB驱动框架,涵盖USB Core、HCD(xhci-hcd/dwc3)、类驱动(CDC/HID/Mass Storage)分层架构,详解usb_device_id匹配、probe/disconnect生命周期及Device Tree配置。结合RISC-V N300实战,揭示Host/Device双模式驱动开发核心逻辑,助力嵌入式BSP开发者掌握USB子系统全栈能力。

peter_pan_study的博客 270

Linux 服务器性能排查手册(2026):CPU、内存、磁盘IO、网络四大瓶颈定位

iptables 四表五链模型、firewalld zone 信任级别、云安全组与主机防火墙的关系与优先级,避坑改了防火墙把自己挡在服务器外面的翻车事故。

2502_91473995的博客 340

Linux rm 误删文件恢复实操教程

Linux使用rm删除文件时,并不会直接抹除磁盘上的数据,只是移除文件索引,让系统不再识别这块空间。只要没有写入新数据,原有扇区内容就会保留。新文件写入才有可能覆盖这些区域,一旦覆盖就很难找回。恢复的本质就是扫描磁盘,找到这些还存在、但索引丢失的数据条目,再把它们导出保存到其他分区。越早停止写入,恢复成功的概率越高。

海天数据恢复-winhex数据恢复教程 237

Windows/Linux下强实时运动控制内核(二):基于Qt的Delta机械手的开发应用

强实时运动控制内核MotionRT750下Qt开发Delta机械手的完整开发流程。

weixin_57350300的博客 247

嵌入式 Linux OOM Killer 触发逻辑与防误杀实战指南

本文深入解析嵌入式 Linux 下 OOM Killer 的触发机制,结合工业网关真实工程场景,提供从日志排查、内核参数调优到关键进程保护的完整落地方案,解决核心进程被误杀导致的业务中断问题。

嵌入式扫地僧 397

Linux epoll 一篇讲透:从 select/poll 到红黑树、LT/ET,再到完整 TCP 服务器

一万个客户端已经连上服务器,眼下只有十个客户端发来了数据。服务器怎样把时间花在这十个连接上?理解这个问题,就抓住了 epoll 的主线。接下来,我们沿着“为什么需要它 → 接口怎么用 → 内核如何实现 → LT/ET 怎么写 → 完整服务器怎么运行”的顺序,把知识连起来。**阅读基础:**了解socketbindlistenaccept的基本用途即可。本文示例面向 Linux,服务器使用 C++17,实验脚本使用 Python 3。

2601_94861874的博客 438

深入浅出聊聊 Linux 的 PageCache 与系统极致性能

本文深入浅出解析了 Linux PageCache 的核心机制,揭示其如何通过“延迟写、预读读”提升系统性能。以监控告警为切入点,阐明 free -h 中 buff/cache 并非真正占用,真正可用内存由 available 决定。结合 Kafka、Elasticsearch、MySQL 等实战场景,说明中间件如何依赖 PageCache 实现极致性能。强调不可手动清理缓存,并建议合理调优脏页参数,避免卡顿。最终指出:内存满≠危机,而是系统高效运行的体现。

小小默:进无止境 511

【Linux 命令实战(06):Linux 文件权限管理,掌握 chmod、chown、chgrp】

chmod:修改文件和目录权限。chown:修改文件所有者,也可以修改所属用户组。chgrp:修改文件所属用户组。r:读取。w:写入。x:执行,对于目录则表示进入和访问能力。ugo:分别代表所有者、所属组和其他用户。我认为,权限管理最重要的不是记住755644这些数字,而是先弄清楚谁需要访问文件、需要执行什么操作,再给出恰当的权限。尤其是在测试服务器和生产服务器上,不要为了图方便直接使用chmod 777。权限开放得越大,并不代表问题解决得越好。

一些微不足道的见解、希望能帮助各位 344

Linux篇(五)

本文系统梳理了Linux常用终端快捷键、软件包管理(yum/apt)、服务管理(systemctl)、软链接(ln)、时间与IP配置、域名解析、固定IP设置及网络命令(ping/wget/curl),涵盖日常运维核心操作,助力高效管理Linux环境。

wykyzdq的博客 207

Linux的渲染与显示系统链路

Linux渲染与显示链路核心为DRM/KMS + EGL直连模式,绕过传统X11/Wayland中间层,实现低延迟、高效率的直接帧提交。相比X11的粗粒度权限控制与Wayland的合成开销,该方案链路短、资源消耗低,但仅支持单进程独占显示,缺乏窗口管理与系统级兜底。EGL作为跨平台桥梁,连接OpenGL ES与原生显示系统,通过Display、Surface、Context三要素构建渲染环境。内核层DRM管理GPU资源,KMS配置显示模式,用户态GDM负责登录会话,共同构成从硬件到应用的完整图形栈。

微小的鱼的博客 435
上一篇: 1、Linux 入门指南:从 Ubuntu 安装到基础命令实战
下一篇: 3、Linux 系统管理与 Shell 编程实战指南:从软件安装、进程管理到变量作用域与 Bash 脚本自动化
硅基造物主
博客等级 码龄4年 17粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值