以下是一个 Bash 脚本的示例,它会打印出所有正在运行的 jar 文件的绝对路径:
#!/bin/bash
# 获取所有正在运行的 Java 进程
java_processes=$(ps aux | grep java | grep -v grep)
# 遍历每个 Java 进程
while IFS= read -r line; do
# 提取进程 ID
process_id=$(echo "$line" | awk '{print $2}')
# 获取进程的打开文件列表
files=$(lsof -p "$process_id" | grep -E '\.jar$')
# 遍历每个文件
while IFS= read -r file_line; do
# 提取文件路径
file_path=$(echo "$file_line" | awk '{print $9}')
echo "$file_path"
done <<< "$files"
done <<< "$java_processes"
这个脚本首先通过 ps aux | grep java | grep -v grep
命令获取所有正在运行的 Java 进程。然后,它使用 lsof -p <进程ID>
命令获取每个进程的打开文件列表,并使用 grep -E '\.jar$'
过滤出所有以 .jar
结尾的文件。最后,它会逐行打印出每个文件的路径。
请注意,为了运行这个脚本,您需要在系统上安装 lsof
命令。