Durch Ausführen von „tee“ zum Umleiten der Datei wird ein Bash-Prozess erstellt

Durch Ausführen von „tee“ zum Umleiten der Datei wird ein Bash-Prozess erstellt

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)

verwandte Informationen