コンソールから切れたプロセスを標準出力につなげなおす - 絶品ゆどうふのタレ に、gdbを使って稼働中のプロセスの標準出力、標準エラー出力を繋ぎ直す話が載っていた。
.bash_profileからscreenを起動しているので、ここに書かれた事態に陥ることはまず無いのだが、記憶するためにシェルスクリプトにしておく。
#!/bin/bash usage(){ cat <<-EOF >&2 ; exit $1 Usage: 既存プロセスの標準出力と標準エラー出力を割り当て直す ${0##*/} PID [[-a] OUTFILE] EOF } error(){ echo "$@" >&2 ; exit 1 } pid="$1" test -z "$pid" && usage 0 user=$(ps h p "$pid" o user 2>/dev/null) || error "プロセスが見つからない" test "$USER" = root -o "$USER" = "$user" || error "プロセスオーナーが自分ではない" FLAG=0001 # O_WRONLY out="$2" case "$out" in "") out=/dev/$(ps h p $$ o tty) ;; -a) FLAG=02001 # O_WRONLY | O_APPEND out="$3" test -z "$out" && usage 1 ;; /*) ;; *) out=$PWD/$out ;; esac touch "$out" 2>/dev/null || error "出力先に書けない" gdb -p "$pid" <<EOF p close(1) p open("$out", $FLAG) p close(2) p open("$out", $FLAG) detach quit EOF