编程为何总遇报错?

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

  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系统日志主要位于/var/log目录,可使用journalctl、grep、awk等工具筛选导出,最佳实践包括:明确导出范围与时间、利用重定向或rsync备份、注意文件权限、管理日志轮转并确保存储安全。

    2025年7月21日
    2300
  • CDLinux如何从U盘启动?操作步骤详解是什么?

    将CDLinux系统部署到U盘并实现从U盘启动,是进行系统维护、数据救援或便携式办公的常用方法,CDLinux作为一款轻量级的Linux发行版,体积小、功能丰富,特别适合存储在U盘随身携带,以下是详细的操作步骤,涵盖准备、制作启动U盘、BIOS设置及启动后操作全流程,准备工作在开始前,需确保以下物品就绪:CDL……

    2025年8月23日
    1200
  • linux如何切换root用户登录

    Linux终端中输入su -或sudo -i,然后输入root密码,即可

    2025年8月16日
    1200
  • linux 如何选择内核

    Linux 中选择内核可考虑硬件兼容性、功能需求、稳定性及社区支持等因素,综合

    2025年8月18日
    1300
  • 如何查看SELinux状态?

    查看 SELinux 运行状态使用 sestatus 命令 sestatus输出关键信息解读:SELinux status:enabled 表示已启用,disabled 表示已禁用,Current mode:enforcing:强制模式(拒绝违规操作并记录日志),permissive:宽容模式(仅记录日志,不拒……

    2025年6月18日
    3700

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信