编程为何总遇报错?

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

  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

相关推荐

  • Linux系统中如何添加超级用户账号?

    在Linux系统中,超级用户通常指root用户,它拥有系统的最高权限,可以执行任何操作,包括系统管理、软件安装、文件修改等,合理使用超级用户权限对系统安全和稳定性至关重要,直接使用root用户登录存在安全风险,因此最佳实践是创建一个普通用户,并将其添加到sudo组(或wheel组,不同发行版名称不同),使其能够……

    2025年9月28日
    1800
  • Linux系统下,如何通过具体命令正确停止php-fpm服务?

    在Linux系统中停止php-fpm是日常服务器维护中常见的操作,php-fpm(FastCGI Process Manager)作为PHP的FastCGI进程管理器,负责处理PHP请求的执行和响应,停止php-fpm通常有几种方法,具体操作取决于系统的初始化系统(如systemd或SysV init)以及ph……

    2025年8月24日
    3500
  • Linux下如何制作U盘启动盘?

    在Linux系统下制作U盘启动盘是许多用户在安装操作系统、系统维护或数据恢复时需要掌握的技能,无论是为了安装Ubuntu、Fedora等Linux发行版,还是制作Windows启动盘进行系统修复,正确的方法都能确保启动盘的可用性和稳定性,本文将详细介绍几种主流的制作方法,包括命令行工具、图形化工具及多系统启动盘……

    2025年10月3日
    1100
  • 阿里linux如何进入

    终端输入`systemctl start graphical.

    2025年8月19日
    3300
  • Linux环境下如何通过systemd调用与管理系统服务操作?

    systemd是现代Linux发行版中广泛使用的系统和服务管理器,它取代了传统的SysV init和Upstart,提供了并行启动、依赖管理、日志集中、按需启动等强大功能,在Linux系统中调用systemd,通常通过命令行工具、单元文件管理或编程接口实现,本文将详细介绍这些方法,命令行工具:systemctl……

    2025年10月1日
    2100

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信