replace jdk

abc0012383 / 2024-09-25 / 原文

#!/bin/bash

java_processes=$(ps -ef | grep java | grep -v grep)


running_jdk_paths=$(echo "$java_processes" | grep -oP '/.*?/bin/java' | sort -u)


jdk_installations=$(find /path/to/jdk -name 'jdk*')


idle_jdk_paths=()
for jdk in $jdk_installations; do
    if ! echo "$running_jdk_paths" | grep -q "$jdk/bin/java"; then
        idle_jdk_paths+=("$jdk")
    fi
done


if [[ ${#idle_jdk_paths[@]} -eq 0 ]]; then
    echo "All JDKs are in use. No idle JDKs found."
    exit 1
fi


echo "Idle JDK paths: ${idle_jdk_paths[@]}"


read -p "Please enter the JDK download URL: " jdk_download_url


wget -O /tmp/jdk_download.tar.gz "$jdk_download_url"


tar -xzvf /tmp/jdk_download.tar.gz -C /path/to/jdk/


for idle_jdk in "${idle_jdk_paths[@]}"; do
    if [[ -n "$idle_jdk" ]]; then
        mv "$idle_jdk" "${idle_jdk}_old"
        echo "Replaced idle JDK at $idle_jdk"
    fi
done

echo "Idle JDK replaced with the downloaded JDK."