rtkit:「監督」しているスレッドを一覧表示しますか?

rtkit:「監督」しているスレッドを一覧表示しますか?

rtkitたとえば、syslogにスパムを送信するため、「監督」するスレッドを知っているようです。

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

しかし、この邪悪で小さなことは、「監督される」プロセス/スレッドをリストする方法を提供していないようです。rtkitctlデーモンとスレッドを「リセット」するか(何を意味するか)、終了または再開するオプションがあります。少なくともDebianでは他のユーティリティは見えません。おそらく隠されたインターフェイスがあるか、DBusディストリビューションに含まれていないいくつかのユーティリティがあるかもしれません。

それでは、これらの「監督される」スレッドをリストする方法はありますかps?それとも、これは全体dbus/systemd生態系のもう一つの不透明な側面でしょうか?

答え1

RTKitは、この情報を取得するためのDBusインターフェースを提供します。以下は、以下を示すシェルスクリプトです。

#!/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"

関連情報