How to view the output of a running process in another bash session?
capture pts output
ps -ef |grep sshd
grep whatever process you want to attach
strace -e write=1,2 -e trace=write -p xxxx
Here is more complete example:
strace -e trace=write -s1000 -fp 18386 2>&1 \
| grep --line-buffered -o '".\+[^"]"' \
| grep --line-buffered -o '[^"]\+[^"]' \
| while read -r line; do
printf "%b" $line;
done
To avoid that, lets simplify the whole process, so lets define the following formatter alias:
alias format-strace='grep --line-buffered -o '\''".\+[^"]"'\'' | grep --line-buffered -o '\''[^"]*[^"]'\'' | while read -r line; do printf "%b" $line; done | tr "\r\n" "\275\276" | tr -d "[:cntrl:]" | tr "\275\276" "\r\n"'
where:
grep -o '".\+[^"]"'
- select double-quoted string with quotes
grep -o '[^"]*[^"]'
- select text within the double quotes
while read -r line
- store each line into $line
and do
some action (help read
)
printf "%b" $line
- print line by expanding backslash escape sequences
tr "\r\n" "\275\276"
- temporarily replace \r\n
into \200\201
tr -d "[:cntrl:]"
- remove all control characters
tr "\275\276" "\r\n"
- restore new line endings
then the complete example to trace some command (e.g. php
) can look like:
strace -e trace=read,write,recvfrom,sendto -s 1000 -fp $(pgrep -n php) 2>&1 | format-strace
Nenhum comentário:
Postar um comentário