
das Skript so:
exec &> >(tee -a ./test_tee.log)
ping $1
Wenn das Skript in Bash 7603 ausgeführt wird, erstellt die Exec-Zeile einen Prozess mit dem Namen 13069. Etwa wie folgt:
root 13068 7603 0 17:15 pts/5 00:00:00 bash
root 13069 13068 0 17:15 pts/5 00:00:00 bash // where does it come from
root 13070 13068 0 17:15 pts/5 00:00:00 ping google.com
root 13071 13069 0 17:15 pts/5 00:00:00 tee -a ./test_tee.log
Ich führe das Skript in pid 7603 bash aus, pid 13068 ist das Skript, warum gibt es pid 13069
Antwort1
Der zusätzliche Prozess ist eine Subshell, die ausführt tee -a ./test_tee.log
. Bestätigen Sie dies mit pstree -p | grep -B 1 '[t]ee'
.
Sie können dieser Subshell sagen,ersetzensich mit tee
. Ändern Sie die entsprechende Zeile in:
exec &> >(exec tee -a ./test_tee.log)