编程为何总遇报错?

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

  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内核?开发运维必看

    测试前的核心准备工作环境搭建硬件:推荐物理机(避免虚拟化干扰),备用方案为 KVM 虚拟机(需开启嵌套虚拟化),系统:干净的 Linux 发行版(如 Ubuntu LTS 或 Fedora),预留 20GB 磁盘空间,工具链:安装编译依赖: # Ubuntu/Debiansudo apt install bui……

    2025年7月24日
    11700
  • Linux系统中如何彻底卸载SVN及清除残留配置文件?

    在Linux系统中,卸载Subversion(SVN)通常涉及两个核心步骤:通过包管理器移除已安装的SVN软件包,以及手动清理可能残留的配置文件、数据目录和相关依赖,SVN作为版本控制工具,若不再使用或需要替换为其他工具(如Git),彻底卸载可释放系统资源并避免潜在冲突,以下将分场景详细说明卸载流程,涵盖主流L……

    2025年9月23日
    8400
  • linux下如何重启网络连接网络打印机

    Linux 下,可先执行 sudo service networking restart 重启网络,再通过 C

    2025年8月15日
    10700
  • Linux下如何通过权限设置具体实现文件/目录只读写但不能删除?

    在Linux系统中,实现“只读写但不能删除”文件或目录的核心逻辑在于:文件/目录的删除权限由其父目录的权限控制,而非文件自身的权限,要阻止用户删除文件,需限制其对父目录的写入权限,同时保留对文件本身的读写权限,以下是具体实现方法、原理及操作步骤,涵盖基础权限管理、ACL(访问控制列表)及场景化案例,核心原理:删……

    2025年8月29日
    12200
  • Debian/Ubuntu更新卡住怎么办?

    准备工作(所有方法通用)更新系统终端执行:sudo apt update && sudo apt upgrade -y # Debian/Ubuntusudo dnf update -y # Fedora/RHEL安装依赖sudo apt install -y build-essential l……

    2025年7月25日
    11800

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信