monitor_ptp.sh 1003 B

123456789101112131415161718192021222324252627282930313233343536
  1. #!/bin/bash
  2. # 设置阈值(百分比,不带%号)
  3. THRESHOLD=10
  4. # 启动 ptpd2 的命令(请根据实际路径修改)
  5. # ART_CMD="/usr/sbin/ptpd2"
  6. # 检查周期(秒)
  7. INTERVAL=10
  8. while true; do
  9. # 获取 ptpd2 的 PID
  10. PID=$(ps | grep ptpd2 | grep -v "grep" | awk '{print $1}')
  11. if [ -n "$PID" ]; then
  12. # 获取 ptpd2 的实时 CPU 使用率(百分比)
  13. CPU=$(top -b -n1 | grep ptpd2 |grep -v "grep" | awk '{print $8}')
  14. CPU_INT=${CPU%.*} # 去掉小数部分用于比较
  15. if [[ "$CPU_INT" =~ ^[0-9]+$ ]] && (( CPU_INT > THRESHOLD )); then
  16. echo "[`date`] ptpd2 CPU 使用率 ${CPU}% 超过阈值 ${THRESHOLD}%,正在重启..."
  17. kill -9 ${PID}
  18. # sleep 1
  19. # $START_CMD &
  20. echo "[`date`] ptpd2 已重启"
  21. fi
  22. # else
  23. # echo "[`date`] ptpd2 未运行,尝试启动..."
  24. # $START_CMD &
  25. # echo "[`date`] ptpd2 启动完成"
  26. fi
  27. sleep $INTERVAL
  28. done