一、Linux基本命令
实验02-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 |
二、Linux编程基础
实验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) |
|||
三、Linux用户与权限
实验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-- 所有者读写,其他人只读 |
|||
四、磁盘与文件系统
实验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=其他分区) |
|||
五、LVM逻辑卷管理
实验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 |
|||
六、RAID磁盘阵列
实验10:RAID创建、管理与数据恢复
📝 实验要点: 掌握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块盘 |
|||
七、Shell编程
实验12-13:Shell脚本编写、变量、条件判断、循环控制
📝 实验要点: 掌握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" |
八、网络管理
实验14-15:网络配置、DHCP服务器配置与管理
📝 实验要点: 掌握网络接口配置,学会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 |
九、系统服务管理
系统服务启动、停止、状态查看
📝 实验要点: 掌握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: 不能单独启用,但可被其他服务依赖 |
|||