rtkit:列出它正在“监督”的线程?

rtkit:列出它正在“监督”的线程?

rtkit显然知道它正在“监督”哪些线程,因为它会向系统日志发送垃圾邮件,例如

rtkit-daemon[1277]: Supervising 3 threads of 2 processes of 1 users.

然而,这个邪恶的小东西似乎没有提供列出那些“受监督”进程/线程的方法。rtkitctl可以选择终止或重新启动守护进程以及“重置”线程(无论这意味着什么)。至少在 Debian 上,我没有看到任何其他实用程序。也许有隐藏的DBus接口,或者发行版没有打包一些实用程序。

那么,有没有ps办法列出那些“受监督”的线程,或者这只是整个dbus/systemd生态系统的另一个不透明的方面?

答案1

RTKit 提供了一个 DBus 接口来检索此信息。这是一个 shell 脚本,演示了:

#!/bin/bash

# Get the list of processes managed by rtkit
processes=$(dbus-send --system --dest=org.freedesktop.RealtimeKit1 --print-reply /org/freedesktop/RealtimeKit1 org.freedesktop.RealtimeKit1.GetManagedProcesses | awk '/array/ {flag=1; next} flag')

# Loop through each process and extract the process ID and thread count
while read -r line; do
    if [[ $line =~ uint32\ ([0-9]+) ]]; then
        pid="${BASH_REMATCH[1]}"
    elif [[ $line =~ uint32\ ([0-9]+) ]]; then
        threads="${BASH_REMATCH[1]}"
        echo "Process ID: $pid, Supervised Threads: $threads"
    fi
done <<< "$processes"

相关内容