35 lines
902 B
Bash
Executable File
35 lines
902 B
Bash
Executable File
#!/usr/bin/env bash
|
|
# ollie:parallel read
|
|
# args_json: {"type":"object","required":["pid"],"properties":{"pid":{"type":"string","description":"Process PID"}}}
|
|
# ollie:prompt
|
|
# ## process_output
|
|
#
|
|
# Read output from a detached background process (last 64KB ring buffer).
|
|
#
|
|
# ```
|
|
# process_output(pid="12345")
|
|
# ```
|
|
# ollie:end
|
|
|
|
set -euo pipefail
|
|
|
|
source "${OLLIE_TOOLS_PATH:-$(dirname "$0")}/_lib/args.sh"
|
|
|
|
pid=$(arg_require "pid")
|
|
session="${OLLIE_SESSION_ID:?OLLIE_SESSION_ID not set}"
|
|
|
|
# Find agent (use first agent in session)
|
|
agent=$(ollie-9p ls "session/$session/agent" 2>/dev/null | grep -v '^new$' | head -1)
|
|
[ -z "$agent" ] && { echo "error: no agent in session" >&2; exit 1; }
|
|
|
|
result=$(ollie-9p read "session/$session/agent/$agent/proc/$pid" 2>&1) || {
|
|
echo "(no output captured yet)"
|
|
exit 0
|
|
}
|
|
|
|
if [ -z "$result" ]; then
|
|
echo "(no output captured yet)"
|
|
else
|
|
echo "$result"
|
|
fi
|