01

一、Linux基本命令

实验02-04:目录操作、文件操作、系统信息查看

实验02 实验03 实验04
📝 实验要点: 掌握Linux终端命令格式,学会目录浏览、文件操作、信息查看等基本命令。
命令 选项/参数 说明 示例
pwd 显示当前工作目录的绝对路径
pwd
cd 目录路径 切换目录,~表示家目录,..表示上级目录
cd /home/user
cd ..
cd ~
ls -l -a -h -R 列出目录内容,-l详细列表,-a显示所有文件,-h易读格式,-R递归显示
ls -la
ls -lh /home
mkdir -p 创建目录,-p选项可创建多级目录
mkdir dir1
mkdir -p dir1/dir2/dir3
rmdir 删除空目录
rmdir empty_dir
touch 文件名 创建空文件或更新文件时间戳
touch file.txt
cp -r -i -v 复制文件或目录,-r递归复制目录,-i覆盖前询问
cp file1 file2
cp -r dir1 dir2
mv -i 移动或重命名文件/目录
mv old.txt new.txt
mv file.txt /backup/
rm -r -f -i 删除文件或目录,-r递归删除,-f强制删除,-i删除前询问
rm file.txt
rm -rf dir/
cat -n -b 查看文件内容,-n显示行号,-b对非空行编号
cat file.txt
cat -n config.conf
more/less 文件名 分页查看文件内容,less功能更强大
less large_file.txt
more log.txt
head/tail -n 行数 查看文件开头/结尾内容,-n指定行数,tail -f可实时查看日志
head -20 file.txt
tail -f log.txt
wc -l -w -c 统计文件信息,-l行数,-w单词数,-c字节数
wc -l file.txt
wc file.txt
grep -i -n -r -v 文本搜索,-i忽略大小写,-n显示行号,-r递归搜索
grep "error" log.txt
grep -rn "function" src/
find -name -type -size -exec 查找文件,-name按名称,-type按类型,-size按大小
find . -name "*.txt"
find /home -size +100M
df -h 显示磁盘空间使用情况,-h人类可读格式
df -h
du -h -s 显示目录大小,-h易读格式,-s只显示总计
du -sh /home
du -h --max-depth=1
free -h 显示内存使用情况,-h人类可读格式
free -h
top/htop 实时显示系统进程和资源使用情况
top
htop
ps aux -ef 显示进程状态,aux或-ef显示所有进程详细信息
ps aux
ps -ef | grep java
kill -9 PID 终止进程,-9强制终止
kill 1234
kill -9 5678
date +格式 显示或设置系统日期时间
date
date "+%Y-%m-%d %H:%M:%S"
cal -y -3 显示日历,-y显示全年,-3显示前月、本月、下月
cal
cal -y 2024
02

二、Linux编程基础

实验05-06:文本编辑器、程序编译与调试

实验05 实验06
📝 实验要点: 掌握vim编辑器使用,学会使用gcc编译C程序,掌握Makefile编写。
命令/操作 选项/参数 说明 示例
vim i :wq :q! dd 文本编辑器,i进入插入模式,:wq保存退出,:q!强制退出,dd删除当前行
vim file.txt
# 进入后按i编辑
# 按ESC后输入:wq保存退出
sed -n -i -e 流编辑器,用于批量文本处理,-n只显示处理行,-i直接修改文件
sed 's/old/new/g' file.txt
sed -i '/^#/d' config.conf
gcc -o -c -g -Wall C编译器,-o指定输出文件,-c只编译不链接,-g包含调试信息
gcc -o program program.c
gcc -c -g program.c
编译流程 -E -S -c 预处理(-E)→编译(-S)→汇编(-c)→链接
gcc -E hello.c -o hello.i
gcc -S hello.i -o hello.s
gcc -c hello.s -o hello.o
gcc hello.o -o hello
make -f -j 构建工具,根据Makefile自动编译
make
make clean
make -j4
Makefile示例:
CC = gcc
CFLAGS = -Wall -g
TARGET = program
OBJS = main.o utils.o

$(TARGET): $(OBJS)
    $(CC) $(CFLAGS) -o $(TARGET) $(OBJS)

main.o: main.c utils.h
    $(CC) $(CFLAGS) -c main.c

utils.o: utils.c utils.h
    $(CC) $(CFLAGS) -c utils.c

clean:
    rm -f $(OBJS) $(TARGET)
03

三、Linux用户与权限

实验07-08:用户管理、组管理、文件权限

实验07 实验08
📝 实验要点: 掌握用户和组的增删改查,理解文件权限的数字/符号表示法,掌握chmod、chown等命令。
命令 选项/参数 说明 示例
useradd -m -s -u -g 添加用户,-m创建家目录,-s指定shell,-u指定UID,-g指定主组
sudo useradd -m -s /bin/bash user1
passwd 用户名 设置用户密码,root可直接设置,普通用户需输入原密码
sudo passwd user1
passwd
usermod -aG -s -L 修改用户属性,-aG添加附加组,-s修改shell,-L锁定账户
sudo usermod -aG sudo user1
userdel -r 删除用户,-r同时删除家目录
sudo userdel user1
sudo userdel -r user1
groupadd -g 添加组,-g指定GID
sudo groupadd developers
groupdel 删除组
sudo groupdel developers
chmod 755 u+x -R 修改文件权限,数字模式(755)或符号模式(u+x),-R递归修改
chmod 755 script.sh
chmod u+x file.txt
chmod -R 644 /var/www/
chown 用户:组 -R 修改文件所有者和组,-R递归修改
chown user1 file.txt
chown user1:group1 file.txt
chown -R www:www /var/www/
chgrp 组名 修改文件所属组
chgrp developers file.txt
权限表示法:
# 数字表示法
7 = rwx (4+2+1) - 读+写+执行
6 = rw- (4+2) - 读+写
5 = r-x (4+1) - 读+执行
4 = r-- (4) - 只读

# 符号表示法
u=用户, g=组, o=其他人, a=所有人
+添加权限, -移除权限, =设置权限
r=读, w=写, x=执行

# 常用权限
755: rwxr-xr-x 所有者全权限,其他人读执行
644: rw-r--r-- 所有者读写,其他人只读
04

四、磁盘与文件系统

实验09:磁盘分区、文件系统创建与挂载

实验09
📝 实验要点: 掌握磁盘分区方法,学会创建文件系统,掌握文件系统的挂载与卸载。
命令 选项/参数 说明 示例
fdisk -l 设备名 磁盘分区工具,-l列出分区表,后跟设备名进入交互分区
sudo fdisk -l
sudo fdisk /dev/sdb
lsblk -o -f 查看磁盘树状结构,-o指定显示列,-f显示文件系统
lsblk
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT
mkfs -t 类型 -L 标签 创建文件系统,-t指定类型(ext4/xfs等),-L设置卷标
sudo mkfs.ext4 /dev/sdb1
sudo mkfs.xfs -L DATA /dev/sdb2
mount -t 类型 -o 选项 挂载文件系统,-t指定类型,-o指定挂载选项(ro/rw等)
sudo mount /dev/sdb1 /mnt/data
sudo mount -o ro /dev/sdb2 /mnt/backup
umount 设备或挂载点 卸载文件系统
sudo umount /mnt/data
sudo umount /dev/sdb1
/etc/fstab 配置文件 自动挂载配置文件,系统启动时自动挂载
# /etc/fstab 示例
/dev/sdb1 /data ext4 defaults 0 2
df -h -T 显示文件系统磁盘空间使用情况
df -hT
/etc/fstab 文件格式详解:
# 设备 挂载点 文件系统 选项 dump pass
/dev/sdb1 /data ext4 defaults 0 2
UUID=xxxx /home ext4 defaults 0 2
LABEL=DATA /backup xfs defaults 0 2

# 字段说明:
1. 设备:设备文件、UUID或LABEL
2. 挂载点:绝对路径
3. 文件系统:ext4, xfs, ntfs等
4. 选项:defaults包含rw,suid,dev,exec,auto,nouser,async
5. dump:备份标志(0=不备份)
6. pass:fsck检查顺序(0=不检查,1=根分区,2=其他分区)
05

五、LVM逻辑卷管理

实验11:物理卷、卷组、逻辑卷的创建与管理

实验11
📝 实验要点: 掌握LVM三层结构(PV→VG→LV),学会逻辑卷的动态扩展与缩减。
命令 选项/参数 说明 示例
pvcreate 设备 创建物理卷(PV)
sudo pvcreate /dev/sdb /dev/sdc
vgcreate 卷组名 PV列表 创建卷组(VG)
sudo vgcreate datavg /dev/sdb /dev/sdc
lvcreate -L 大小 -n 名称 创建逻辑卷(LV),-L指定大小,-n指定名称
sudo lvcreate -L 10G -n datalv datavg
lvextend -L +大小 -r 扩展逻辑卷,-L +10G增加10G,-r同时扩展文件系统
sudo lvextend -L +5G /dev/datavg/datalv
lvreduce -L 大小 缩减逻辑卷,需先缩减文件系统
sudo lvreduce -L 8G /dev/datavg/datalv
vgextend 卷组名 PV 扩展卷组,添加物理卷
sudo vgextend datavg /dev/sdd
pvs/vgs/lvs 查看物理卷/卷组/逻辑卷信息
sudo pvs
sudo vgs
sudo lvs
LVM操作流程:
# 1. 创建物理卷(PV)
sudo pvcreate /dev/sdb /dev/sdc

# 2. 创建卷组(VG)
sudo vgcreate datavg /dev/sdb /dev/sdc

# 3. 创建逻辑卷(LV)
sudo lvcreate -L 10G -n datalv datavg

# 4. 创建文件系统
sudo mkfs.ext4 /dev/datavg/datalv

# 5. 挂载使用
sudo mount /dev/datavg/datalv /mnt/data

# 6. 扩展逻辑卷
sudo lvextend -L +5G /dev/datavg/datalv
sudo resize2fs /dev/datavg/datalv # ext4文件系统
# 或一步完成
sudo lvextend -r -L +5G /dev/datavg/datalv
06

六、RAID磁盘阵列

实验10:RAID创建、管理与数据恢复

实验10
📝 实验要点: 掌握RAID各级别特性,学会使用mdadm创建和管理RAID阵列。
命令 选项/参数 说明 示例
mdadm --create --level --raid-devices --spare-devices 创建RAID阵列,--level指定级别,--raid-devices指定磁盘数
sudo mdadm --create /dev/md0 --level=5 \
--raid-devices=3 --spare-devices=1 \
/dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb4
mdadm --detail RAID设备 查看RAID详细信息
sudo mdadm --detail /dev/md0
cat /proc/mdstat 查看RAID状态信息
cat /proc/mdstat
mdadm --add RAID设备 磁盘 添加磁盘到RAID阵列
sudo mdadm /dev/md0 --add /dev/sdb5
mdadm --fail RAID设备 磁盘 标记磁盘为故障状态
sudo mdadm /dev/md0 --fail /dev/sdb1
mdadm --remove RAID设备 磁盘 从RAID中移除磁盘
sudo mdadm /dev/md0 --remove /dev/sdb1
mdadm --stop RAID设备 停止RAID阵列
sudo mdadm --stop /dev/md0
RAID级别对比:
RAID0: 条带化,无冗余,性能高,最少2块盘
RAID1: 镜像,冗余好,容量50%,最少2块盘
RAID5: 分布式奇偶校验,兼顾性能与冗余,最少3块盘
RAID6: 双重奇偶校验,更高冗余,最少4块盘
RAID10: 先镜像后条带,高性能高冗余,最少4块盘
07

七、Shell编程

实验12-13:Shell脚本编写、变量、条件判断、循环控制

实验12 实验13
📝 实验要点: 掌握Shell脚本编写,理解变量、条件测试、循环控制等语法。
语法/命令 选项/参数 说明 示例
#!/bin/bash 脚本首行 指定脚本解释器为bash
#!/bin/bash
变量 $变量名 ${变量名} 变量定义和使用,等号两边不能有空格
name="John"
echo $name
echo ${name}
read -p -s -n 读取用户输入,-p显示提示,-s隐藏输入(密码)
read -p "Enter name: " name
read -s -p "Password: " pass
条件测试 [ ] [[ ]] 条件判断,注意括号内空格
[ -f file.txt ]
[ $a -eq $b ]
[[ $str == "hello" ]]
if语句 if/then/elif/else/fi 条件判断语句
if [ $age -ge 18 ]; then
  echo "Adult"
elif [ $age -ge 13 ]; then
  echo "Teenager"
else
  echo "Child"
fi
for循环 for/in/do/done 循环语句,遍历列表
for i in {1..5}; do
  echo "Number: $i"
done

for file in *.txt; do
  echo "Processing: $file"
done
while循环 while/do/done 条件循环语句
count=1
while [ $count -le 5 ]; do
  echo "Count: $count"
  ((count++))
done
case语句 case/in/esac 多分支选择语句
case $OS in
  "Linux")
    echo "Linux系统"
    ;;
  "Windows")
    echo "Windows系统"
    ;;
  *)
    echo "未知系统"
    ;;
esac
函数 function local 函数定义,local声明局部变量
function say_hello {
  local name=$1
  echo "Hello, $name!"
}

say_hello "John"
08

八、网络管理

实验14-15:网络配置、DHCP服务器配置与管理

实验14 实验15
📝 实验要点: 掌握网络接口配置,学会DHCP服务器安装与配置。
命令 选项/参数 说明 示例
ifconfig 接口 IP地址 配置网络接口,临时设置IP地址(已过时,推荐ip命令)
sudo ifconfig eth0 192.168.1.100
sudo ifconfig eth0 up
ip addr link route 新一代网络配置工具
ip addr show
ip route
ip link set eth0 up
hostname 主机名 查看或临时设置主机名
hostname
sudo hostname server1
hostnamectl set-hostname 永久修改主机名
sudo hostnamectl set-hostname server1
ping -c -i 测试网络连通性,-c指定次数,-i指定间隔
ping -c 4 google.com
netstat/ss -tulpn -a 查看网络连接状态,ss比netstat更快
netstat -tulpn
ss -tulpn
dhcpd.conf 配置文件 DHCP服务器配置文件
# /etc/dhcp/dhcpd.conf 示例
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.100 192.168.1.200;
  option routers 192.168.1.1;
  option domain-name-servers 8.8.8.8;
  default-lease-time 600;
  max-lease-time 7200;
}
systemctl dhcpd start stop status DHCP服务管理
sudo systemctl start dhcpd
sudo systemctl status dhcpd
09

九、系统服务管理

系统服务启动、停止、状态查看

通用技能
📝 实验要点: 掌握systemctl管理服务,学会查看系统日志。
命令 选项/参数 说明 示例
systemctl start stop restart status enable disable 系统服务管理,start启动,stop停止,restart重启,status查看状态,enable开机自启
sudo systemctl start sshd
sudo systemctl enable sshd
sudo systemctl status network
journalctl -u -f --since 查看系统日志,-u指定服务,-f实时查看,--since指定时间
sudo journalctl -u sshd
sudo journalctl -f
sudo journalctl --since "2024-01-01"
服务状态说明:
loaded: 配置文件已加载
active (running): 正在运行
active (exited): 成功运行一次
active (waiting): 运行但等待事件
inactive: 未运行
enabled: 开机自启
disabled: 不开机自启
static: 不能单独启用,但可被其他服务依赖