sudo bpftrace --include /usr/src/linux/include/linux/sched.h --include /usr/src/linux/include/linux/sched/signal.h --include /usr/src/linux/include/linux/tty.h -e 'BEGIN{@tty[curtask->signal->tty->name] = 1; @tty[""] = 1} u:libc.so.6:write /!@tty[curtask->signal->tty->name]/ {printf("%s[%d] %s ", comm, pid, str(arg1))}' -f json | jq --unbuffered 'select(.type=="printf").data' | sed -r 's/^"(.*) (.*)"$/: /'


- 자신의 커널이 BTF를 지원한다면 주황색은 생략가능 (현재 프로세스의 tty가져올때 쓰는중)

- 초록색은 io loop 방지용으로 넣었는데 개선이 필요함 (get_current_tty대신 구조체에서 바로 가져오는중)

- 파란색은 정제용 (안넣으면 escape sequence들이 확장되서 보기 어려워짐)



write를 그대로 쓰니 결과가 너무 더러워지는거 같아서

다음 주말엔 tty_write kernel function을 tracing해보고 싶은데인자 struct iov_iter를 아직 어떻게 파싱할 수 있을지 모르겠음