在Linux中,/proc
文件系统包含了系统及其进程的详细信息。每个线程都有一个在/proc/[进程ID]/task/
目录下的对应子目录。线程的名称可以在相应的comm
文件中找到。
#!/bin/sh
# list_threads_name.sh
echo "<<<START>>>"
# 检查是否提供了进程ID作为参数
if [ "$#" -ne 1 ]; then
echo "Usage: $0 <ProcessID>"
exit 1
fi
process_id=$1
# 检查进程ID目录是否存在
if [ ! -d "/proc/$process_id" ]; then
echo "Process with ID $process_id does not exist."
exit 1
fi
# 列出所有线程的名称
echo "Listing thread names for process ID $process_id:"
for tid_path in /proc/$process_id/task/*; do
tid=$(basename $tid_path)
thread_name=$(cat $tid_path/comm)
echo "Thread ID: $tid, Name: $thread_name"
done
echo "<<<END>>>"