三、详细解释:系统管理与监控命令

1. ps – 查看进程状态
  • 用途:显示当前系统的进程状态。

  • 语法

    ps [选项]
    
  • 常用选项

    • aux:显示所有用户的进程(详细信息)。
    • -ef:显示所有进程(完整格式)。
    • -u 用户名:显示指定用户的进程。
  • 输出字段

    • PID:进程ID。
    • USER:进程所有者。
    • %CPU:CPU占用率。
    • %MEM:内存占用率。
    • COMMAND:启动进程的命令。
  • 示例

    # 查看所有进程的详细信息
    ps aux
    
    # 查找与Nginx相关的进程
    ps aux | grep nginx
    

2. top/htop – 实时监控系统资源
  • 用途:动态查看系统资源使用情况(CPU、内存、进程等)。

  • 语法

    top
    htop  # 需额外安装,功能更强大
    
  • 常用操作

    • P:按CPU使用率排序。
    • M:按内存使用率排序。
    • k:终止指定进程(输入PID)。
    • q:退出。
  • 示例

    # 启动top
    top
    
    # 安装htop(如未安装)
    sudo apt install htop  # Ubuntu/Debian
    sudo yum install htop  # CentOS/Red Hat
    
    # 启动htop
    htop
    

3. df – 查看磁盘空间
  • 用途:显示文件系统的磁盘使用情况。

  • 语法

    df [选项]
    
  • 常用选项

    • -h:以易读格式显示(如 1K1G)。
    • -T:显示文件系统类型。
  • 输出字段

    • Filesystem:文件系统名称。
    • Size:总大小。
    • Used:已用空间。
    • Avail:可用空间。
    • Use%:使用百分比。
  • 示例

    # 查看磁盘使用情况(易读格式)
    df -h
    
    # 查看指定目录的磁盘使用情况
    df -h /var/log
    

4. du – 查看目录占用空间
  • 用途:统计目录或文件的磁盘使用情况。

  • 语法

    du [选项] 目录或文件
    
  • 常用选项

    • -h:以易读格式显示。
    • -s:仅显示总大小(不显示子目录)。
    • --max-depth=1:限制显示层级。
  • 示例

    # 查看当前目录的总大小
    du -sh .
    
    # 查看/var/log下各子目录的大小
    du -h --max-depth=1 /var/log
    

5. free – 查看内存使用
  • 用途:显示系统内存使用情况(物理内存、交换分区)。

  • 语法

    free [选项]
    
  • 常用选项

    • -h:以易读格式显示。
    • -m:以MB为单位显示。
  • 输出字段

    • total:总内存。
    • used:已用内存。
    • free:空闲内存。
    • buff/cache:缓存和缓冲区内存。
  • 示例

    # 查看内存使用情况(易读格式)
    free -h
    

6. systemctl – 管理服务
  • 用途:启动、停止、重启系统服务(Systemd 系统)。

  • 语法

    systemctl [操作] 服务名
    
  • 常用操作

    • start:启动服务。
    • stop:停止服务。
    • restart:重启服务。
    • status:查看服务状态。
    • enable:设置开机自启。
    • disable:禁用开机自启。
  • 示例

    # 启动Nginx服务
    sudo systemctl start nginx
    
    # 查看Nginx状态
    sudo systemctl status nginx
    
    # 设置Nginx开机自启
    sudo systemctl enable nginx
    

7. journalctl – 查看系统日志
  • 用途:查看和管理 Systemd 日志(适用于 Systemd 系统)。

  • 语法

    journalctl [选项]
    
  • 常用选项

    • -u 服务名:查看指定服务的日志。
    • -f:实时跟踪日志(类似 tail -f)。
    • --since "2023-08-01":查看指定时间之后的日志。
    • --until "2023-08-10":查看指定时间之前的日志。
  • 示例

    # 查看SSH服务的日志
    sudo journalctl -u sshd
    
    # 实时跟踪系统日志
    sudo journalctl -f
    
    # 查看今天的所有日志
    sudo journalctl --since today
    

8. crontab – 定时任务管理
  • 用途:设置定时任务(如定期备份、清理日志)。

  • 语法

    crontab [选项]
    
  • 常用操作

    • -e:编辑当前用户的定时任务。
    • -l:列出当前用户的定时任务。
    • -r:删除当前用户的定时任务。
  • 时间格式

    * * * * * 命令
    | | | | |
    | | | | +-- 星期(0-7,0和7表示周日)
    | | | +---- 月份(1-12)
    | | +------ 日期(1-31)
    | +-------- 小时(0-23)
    +---------- 分钟(0-59)
    
  • 示例

    # 编辑定时任务
    crontab -e
    
    # 每天凌晨2点执行备份脚本
    0 2 * * * /home/user/backup.sh
    
    # 每5分钟清理一次临时文件
    */5 * * * * rm -rf /tmp/*
    

实战案例:监控系统资源并自动报警

目标:当内存使用率超过90%时发送邮件报警
  1. 编写监控脚本monitor_memory.sh):

    #!/bin/bash
    MEMORY_THRESHOLD=90
    CURRENT_MEMORY=$(free | grep Mem | awk '{print $3/$2 * 100.0}')
    if (( $(echo "$CURRENT_MEMORY > $MEMORY_THRESHOLD" | bc -l) )); then
        echo "内存使用率超过90%!当前使用率:${CURRENT_MEMORY}%" | mail -s "内存报警" [email protected]
    fi
    
  2. 设置定时任务

    crontab -e
    # 每5分钟执行一次监控脚本
    */5 * * * * /path/to/monitor_memory.sh
    

小贴士:
  1. 性能瓶颈排查
    • 使用 top 查看高CPU/内存进程。
    • 使用 iostat 查看磁盘I/O。
    • 使用 netstat 查看网络连接。
  2. 日志轮转
    • 使用 logrotate 定期压缩和清理日志文件。
  3. 服务管理
    • 使用 systemctl list-unit-files 查看所有服务状态。

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