rtkit: "감독" 중인 스레드를 나열합니까?

rtkit: "감독" 중인 스레드를 나열합니까?

rtkit예를 들어 syslog에 스팸을 보내기 때문에 "감독"하는 스레드를 알고 있는 것 같습니다.

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

그러나 이 사악하고 작은 것은 "감독되는" 프로세스/스레드를 나열하는 방법을 제공하지 않는 것 같습니다. rtkitctl데몬과 스레드를 "재설정"하거나 (무엇을 의미하든) 종료하거나 다시 시작하는 옵션이 있습니다. 적어도 데비안에서는 다른 유틸리티가 보이지 않습니다. 아마도 숨겨진 인터페이스가 있거나 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"

관련 정보