29 lines
1.0 KiB
Bash
Executable File
29 lines
1.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# ollie:parallel read
|
|
# description: List background (detached) processes for this session. Shows PID, command, start time, and status.
|
|
# Args: (none)
|
|
|
|
set -euo pipefail
|
|
|
|
session="${OLLIE_SESSION_ID:?OLLIE_SESSION_ID not set}"
|
|
|
|
output=$(dbus-send --session --dest=org.ollie.SessionManager --type=method_call --print-reply \
|
|
/org/ollie/SessionManager org.ollie.SessionManager.ListDetached \
|
|
"string:$session" 2>&1)
|
|
|
|
# Parse the D-Bus array response
|
|
entries=$(echo "$output" | grep 'string "' | sed 's/.*string "//;s/"$//' || true)
|
|
|
|
if [ -z "$entries" ]; then
|
|
echo "No detached processes."
|
|
exit 0
|
|
fi
|
|
|
|
printf '%-8s %-10s %-40s %s\n' 'PID' 'STATUS' 'COMMAND' 'STARTED'
|
|
printf '%-8s %-10s %-40s %s\n' '---' '------' '-------' '-------'
|
|
while IFS=$'\t' read -r pid cmd started status; do
|
|
# Convert unix timestamp to human-readable
|
|
started_fmt=$(date -d "@$started" '+%H:%M:%S' 2>/dev/null || echo "$started")
|
|
printf '%-8s %-10s %-40s %s\n' "$pid" "$status" "${cmd:0:40}" "$started_fmt"
|
|
done <<< "$entries"
|