首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Linux Shell 監控 Java 高 CPU 線程與 PowerShell Whois 查詢工具

     編輯:Java 相關知識

第一部分:Shell 腳本監控 Java 進程高 CPU

腳本功能

  • 每秒採樣 CPU 空閒率,連續低於 20% 觸發診斷。
  • 找出 CPU 佔用 > 80% 的 Java 進程 PID。
  • 對每個 PID 連續 10 次導出線程棧、GC 統計、堆信息。
  • 最多觸發 3 次後發送郵件告警並退出。

核心代碼片段

#!/bin/bash
cpu_idle=$(top -b -d 1 -n 2 | grep Cpu | awk 'NR>1{print $5}' | cut -f1 -d.)
if [ $cpu_idle -le 20 ]; then
    pids=$(top -b -d 1 -n 1 | grep java | awk '{if($9 > 80) print $1}')
    for pid in $pids; do
        for ((a=1; a<10; a++)); do
            date=$(date +%Y%m%d%H%M)
            sh showstack.sh -c 30 -p $pid > log/stack_${pid}_${date}.log
            jstat -gcutil $pid > log/gc_${pid}_${date}.log
        done
        jmap -heap $pid > log/heap_${pid}_${date}.log
    done
fi

依賴工具:top, jstack(jcmd), jstat, jmap, showstack.sh (GitHub: oldratlee/useful-shells)。

第二部分:PowerShell 多域名後綴 Whois 查詢函數

功能特性

  • 支持 100+ 頂級域後綴自動匹配對應 Whois 服務器。
  • 支持 IP 反查(自動轉向 whois.arin.net)。
  • 支持遞歸跟隨引用服務器(-NoForward 禁用)。
  • 內置隨機選擇鏡像服務器,避免單點限流。

使用示例

# 域名查詢
Get-Whois dnspod.com
# 僅顯示權威結果,不跟隨轉發
Get-Whois jd.com -NoForward
# IP 查詢指定服務器
Get-Whois n 128.11.5.98 -Server whois.arin.net

核心邏輯

  1. 根據查詢參數(域名/IP)確定初始 Whois 服務器。
  2. TCP 連接 43 端口發送查詢字符串。
  3. 讀取響應,正則提取 Whois Server: 字段。
  4. 若存在且未禁用轉發,遞歸查詢新服務器,最多 3 次。
  5. 返回最終結果,若轉發結果過少則回退顯示原始結果。

部署建議

  • Shell 腳本放入 /opt/scripts/,配置 crontab 定時運行或作為系統服務。
  • PowerShell 函數加入 $PROFILE 或模塊文件 Whois.psm1 自動加載。
  • 生產環境建議增加日誌輪轉、告警去重、敏感信息脫敏。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved