编程为何总遇报错?

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

  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

相关推荐

  • 如何查看 usr/bin 和 usr/local/bin 路径?

    在Linux系统中,查看已安装软件是系统管理、故障排查和环境维护的基础操作,不同发行版使用不同的包管理工具,以下是专业、全面且已验证的查看方法,涵盖命令行与图形界面方案:通过包管理工具查询(推荐)Debian/Ubuntu(APT系)查看所有已安装软件:dpkg –list或精简显示:apt list –i……

    3天前
    800
  • Linux下JDK安装遇难题?

    准备工作检查现有Java环境终端执行:java -version若返回版本信息(如OpenJDK),需决定是否保留或卸载旧版本,卸载旧版本(可选)对于基于Debian的系统(如Ubuntu):sudo apt remove openjdk-* # 移除所有OpenJDK基于RPM的系统(如CentOS):sud……

    2025年7月12日
    1300
  • Windows用户如何安全体验Linux?

    虚拟机安装(推荐新手)工具准备虚拟机软件:VirtualBox(免费)或 VMware Workstation Player(个人免费)Linux镜像:Ubuntu(推荐)或其他发行版步骤安装虚拟机软件 下载安装包,全程默认设置即可,创建虚拟机打开软件 → 点击”新建” → 输入虚拟机名称(如Ubuntu……

    2025年7月9日
    1100
  • Linux读取文件夹失败怎么办?

    确认目录存在与权限检查目录是否存在:使用ls命令查看当前目录内容,确认in文件夹存在:ls -l # 列出当前目录所有内容ls -d */ | grep in # 筛选目录名包含"in"的项验证访问权限:执行ls -ld in查看权限(示例输出):drwxr-xr-x 2 user grou……

    2025年6月16日
    1000
  • PHP-FPM服务异常如何重启?

    在Linux系统中重启PHP服务是常见的运维操作,通常发生在修改PHP配置(如php.ini)或更新代码后需要重新加载时,具体方法取决于PHP的运行方式和系统服务管理工具,以下是详细指南:确认PHP运行方式重启前需明确PHP的工作模式:PHP-FPM模式(主流):Nginx或Apache通过FastCGI与PH……

    4天前
    600

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信