基础命令行工具(实时监控)
-
top
/htop
- 功能:动态查看进程资源占用(CPU、内存、PID等)。
- 操作示例:
top # 默认视图 htop # 增强版(需安装:`sudo apt install htop`)
- 关键交互命令:
P
:按CPU排序M
:按内存排序k
:结束指定PID进程
-
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:可视化仪表盘
- 优势:实时报警、历史数据分析、集群监控支持。
安全与最佳实践
- 最小权限原则
- 监控脚本/工具使用低权限用户运行(如
www-data
)。
- 监控脚本/工具使用低权限用户运行(如
- 日志管理
- 使用
logrotate
分割日志,避免磁盘占满。
- 使用
- 报警机制
- 集成邮件/钉钉告警(如
mailx
或curl
调用Webhook)。
- 集成邮件/钉钉告警(如
- 审计跟踪
- 通过
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