通过上一章的学习,你已经认识了Linux这座宏伟的“数字图书馆”的基本面貌。现在,我们将从普通访客升级为拥有管理员权限的“图书馆馆长”,学习如何精细管理馆藏、设置访问权限、管理不同读者,以及确保整个场馆运行有序。📁 核心模块一:文件基本属性与权限管理
在Linux中,“一切皆文件”,每个文件都附带着一套详细的“身份证信息”,决定了谁可以看、谁可以改、谁可以运行。
1. 文件权限理解
文件权限由10个字符表示,例如:-rwxr-xr--
权限解读:
第1位:文件类型(-普通文件,d目录,l链接)
第2-4位:文件所有者的权限
第5-7位:文件所属用户组的权限
第8-10位:其他用户的权限
权限字符含义:
数字权限表示法:
r=4, w=2, x=1rwx = 4+2+1 = 7rw- = 4+2+0 = 6r-x = 4+0+1 = 5r-- = 4+0+0 = 4
示例:-rwxr-xr-- 换算为:所有者=7,所属组=5,其他人=4 即权限码为 754
2. 权限管理命令
查看文件详细属性:
ls -l filename # 查看单个文件的详细权限ls -la # 查看当前目录所有文件(包括隐藏文件)ls -lh # 以易读方式显示文件大小
修改文件权限:
# 符号模式chmod u+x script.sh # 为文件所有者添加执行权限chmod g-w file.txt # 为所属组移除写权限chmod o=r file.txt # 为其他用户设置只读权限chmod a+r file.txt # 为所有用户添加读权限# 数字模式chmod 755 script.sh # 所有者:rwx,组:r-x,其他:r-xchmod 644 config.yml # 所有者:rw-,组:r--,其他:r--chmod 600 secret.txt # 所有者:rw-,组:---,其他:---
修改文件所有者:
chown user:group file.txt # 同时修改所有者和所属组chown tester app.log # 仅修改所有者chown :developers project/ # 仅修改所属组
🗂️ 核心模块二:文件与目录管理命令
1. 目录导航与查看
pwd # 显示当前工作目录cd /home/projects # 切换到指定目录cd .. # 返回上一级目录cd ~ # 返回当前用户的家目录cd - # 返回上次所在的目录
2. 文件列表查看
ls # 列出当前目录内容ls -l # 详细列表(权限、大小、时间等)ls -la # 详细列表(包括隐藏文件)ls -lh # 易读的文件大小(K、M、G)ls -lt # 按时间倒序排列ls *.py # 只显示Python文件
3. 文件与目录操作
# 创建目录mkdir test_resultsmkdir -p a/b/c/d # 创建多级目录# 创建文件touch new_file.txttouch file1.txt file2.txt file3.txt# 复制文件/目录cp file.txt file_backup.txtcp -r source_dir/ destination_dir/ # 递归复制目录# 移动/重命名文件mv old_name.txt new_name.txtmv file.txt target_dir/# 删除文件/目录rm file.txtrm -f file.txt # 强制删除,不提示rm -r directory/ # 递归删除目录rm -rf temp_data/ # 强制递归删除目录(谨慎使用!)# 链接文件ln source.txt hardlink # 创建硬链接ln -s source.txt softlink # 创建软链接
4. 文件内容查看与处理
# 查看文件内容cat file.txt # 显示整个文件more file.txt # 分页显示(只能向下翻页)less file.txt # 分页显示(可上下翻页、搜索)# 查看文件头尾head -n 20 file.txt # 查看前20行tail -n 50 file.txt # 查看后50行tail -f app.log # 实时追踪文件更新(查看日志神器)# 搜索文件内容grep "error" app.log # 搜索包含"error"的行grep -i "timeout" *.log # 忽略大小写搜索grep -r "TODO" src/ # 递归搜索目录grep -v "debug" file.txt # 显示不包含"debug"的行grep -A 3 -B 3 "error" app.log # 显示匹配行前后3行
5. 文件查找与归档
# 查找文件find . -name "*.py" # 查找当前目录下所有.py文件find /home -name "*.log" # 查找/home下所有日志文件find . -type f -size +10M # 查找大于10MB的文件find . -mtime -7 # 查找7天内修改过的文件find . -name "*.tmp" -delete # 查找并删除临时文件# 打包压缩tar -czvf archive.tar.gz dir/ # 创建.tar.gz压缩包tar -xzvf archive.tar.gz # 解压.tar.gz文件tar -tf archive.tar.gz # 查看压缩包内容zip -r archive.zip dir/ # 创建.zip压缩包unzip archive.zip # 解压.zip文件
👥 核心模块三:用户和用户组管理
1. 用户管理
# 创建用户useradd -m -s /bin/bash tester # 创建用户并建立家目录useradd -m -g developers -G testers newuser # 指定主组和附加组# 修改密码passwd tester # 修改tester用户的密码passwd # 修改当前用户密码# 修改用户属性usermod -aG sudo tester # 将用户添加到sudo组usermod -s /bin/sh tester # 修改用户默认shellusermod -L tester # 锁定用户账户usermod -U tester # 解锁用户账户# 删除用户userdel tester # 删除用户但保留家目录userdel -r tester # 删除用户及家目录
2. 用户组管理
groupadd developers # 创建新组groupdel oldgroup # 删除组usermod -aG developers tester # 将用户添加到组gpasswd -d tester developers # 从组中移除用户
3. 用户信息查看
whoami # 查看当前登录用户id # 查看当前用户ID和组信息id tester # 查看指定用户信息who # 查看当前登录系统的用户w # 查看登录用户及活动last # 查看用户登录历史
4. 权限提升
su - tester # 切换到tester用户su - # 切换到root用户sudo command # 以root权限执行命令sudo -i # 切换到root shellvisudo # 安全编辑sudoers文件
💾 核心模块四:磁盘管理
1. 磁盘使用情况查看
df -h # 查看各分区使用情况(易读格式)df -i # 查看inode使用情况du -sh dir/ # 查看目录总大小du -h --max-depth=1 . # 查看当前目录各子目录大小du -ah dir/ | sort -rh | head -20 # 查看目录下最大的20个文件
2. 挂载与卸载
# 查看挂载信息mount # 查看已挂载的文件系统lsblk # 查看块设备信息blkid # 查看块设备UUID# 挂载文件系统mount /dev/sdb1 /mnt/data # 挂载设备到目录mount -t ext4 /dev/sdb1 /mnt/data # 指定文件系统类型挂载# 卸载文件系统umount /mnt/data # 卸载目录umount -l /mnt/data # 懒卸载(强制卸载忙设备)
3. 磁盘分区与管理
fdisk -l # 查看磁盘分区表parted -l # 查看磁盘分区(支持GPT)mkfs.ext4 /dev/sdb1 # 格式化分区为ext4fsck /dev/sdb1 # 检查并修复文件系统
💎 测试工程师实用技巧
1. 环境搭建与维护
# 创建测试项目目录结构mkdir -p ~/projects/{project_a,project_b}/{test_cases,logs,reports}mkdir -p /opt/test_env/{bin,config,data,logs}# 设置测试目录权限chmod 755 ~/projectschmod -R 775 ~/projects/project_a/test_caseschmod 600 ~/projects/secret_config.yaml
2. 日志分析与监控
# 实时监控应用日志tail -f /var/log/app/error.logtail -f /var/log/nginx/access.log | grep "POST"# 分析日志中的错误grep -c "ERROR" app.log # 统计错误数量grep "ERROR" app.log | cut -d' ' -f1-3 # 提取错误时间grep -E "(ERROR|FATAL)" app.log # 匹配多个模式
3. 自动化脚本模板
#!/bin/bash# 测试环境清理脚本示例LOG_DIR="/var/log/app"BACKUP_DIR="/backup/logs"DAYS_TO_KEEP=30echo "$(date) - 开始清理日志文件"# 清理旧日志find $LOG_DIR -name "*.log" -mtime +$DAYS_TO_KEEP -exec rm -f {} \;# 备份当前日志tar -czf "$BACKUP_DIR/app_logs_$(date +%Y%m%d).tar.gz" $LOG_DIR/*.log# 清理空日志文件find $LOG_DIR -name "*.log" -size 0 -exec rm -f {} \;echo "$(date) - 日志清理完成"
4. 常用命令组合
# 查看占用CPU最高的进程ps aux --sort=-%cpu | head -10# 查看占用内存最高的进程ps aux --sort=-%mem | head -10# 查找大文件find / -type f -size +100M 2>/dev/null | xargs ls -lh# 批量修改文件权限find . -name "*.sh" -exec chmod +x {} \;# 批量重命名文件for file in *.txt; do mv "$file" "backup_$file"; done
📋 最佳实践与安全提示
权限管理原则:始终遵循最小权限原则,避免使用root用户进行日常操作
定期备份:重要配置文件和数据要定期备份
日志管理:合理配置日志轮转,避免磁盘被日志写满
命令确认:执行rm -rf等危险命令前,先确认路径和参数
使用别名:为常用命令设置别名提高效率
掌握这些Linux管理命令后,你将能够独立搭建、维护和排查测试环境问题,大幅提升工作效率和问题定位能力。记住:实践是最好的学习方式,多动手尝试才能真正掌握这些技能。