当前位置: 首页 > news >正文

Linux的基本操作

Linux 系统基础操作完整指南

一、文件与目录操作

1. 导航与查看

  • pwd (Print Working Directory)

    • 作用:显示当前所在目录的完整路径
    • 示例:pwd → 输出 /home/user/documents
    • 使用场景:当你在多层目录中迷失时快速定位当前位置
  • ls (List)

    • 常用选项:
      • -l:长格式显示(包含权限、所有者、大小等信息)
      • -a:显示所有文件(包括隐藏文件)
      • -h:人类可读的文件大小(如KB、MB)
    • 示例:ls -lah /home → 详细列出/home目录下所有文件
  • cd (Change Directory)

    • 特殊路径:
      • cd ~:返回用户主目录
      • cd ..:返回上级目录
      • cd -:返回上次所在的目录
    • 示例:cd /var/log/nginx → 进入nginx日志目录
  • tree

    • 安装:sudo apt install tree (Debian/Ubuntu)
    • 常用选项:
      • -L:限制显示层级深度
      • -d:只显示目录
    • 示例:tree -L 2 /etc → 显示/etc目录下两层结构

2. 文件操作

  • cp (Copy)

    • 常用选项:
      • -r:递归复制目录
      • -i:覆盖前提示
      • -v:显示复制进度
    • 示例:cp -riv source_dir/ dest_dir/ → 安全复制目录
  • mv (Move)

    • 重命名示例:mv old_filename new_filename
    • 移动示例:mv *.jpg /path/to/images/
  • rm (Remove)

    • 危险操作警告:
      • rm -rf / → 系统毁灭性命令(绝对不要尝试)
      • 建议使用-i选项进行交互式删除
    • 安全示例:rm -i important_file.txt
  • 文件查看工具对比

    • cat:快速查看小文件内容
    • less:支持上下翻页查看大文件(推荐)
    • more:基本分页查看(功能少于less)
    • head/tail:查看文件开头/结尾部分

3. 文件查找

  • find 高级用法:

    # 查找7天内修改过的.log文件
    find /var/log -name "*.log" -mtime -7# 查找大于10MB的文件
    find / -size +10M# 查找并删除旧备份文件
    find /backups -name "*.tar.gz" -mtime +30 -delete
    
  • grep 文本搜索:

    # 递归搜索目录中包含"error"的行
    grep -r "error" /var/log/# 显示匹配行及前后3行内容
    grep -A 3 -B 3 "critical" system.log# 使用正则表达式搜索
    grep -E "[0-9]{3}-[0-9]{4}" contacts.txt
    
  • locate 使用注意:

    • 需要先更新数据库:sudo updatedb
    • 查找速度快但不实时(适合查找不变的系统文件)

二、权限与用户管理

1. 权限控制详解

  • 权限表示法

    • 字母表示:rwx r-x r-x
    • 数字表示:755(对应rwxr-xr-x)
    • 特殊权限:
      • SUID(4):chmod u+s file
      • SGID(2):chmod g+s dir
      • Sticky(1):chmod +t /tmp
  • chmod 实例:

    # 给脚本添加执行权限
    chmod +x backup.sh# 设置目录权限(目录通常需要执行权限才能进入)
    chmod 755 public_dir/# 递归修改目录下所有文件权限
    chmod -R 644 /var/www/html/
    
  • chown 高级用法:

    # 同时修改所有者和组
    chown user:group file.txt# 递归修改目录所有权
    chown -R www-data:www-data /var/www/# 只修改组而不改变所有者
    chown :developers project/
    

2. 用户管理实践

  • 用户创建选项

    # 创建用户并指定主目录
    sudo useradd -m -d /home/newuser -s /bin/bash newuser# 创建系统用户(无登录权限)
    sudo useradd -r -s /usr/sbin/nologin service_user# 设置用户密码策略
    sudo passwd -e newuser  # 强制下次登录修改密码
    
  • 用户组管理

    # 创建新组
    sudo groupadd developers# 将用户添加到附加组
    sudo usermod -aG sudo,developers newuser# 查看用户所属组
    groups username
    
  • sudo配置

    • 配置文件:/etc/sudoers(使用visudo命令编辑)
    • 示例配置:
      # 允许用户无需密码执行特定命令
      username ALL=(ALL) NOPASSWD: /usr/bin/apt update
      

三、进程管理

1. 进程监控工具

  • ps 输出解读:

    • USER:进程所有者
    • PID:进程ID
    • %CPU:CPU使用率
    • %MEM:内存使用率
    • COMMAND:启动命令
  • top 使用技巧:

    • 交互命令:
      • M:按内存排序
      • P:按CPU排序
      • k:终止进程
      • q:退出
    • 批处理模式:top -b -n 1 > processes.txt
  • htop 增强功能:

    • 鼠标支持
    • 树状视图(F5)
    • 进程搜索(F3)
    • 自定义显示列(F2)

2. 信号管理

信号编号信号名作用示例
1SIGHUP重新加载配置kill -1 1234
9SIGKILL强制终止(不可捕获)kill -9 1234
15SIGTERM优雅终止(默认信号)kill 1234
19SIGSTOP暂停进程(不可捕获)kill -19 1234

四、网络操作

1. 网络诊断工具

  • ping 高级用法:

    # 指定次数和间隔
    ping -c 5 -i 2 google.com# 测试MTU大小
    ping -M do -s 1472 example.com
    
  • traceroute 替代方案:

    • mtr:实时路由跟踪工具
    • tracepath:不需要root权限
  • ss 现代替代netstat:

    # 查看所有TCP连接
    ss -t# 查看监听端口和进程
    ss -tulnp# 显示socket统计
    ss -s
    

2. 安全文件传输

  • scp 安全复制:

    # 指定端口复制
    scp -P 2222 file.txt user@remote:/path/# 保留文件属性
    scp -p backup.tar.gz user@backup-server:/backups/
    
  • rsync 高效同步:

    # 增量备份(排除临时文件)
    rsync -avz --exclude='tmp/' --delete /data/ user@remote:/backups/# 带宽限制(100KB/s)
    rsync --bwlimit=100 -avz large_file user@remote:/destination/# 远程到本地恢复
    rsync -avz user@remote:/backups/ /local/restore/
    

五、系统管理

1. 磁盘管理进阶

  • df 实用选项:

    # 显示inode使用情况
    df -i# 只显示特定文件系统类型
    df -t ext4
    
  • du 深度分析:

    # 找出最大的10个目录
    du -h / | sort -rh | head -n 10# 排除特定目录
    du -h --exclude=".cache" /home/user
    

2. systemd 服务管理

  • 服务状态检查

    # 详细服务状态
    systemctl status nginx --no-pager# 验证服务是否启用
    systemctl is-enabled nginx# 列出所有失败的服务
    systemctl --failed
    
  • journalctl 日志查询:

    # 跟踪最新日志
    journalctl -f -u nginx# 按时间范围查询
    journalctl -u mysql --since "2023-01-01" --until "2023-01-02"# 显示内核日志
    journalctl -k
    

六、实用技巧进阶

1. 高效命令行

  • 历史命令

    # 搜索历史命令
    history | grep "apt install"# 快速执行历史命令
    !123        # 执行第123条历史命令
    !ssh        # 执行最近的ssh开头的命令
    
  • 命令组合

    # 统计当前目录文件数
    ls | wc -l# 查找并替换多个文件内容
    grep -rl "oldtext" . | xargs sed -i 's/oldtext/newtext/g'
    

2. 环境变量管理

  • 持久化配置

    • 用户级:~/.bashrc~/.bash_profile
    • 系统级:/etc/environment/etc/profile.d/
  • PATH管理示例

    # 添加多个路径
    export PATH=$PATH:/new/path1:/new/path2# 永久添加到bashrc
    echo 'export PATH=$PATH:/opt/myapp/bin' >> ~/.bashrc
    source ~/.bashrc
    

七、学习路径建议

1. 渐进式学习

  1. 基础阶段

    • 每天掌握5个常用命令
    • 在虚拟机中练习文件操作
    • 记录常用命令到备忘单
  2. 中级阶段

    • 学习shell脚本基础
    • 理解管道和重定向
    • 配置简单的cron任务
  3. 高级阶段

    • 编写复杂shell脚本
    • 学习sed/awk文本处理
    • 理解系统启动过程

2. 推荐资源

  • 在线学习

    • Linux Journey (https://linuxjourney.com/)
    • OverTheWire Bandit (实战游戏)
  • 书籍推荐

    • 《Linux命令行与shell脚本编程大全》
    • 《鸟哥的Linux私房菜》
  • 社区支持

    • Stack Overflow
    • Linux中国论坛
    • 官方文档和man pages

Linux 系统基础操作完整指南

一、文件与目录操作

1. 导航与查看

  • pwd (Print Working Directory)

    • 作用:显示当前所在目录的完整路径
    • 示例:pwd → 输出 /home/user/documents
    • 使用场景:当你在多层目录中迷失时快速定位当前位置
  • ls (List)

    • 常用选项:
      • -l:长格式显示(包含权限、所有者、大小等信息)
      • -a:显示所有文件(包括隐藏文件)
      • -h:人类可读的文件大小(如KB、MB)
    • 示例:ls -lah /home → 详细列出/home目录下所有文件
  • cd (Change Directory)

    • 特殊路径:
      • cd ~:返回用户主目录
      • cd ..:返回上级目录
      • cd -:返回上次所在的目录
    • 示例:cd /var/log/nginx → 进入nginx日志目录
  • tree

    • 安装:sudo apt install tree (Debian/Ubuntu)
    • 常用选项:
      • -L:限制显示层级深度
      • -d:只显示目录
    • 示例:tree -L 2 /etc → 显示/etc目录下两层结构

2. 文件操作

  • cp (Copy)

    • 常用选项:
      • -r:递归复制目录
      • -i:覆盖前提示
      • -v:显示复制进度
    • 示例:cp -riv source_dir/ dest_dir/ → 安全复制目录
  • mv (Move)

    • 重命名示例:mv old_filename new_filename
    • 移动示例:mv *.jpg /path/to/images/
  • rm (Remove)

    • 危险操作警告:
      • rm -rf / → 系统毁灭性命令(绝对不要尝试)
      • 建议使用-i选项进行交互式删除
    • 安全示例:rm -i important_file.txt
  • 文件查看工具对比

    • cat:快速查看小文件内容
    • less:支持上下翻页查看大文件(推荐)
    • more:基本分页查看(功能少于less)
    • head/tail:查看文件开头/结尾部分

3. 文件查找

  • find 高级用法:

    # 查找7天内修改过的.log文件
    find /var/log -name "*.log" -mtime -7# 查找大于10MB的文件
    find / -size +10M# 查找并删除旧备份文件
    find /backups -name "*.tar.gz" -mtime +30 -delete
    
  • grep 文本搜索:

    # 递归搜索目录中包含"error"的行
    grep -r "error" /var/log/# 显示匹配行及前后3行内容
    grep -A 3 -B 3 "critical" system.log# 使用正则表达式搜索
    grep -E "[0-9]{3}-[0-9]{4}" contacts.txt
    
  • locate 使用注意:

    • 需要先更新数据库:sudo updatedb
    • 查找速度快但不实时(适合查找不变的系统文件)

二、权限与用户管理

1. 权限控制详解

  • 权限表示法

    • 字母表示:rwx r-x r-x
    • 数字表示:755(对应rwxr-xr-x)
    • 特殊权限:
      • SUID(4):chmod u+s file
      • SGID(2):chmod g+s dir
      • Sticky(1):chmod +t /tmp
  • chmod 实例:

    # 给脚本添加执行权限
    chmod +x backup.sh# 设置目录权限(目录通常需要执行权限才能进入)
    chmod 755 public_dir/# 递归修改目录下所有文件权限
    chmod -R 644 /var/www/html/
    
  • chown 高级用法:

    # 同时修改所有者和组
    chown user:group file.txt# 递归修改目录所有权
    chown -R www-data:www-data /var/www/# 只修改组而不改变所有者
    chown :developers project/
    

2. 用户管理实践

  • 用户创建选项

    # 创建用户并指定主目录
    sudo useradd -m -d /home/newuser -s /bin/bash newuser# 创建系统用户(无登录权限)
    sudo useradd -r -s /usr/sbin/nologin service_user# 设置用户密码策略
    sudo passwd -e newuser  # 强制下次登录修改密码
    
  • 用户组管理

    # 创建新组
    sudo groupadd developers# 将用户添加到附加组
    sudo usermod -aG sudo,developers newuser# 查看用户所属组
    groups username
    
  • sudo配置

    • 配置文件:/etc/sudoers(使用visudo命令编辑)
    • 示例配置:
      # 允许用户无需密码执行特定命令
      username ALL=(ALL) NOPASSWD: /usr/bin/apt update
      

三、进程管理

1. 进程监控工具

  • ps 输出解读:

    • USER:进程所有者
    • PID:进程ID
    • %CPU:CPU使用率
    • %MEM:内存使用率
    • COMMAND:启动命令
  • top 使用技巧:

    • 交互命令:
      • M:按内存排序
      • P:按CPU排序
      • k:终止进程
      • q:退出
    • 批处理模式:top -b -n 1 > processes.txt
  • htop 增强功能:

    • 鼠标支持
    • 树状视图(F5)
    • 进程搜索(F3)
    • 自定义显示列(F2)

2. 信号管理

信号编号信号名作用示例
1SIGHUP重新加载配置kill -1 1234
9SIGKILL强制终止(不可捕获)kill -9 1234
15SIGTERM优雅终止(默认信号)kill 1234
19SIGSTOP暂停进程(不可捕获)kill -19 1234

四、网络操作

1. 网络诊断工具

  • ping 高级用法:

    # 指定次数和间隔
    ping -c 5 -i 2 google.com# 测试MTU大小
    ping -M do -s 1472 example.com
    
  • traceroute 替代方案:

    • mtr:实时路由跟踪工具
    • tracepath:不需要root权限
  • ss 现代替代netstat:

    # 查看所有TCP连接
    ss -t# 查看监听端口和进程
    ss -tulnp# 显示socket统计
    ss -s
    

2. 安全文件传输

  • scp 安全复制:

    # 指定端口复制
    scp -P 2222 file.txt user@remote:/path/# 保留文件属性
    scp -p backup.tar.gz user@backup-server:/backups/
    
  • rsync 高效同步:

    # 增量备份(排除临时文件)
    rsync -avz --exclude='tmp/' --delete /data/ user@remote:/backups/# 带宽限制(100KB/s)
    rsync --bwlimit=100 -avz large_file user@remote:/destination/# 远程到本地恢复
    rsync -avz user@remote:/backups/ /local/restore/
    

五、系统管理

1. 磁盘管理进阶

  • df 实用选项:

    # 显示inode使用情况
    df -i# 只显示特定文件系统类型
    df -t ext4
    
  • du 深度分析:

    # 找出最大的10个目录
    du -h / | sort -rh | head -n 10# 排除特定目录
    du -h --exclude=".cache" /home/user
    

2. systemd 服务管理

  • 服务状态检查

    # 详细服务状态
    systemctl status nginx --no-pager# 验证服务是否启用
    systemctl is-enabled nginx# 列出所有失败的服务
    systemctl --failed
    

  • journalctl 日志查询:

    # 跟踪最新日志
    journalctl -f -u nginx# 按时间范围查询
    journalctl -u mysql --since "2023-01-01" --until "2023-01-02"# 显示内核日志
    journalctl -k
    

六、实用技巧进阶

1. 高效命令行

  • 历史命令

    # 搜索历史命令
    history | grep "apt install"# 快速执行历史命令
    !123        # 执行第123条历史命令
    !ssh        # 执行最近的ssh开头的命令
    
  • 命令组合

    # 统计当前目录文件数
    ls | wc -l# 查找并替换多个文件内容
    grep -rl "oldtext" . | xargs sed -i 's/oldtext/newtext/g'
    

2. 环境变量管理

  • 持久化配置

    • 用户级:~/.bashrc~/.bash_profile
    • 系统级:/etc/environment/etc/profile.d/
  • PATH管理示例

    # 添加多个路径
    export PATH=$PATH:/new/path1:/new/path2# 永久添加到bashrc
    echo 'export PATH=$PATH:/opt/myapp/bin' >> ~/.bashrc
    source ~/.bashrc
    

http://www.dtcms.com/a/339202.html

相关文章:

  • AC 内容审计技术
  • UE5 使用RVT制作地形材质融合
  • 【LeetCode】3655. 区间乘法查询后的异或 II (差分/商分 + 根号算法)
  • 部署Qwen-Image
  • 【AAOS】Android Automotive 16模拟器源码下载及编译
  • 【LeetCode题解】LeetCode 153. 寻找旋转排序数组中的最小值
  • HJ2 计算某字符出现次数
  • C语言关于函数传参和返回值的一些想法2(参数可修改的特殊情况)
  • 从数据孤岛到实时互联:Canal 驱动的系统间数据同步实战指南
  • 在职老D渗透日记day21:sqli-labs靶场通关(第27a关)get联合注入 过滤select和union “闭合
  • C# 13 与 .NET 9 跨平台开发实战(第一章:开发环境搭建与.NET概述)
  • Milvus 向量数据库中的索引类型
  • SQL 语句进阶实战:从基础查询到性能优化全指南
  • K8s命名空间:资源隔离与管理的核心
  • 轻量级milvus安装和应用示例
  • 一文精通 Swagger 在 .NET 中的全方位配置与应用
  • 软件测试-Selenium学习笔记
  • Dify-MCP服务创建案例
  • 循环高级综合练习①
  • 46 C++ STL模板库15-容器7-顺序容器-双端队列(deque)
  • 人工智能统一信息结构的挑战与前景
  • Vue3编程中更多常见书写错误场景
  • 使用OpenCV计算灰度图像的质心
  • 云原生堡垒机渗透测试场景
  • 所有普通I/O口都支持中断的51单片机@Ai8051U, AiCube 图形化配置
  • 微服务架构的演进:从 Spring Cloud Netflix 到云原生新生态
  • 大模型微调RAG、LORA、强化学习
  • 如何使用VNC对openEuler系统进行远程图形化操作
  • Ubuntu Server 22.04 k8s部署服务较时,文件描述符超过限制的处理方法
  • RabbitMQ:SpringBoot+RabbitMQ 多消费者绑定同一队列