Linux学习 Day_04

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

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 install, dnf update
Ubuntu/Debian apt/apt-get DEB 自动解决 apt install, apt upgrade
Arch Linux pacman pkg.tar.zst 自动解决 pacman -S, pacman -Rs
通用方案 snap/flatpak 沙盒化包 内置依赖 snap install, flatpak 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 -a, hostname 查看内核信息、主机名
文件操作 cp, mv, ln 复制、移动、链接文件
权限管理 chmod, chown, umask 修改权限、所有者、默认权限
网络工具 ssh, scp, rsync 远程连接、文件传输、同步
进程管理 pstree, killall, nice 查看进程树、终止进程、调整优先级
相关推荐
Detachym22 天前
CentOS7下MySQL8.0的安装到基本操作
大数据·mysql·linux学习·学习日志
Detachym24 天前
CentOS7下的集群化部署
centos·linux学习·集群化部署
遇见火星3 个月前
日常真实工作环境,Mysql常用操作命令,笔记!
android·mysql·adb·常用命令·mysql日志
ITenderL8 个月前
Linux常用命令总结
linux·常用命令
HKJ_numb18 个月前
Linux 常用命令
linux·常用命令·管道
学前端的小朱10 个月前
Linux中的常见命令——用户管理命令
linux·用户管理·常用命令
JerryHe1 年前
Android 常用文件系统命令
android·文件系统·常用命令·分区修复
hcgeng1 年前
Mac Terminal常用命令
mac·常用命令
hcgeng1 年前
mac 常用工具命令集合
常用命令