七、详细解释:实用工具命令

1. rsync – 高效文件同步
  • 用途:增量同步文件/目录(适合备份、迁移),仅传输变化的部分。

  • 语法

    rsync [选项] 源路径 目标路径
    
  • 常用选项

    • -a:归档模式(保留权限、时间戳等,等同于 -rlptgoD)。
    • -v:显示详细过程。
    • -z:压缩传输。
    • -P:显示进度,并支持断点续传。
    • --delete:删除目标中源不存在的文件(保持严格同步)。
  • 示例

    # 本地同步目录到备份位置(保留所有属性)
    rsync -av /data/ /backup/data/
    
    # 同步到远程服务器(通过SSH)
    rsync -avzP -e "ssh -p 2222" /local/dir/ user@remote:/remote/dir/
    
    # 删除目标端多余文件(谨慎使用!)
    rsync -av --delete /source/ /destination/
    

2. lsof – 查看打开的文件与进程
  • 用途:列出被进程打开的文件、目录或网络端口。

  • 语法

    lsof [选项]
    
  • 常用场景

    • 查找占用端口的进程

      lsof -i :80          # 查看占用80端口的进程
      
    • 查看某个进程打开的文件

      lsof -p PID          # 替换为实际进程ID
      
    • 恢复误删的文件
      若文件被删除但进程仍持有句柄,可通过 /proc/PID/fd 恢复。

  • 示例

    # 查找所有TCP连接
    lsof -i TCP
    
    # 查看谁在使用 /var/log 目录
    lsof /var/log
    

3. date – 显示与设置系统时间
  • 用途:查看或修改系统时间,常用于日志记录、任务调度。

  • 语法

    date [选项] [+格式]
    
  • 常用格式

    • %Y-%m-%d:年-月-日(如 2023-08-15)。
    • %H:%M:%S:时:分:秒(如 14:30:00)。
    • %s:Unix 时间戳(如 1692091800)。
  • 示例

    # 显示当前时间(默认格式)
    date
    
    # 自定义格式输出
    date +"%Y-%m-%d %H:%M:%S"
    
    # 设置系统时间(需管理员权限)
    sudo date -s "2023-08-15 14:30:00"
    
    # 生成时间戳(用于脚本记录)
    timestamp=$(date +%s)
    

4. history – 查看命令历史
  • 用途:查看或管理用户执行过的命令记录。

  • 语法

    history [选项]
    
  • 常用操作

    • 查看最近命令

      history 10          # 显示最后10条命令
      
    • 执行历史命令

      !n                 # 执行第n条历史命令(如 !100)
      !string            # 执行最近以 "string" 开头的命令
      
    • 清除历史

      history -c          # 清空当前会话的历史记录
      
  • 配置文件

    • 历史记录保存在 ~/.bash_history(Bash 默认)。

    • 修改 HISTSIZEHISTFILESIZE 控制保存条数:

      echo "HISTSIZE=1000" >> ~/.bashrc  # 会话中保存1000条
      

5. alias – 创建命令别名
  • 用途:为复杂命令定义简短别名,提升效率。

  • 语法

    alias 别名='原命令'
    
  • 常用场景

    • 简化常用命令

      alias ll='ls -alF'      # 输入 ll 代替 ls -alF
      alias update='sudo apt update && sudo apt upgrade'
      
    • 避免危险操作

      alias rm='rm -i'       # 删除前确认(防止误删)
      
  • 持久化配置
    将别名添加到 ~/.bashrc~/.bash_profile 中,使其永久生效。

    echo "alias ll='ls -alF'" >> ~/.bashrc
    source ~/.bashrc         # 立即生效
    

6. watch – 定期执行命令
  • 用途:周期性执行命令并全屏显示结果(如监控变化)。

  • 语法

    watch [选项] 命令
    
  • 常用选项

    • -n 秒数:设置间隔时间(默认2秒)。
    • -d:高亮显示输出差异。
  • 示例

    # 每1秒监控内存使用
    watch -n 1 free -h
    
    # 监控目录文件变化
    watch -d 'ls -l /tmp'
    

7. tmux/screen – 终端复用器
  • 用途:在单个终端窗口中管理多个会话,防止 SSH 断连导致任务中断。

  • 基础操作

    • 启动新会话

      tmux         # 或 screen
      
    • 分离会话:按 Ctrl+B D(tmux)或 Ctrl+A D(screen)。

    • 列出会话

      tmux ls      # screen -ls
      
    • 重新连接会话

      tmux attach -t 0  # 连接会话0
      

实战案例:自动化备份与监控

场景:每日凌晨备份数据库并记录时间
  1. 编写备份脚本backup_db.sh):

    #!/bin/bash
    BACKUP_DIR="/backup/mysql"
    TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
    mysqldump -u root -p密码 数据库名 > $BACKUP_DIR/db_$TIMESTAMP.sql
    
  2. 设置定时任务

    crontab -e
    # 每天凌晨2点执行备份
    0 2 * * * /path/to/backup_db.sh
    
  3. 监控备份目录

    watch -n 60 'ls -l /backup/mysql'  # 每分钟检查一次备份文件
    

注意事项

  1. rsync 同步时的权限问题

    • 使用 -a 选项保留权限,或 --chown 修改目标文件所有者。
    • 同步远程目录时确保 SSH 密钥已配置。
  2. lsof 需管理员权限
    普通用户可能无法查看系统级进程,需使用 sudo

  3. alias 覆盖风险
    避免覆盖系统命令(如 alias ls='rm -rf /'),添加前检查现有别名:

    alias  # 列出所有别名
    
  4. history 安全建议

    • 敏感命令(如含密码)前加空格(需设置 HISTCONTROL=ignorespace)避免记录。
    • 定期清理历史文件。
  5. tmux 进阶操作

    • 分屏:Ctrl+B %(垂直分屏)、Ctrl+B "(水平分屏)。
    • 切换窗口:Ctrl+B 数字

你可能感兴趣的:(#Linux,linux,运维)