编程为何总遇报错?

基础命令行工具(实时监控)

  1. top / htop

    • 功能:动态查看进程资源占用(CPU、内存、PID等)。
    • 操作示例
      top  # 默认视图
      htop # 增强版(需安装:`sudo apt install htop`)
    • 关键交互命令
      • P:按CPU排序
      • M:按内存排序
      • k:结束指定PID进程
  2. ps(进程快照)

    • 常用组合命令:
      ps aux | grep nginx  # 筛选Nginx相关进程
      ps -eo pid,ppid,%cpu,%mem,cmd --sort=-%cpu | head  # 按CPU占用排序

自动化脚本监控

进程存活监控脚本

if ! pgrep -x "$PROCESS_NAME" > /dev/null; then
    echo "[$(date)]: $PROCESS_NAME 已停止!尝试重启..." >> /var/log/process_monitor.log
    systemctl start nginx  # 自动重启服务
fi
  • 部署方式
    crontab -e  # 添加定时任务(每5分钟检查一次)
    */5 * * * * /path/to/monitor_script.sh

资源阈值告警脚本

MEM_THRESHOLD=90
ps -eo pid,%cpu,%mem,cmd | awk -v cpu_th="$CPU_THRESHOLD" -v mem_th="$MEM_THRESHOLD" '
    NR>1 {
        if ($2 > cpu_th || $3 > mem_th) {
            print "[WARNING] PID "$1" ("$4") 超出阈值: CPU="$2"%, MEM="$3"%" >> "/var/log/resource_alert.log"
        }
    }
'

专业级监控工具

Systemd(服务管理)

  • 内置进程守护功能:
    # 编辑服务文件(如 /etc/systemd/system/myapp.service)
    [Service]
    Restart=always         # 异常退出时自动重启
    RestartSec=5           # 重启间隔
    StartLimitInterval=200 # 时间窗口内最多重启次数
  • 查看服务状态:
    systemctl status myapp.service
    journalctl -u myapp -f  # 实时日志跟踪

Supervisor

  • 安装sudo apt install supervisor
  • 配置/etc/supervisor/conf.d/myapp.conf):
    [program:myapp]
    command=/usr/bin/python /opt/myapp.py
    autostart=true
    autorestart=true
    stderr_logfile=/var/log/myapp.err.log
  • 常用命令
    supervisorctl reload   # 重载配置
    supervisorctl status   # 查看进程状态

Prometheus + Grafana(企业级方案)

  • 架构
    • Node Exporter:收集主机指标
    • Prometheus:存储时序数据
    • Grafana:可视化仪表盘
  • 优势:实时报警、历史数据分析、集群监控支持。

安全与最佳实践

  1. 最小权限原则
    • 监控脚本/工具使用低权限用户运行(如 www-data)。
  2. 日志管理
    • 使用 logrotate 分割日志,避免磁盘占满。
  3. 报警机制
    • 集成邮件/钉钉告警(如 mailxcurl 调用Webhook)。
  4. 审计跟踪
    • 通过 auditd 记录关键进程操作:
      auditctl -w /usr/sbin/nginx -p x -k nginx_process

方案选型建议

场景 推荐方案
快速单次检查 top, ps
定时监控与自动重启 Cron + Shell脚本
长期运行的服务守护 Systemd / Supervisor
企业级分布式监控 Prometheus + Grafana

提示:生产环境建议组合使用方案(如 Systemd 管理进程 + Prometheus 监控资源),并定期进行压力测试。


引用说明

  • Linux ps 命令文档:GNU Coreutils Manual
  • Systemd 配置规范:Freedesktop.org Systemd Documentation
  • Supervisor 官方文档:Supervisord.org
  • Prometheus 架构设计:Prometheus.io Documentation

通过以上方法,您可构建从基础到高可用的进程监控体系,根据业务复杂度灵活选择工具,并严格遵守权限控制与日志规范,确保系统稳健运行。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6538.html

(0)
酷番叔酷番叔
上一篇 2025年7月7日 08:20
下一篇 2025年7月7日 08:33

相关推荐

  • 装Win7和Linux双系统,分区与引导如何正确配置?

    安装双系统(Windows 7和Linux)可以让用户同时体验Windows的兼容性和Linux的灵活性,但安装过程需要谨慎规划,尤其是分区和引导配置,以下是详细的安装步骤,涵盖准备工作、系统安装、引导优化等环节,帮助顺利完成双系统部署,安装前的准备工作备份数据分区操作可能导致数据丢失,务必提前将重要文件备份至……

    2025年9月29日
    10700
  • linux下如何格式化磁盘

    linux下,可使用 mkfs 命令格式化磁盘,如 mkfs.ext4 /dev/sdX (将sdX替换为具体磁盘设备名)。

    2025年8月13日
    13000
  • linux系统如何添加路由

    Linux系统中,可通过ip route add命令添加路由,也可使用route add命令

    2025年8月17日
    11200
  • Linux如何查看swap分区的大小?

    在Linux系统中,swap(交换空间)是作为物理内存的补充,当物理内存不足时,系统会将部分不常用的数据暂时存放到swap空间中,从而保证当前运行的程序能够继续执行,查看swap的大小和使用情况,对于系统性能监控、资源优化以及故障排查都至关重要,本文将详细介绍Linux系统中查看swap大小的多种方法,包括常用……

    2025年8月23日
    14400
  • 如何检查运行中的FTP进程?

    在Linux系统中关闭FTP服务是提升服务器安全性的重要操作,尤其考虑到FTP协议使用明文传输敏感数据(如用户名、密码),存在被嗅探的风险,以下是详细操作指南,涵盖主流Linux发行版(Ubuntu/Debian/CentOS)和常见FTP服务软件(vsftpd/proftpd/pure-ftpd):确认当前运……

    2025年7月17日
    16000

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信