Linux学习 Day_04

发布于:2025-06-11 ⋅ 阅读:(24) ⋅ 点赞:(0)

一、高效快捷键与终端操作优化

1.1 核心控制快捷键

  • 进程与输入控制

    • Ctrl + C:强制终止前台进程,等价于发送SIGINT信号。适用于终止卡住的tailping等命令。

      bash

      # 示例:终止持续输出的日志监控
      tail -f app.log → Ctrl + C
      

    • Ctrl + Z:将当前进程挂起(暂停并放入后台),可通过fg恢复前台或bg转为后台运行。

      bash

      # 挂起当前命令并查看后台任务
      tar -zcvf data.tar.gz /data → Ctrl + Z
      jobs → # 查看后台任务列表
      fg %1 → # 恢复第一个后台任务到前台
      

    • Ctrl + D:EOF(End of File)信号,用于退出交互式程序(如pythonmysql)或登出终端(等价于exit)。
  • 历史命令高级操作

    • history命令参数扩展:

      bash

      history -c → # 清空历史命令
      history -w → # 将内存中的历史命令写入磁盘(~/.bash_history)
      
    • 交互式搜索:Ctrl + R进入逆向搜索模式,输入关键字匹配历史命令(如搜索ssh相关命令)。
    • 命令重用:!$引用上一条命令的最后一个参数,!*引用所有参数。

      bash

      # 示例:快速复制上一条命令的文件路径
      cp /data/source.txt /backup → mv !$ /backup/source.bak # !$指代/backup/source.txt
      

1.2 光标与文本操作

  • 精准定位技巧

    • Ctrl + A/Ctrl + E:跳转到行首 / 行尾(等价于Home/End键)。
    • Alt + B/Alt + F:按单词向左 / 右移动(需配置终端支持,如bashreadline库)。
    • Ctrl + U:删除从光标到行首的内容;Ctrl + K:删除从光标到行尾的内容。
  • 多行编辑与粘贴

    • Ctrl + Shift + C/V:终端内复制粘贴(适用于图形化终端如 Xshell、FinalShell)。
    • Shift + PageUp/PageDown:滚动查看历史输出。

1.3 终端优化配置

  • 清屏与窗口管理

    • Ctrl + L/clear:清空终端显示,clear等价于执行printf "\033c"
    • 终端分屏:使用tmuxscreen工具创建多个窗口 / 面板(需安装)。

      bash

      yum install tmux → tmux new -s mysession → # 创建新会话
      
  • 个性化配置

    • 修改终端提示符(PS1变量):

      bash

      # 在~/.bashrc中添加以下行,显示当前用户、主机名、路径
      export PS1="[\u@\h \W]\$ "
      source ~/.bashrc → # 生效配置
      

二、软件安装与服务管理深度解析

2.1 包管理体系对比

系统类型 包管理器 软件仓库格式 依赖处理 典型命令
CentOS/RHEL yum/dnf RPM 自动解决 yum installdnf update
Ubuntu/Debian apt/apt-get DEB 自动解决 apt installapt upgrade
Arch Linux pacman pkg.tar.zst 自动解决 pacman -Spacman -Rs
通用方案 snap/flatpak 沙盒化包 内置依赖 snap installflatpak install

  • Yum 高级操作

    • 更换软件源:修改/etc/yum.repos.d/下的 repo 文件,使用阿里云、清华源等镜像。

      bash

      curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/CentOS-vault.repo
      yum makecache → # 生成缓存
      
    • 离线安装:使用yumdownloader下载包及依赖。

      bash

      yum install yum-utils → yumdownloader --resolve wget → # 下载wget及其依赖
      
  • Apt 进阶技巧

    • 手动安装 DEB 包:dpkg -i package.deb,解决依赖问题用apt -f install
    • 多版本管理:通过apt-cache showpkg package查看可用版本,使用apt install package=version指定版本。

2.2 systemctl 与服务治理

  • 服务生命周期管理

    bash

    systemctl start|stop|restart|reload sshd → # 管理sshd服务(reload用于重新加载配置)
    systemctl enable|disable --now sshd → # 启用自启并立即启动
    
  • 服务状态诊断

    bash

    systemctl status sshd → # 查看服务运行状态、日志
    journalctl -u sshd → # 查看sshd相关日志(systemd日志管理)
    systemctl list-dependencies sshd → # 查看服务依赖关系
    
  • 自定义服务创建
    创建/etc/systemd/system/myapp.service文件:

    ini

    [Unit]
    Description=My Application Service
    After=network.target
    
    [Service]
    Type=simple
    ExecStart=/usr/local/myapp/myapp.sh
    ExecStop=/usr/local/myapp/stop.sh
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    
     

    生效配置:systemctl daemon-reload && systemctl enable --now myapp

三、网络与系统配置实战

3.1 网络基础与 IP 管理

  • IP 地址与路由

    • 查看网络接口:ip addr show(推荐)或ifconfig(需net-tools包)。
    • 配置静态 IP(以 CentOS 为例):

      bash

      vim /etc/sysconfig/network-scripts/ifcfg-ens33 → # 修改以下字段
      BOOTPROTO=static
      IPADDR=192.168.1.100
      NETMASK=255.255.255.0
      GATEWAY=192.168.1.1
      DNS1=8.8.8.8
      systemctl restart network → # 重启网络服务
      
  • 域名解析与 Hosts 文件

    • hosts文件优先级高于 DNS,适用于本地测试:

      bash

      echo "127.0.0.1 local.test.com" >> /etc/hosts
      
    • 清除 DNS 缓存:systemd-resolve --flush-caches(systemd 环境)。

3.2 时间同步与时区设置

  • 时区调整全流程

    bash

    timedatectl list-timezones → # 查看所有时区
    timedatectl set-timezone Asia/Shanghai → # 设置东八区时区
    timedatectl set-ntp true → # 启用NTP时间同步
    
  • 手动校准与服务配置

    bash

    ntpdate -u ntp.aliyun.com → # 手动同步阿里云时间
    systemctl enable --now chronyd → # 启用chrony时间服务(替代ntpd)
    

3.3 端口与网络工具

  • 端口扫描与监控
    • nmap基础用法:

      bash

      nmap -p 1-1024 192.168.1.1 → # 扫描目标IP的1-1024端口
      nmap -sV 192.168.1.100 → # 检测开放端口的服务版本
      
    • netstatss命令:

      bash

      netstat -antp | grep 80 → # 查看80端口占用(需安装net-tools)
      ss -tunlp | grep :443 → # 推荐使用ss查看TCP/UDP端口(更高效)
      

四、文件系统与数据管理

4.1 环境变量深度应用

  • 变量作用域解析

    • 全局变量:写入/etc/profile/etc/bashrc,对所有用户生效。
    • 用户变量:写入~/.bash_profile~/.bashrc,仅当前用户生效。
    • 会话变量:通过export临时设置,关闭终端后失效。
  • PATH 变量优化

    bash

    # 添加自定义脚本目录到PATH(推荐写入~/.bashrc)
    export PATH=$PATH:/home/user/bin
    source ~/.bashrc → # 立即生效
    
  • 动态库路径设置

    bash

    # 临时添加动态库路径
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
    # 永久生效需写入/etc/ld.so.conf.d/目录
    echo "/usr/local/lib" > /etc/ld.so.conf.d/local.conf
    ldconfig → # 刷新动态库缓存
    

4.2 压缩与归档高级技巧

  • 压缩格式对比表

    格式 压缩算法 扩展名 压缩比 适用场景
    tar .tar 1:1 简单归档
    gzip DEFLATE .tar.gz 3:1 文本文件、日志
    bzip2 bzip2 .tar.bz2 4:1 高压缩比需求
    xz LZMA .tar.xz 5:1 归档后长期存储
    zip Deflate .zip 2:1 跨平台传输
  • 分卷压缩与加密

    bash

    # 分卷压缩(每个文件100MB)
    tar -czvf - /data | split -b 100M -d - data.tar.gz.
    # 合并分卷并解压
    cat data.tar.gz.* | tar -xzvf -
    
     

    bash

    # 使用gpg加密压缩包
    gpg --symmetric data.tar.gz → # 设置密码加密
    gpg data.tar.gz.gpg → # 输入密码解密
    

五、系统监控与故障排除

5.1 资源监控工具链

  • 实时监控三剑客

    • top:按F键自定义显示字段,Shift + M/P/T分别按内存 / CPU / 时间排序。
    • htop:增强版top,支持鼠标操作和进程树显示(需安装htop包)。
    • glances:可视化监控工具,支持输出到 Web 界面或文件。

      bash

      pip install glances → glances -w → # 启动Web服务器,访问http://localhost:61208
      
  • 磁盘与 I/O 分析

    bash

    iostat -x 5 → # 每5秒显示磁盘I/O详细信息(需安装sysstat包)
    df -hT → # 查看文件系统类型与使用情况
    du -sh /data → # 快速统计目录大小(-h人性化单位,-s总大小)
    

5.2 常见故障排查流程

  • 系统无法启动

    1. 进入救援模式:开机按E键编辑启动项,在linux16行末尾添加rescue
    2. 修复文件系统:fsck /dev/sda3(假设根分区为 sda3)。
    3. 重置 root 密码:挂载根分区为可写,修改/etc/shadow或使用passwd命令。
  • 网络连接异常

    bash

    ping 127.0.0.1 → # 检查本地环回接口
    ping gateway_ip → # 检查网关连通性
    traceroute www.baidu.com → # 追踪路由路径
    tcpdump -i ens33 port 80 → # 抓包分析网络流量
    

六、高级进阶:用户权限与自动化

6.1 用户与权限管理

  • 用户组与 ACL 权限

    bash

    groupadd developers → # 创建开发组
    useradd -G developers bob → # 将bob加入developers组
    setfacl -m u:bob:rwx /project → # 给bob用户单独设置/project目录读写执行权限
    
  • sudo 权限配置

    bash

    visudo → # 编辑sudo配置文件
    bob ALL=(ALL) NOPASSWD: /usr/sbin/service httpd restart → # 允许bob无密码重启httpd服务
    

6.2 Shell 脚本自动化

  • 基础脚本示例:每日日志备份

    bash

    #!/bin/bash
    LOG_DIR="/var/log/app"
    BACKUP_DIR="/backup/logs/$(date +%Y%m%d)"
    mkdir -p $BACKUP_DIR
    tar -zcvf $BACKUP_DIR/logs.tar.gz $LOG_DIR/*
    find /backup/logs/ -type f -mtime +7 -exec rm {} \; → # 删除7天前备份
    

    配置定时任务:crontab -e添加0 2 * * * /path/to/backup.sh

七、附录:常用命令速查表

类别 命令 说明
系统信息 uname -ahostname 查看内核信息、主机名
文件操作 cpmvln 复制、移动、链接文件
权限管理 chmodchownumask 修改权限、所有者、默认权限
网络工具 sshscprsync 远程连接、文件传输、同步
进程管理 pstreekillallnice 查看进程树、终止进程、调整优先级