2016-08-24 6 views
2

Ich habe versucht, Standardfehler in eine Datei mit eingeschränkten Berechtigungen umzuleiten. Das ist, was ich tat:Wie wird in einer Prozesssubstitution umgeleitet?

exec 2> >(umask 077; exec > stderr.log) 

Die Idee Standardfehler auf ein Verfahren umgeleitet wurde, die umask ändern und noch einmal in die Protokolldatei umleiten.

Aber es funktioniert nicht. Der Befehl hält an und endet mit 141 nach Drücken von zurück.

Das Bash-Handbuch definiert keine "Prozessliste" in manual.

Kann jemand den Fehler erklären?

Antwort

3

Sie sollten cat innerhalb Teilprozess, um die Daten kommen in stdin des Prozesses innerhalb (...) die Stderr tatsächlich von Eltern-Prozess ist, zu schreiben:

exec 2> >(umask 077; cat > stderr.log) 

Prozess Substitution die Ausgabe eines Prozesses speist (oder Prozesse) in die Standard eines anderen Prozesses. Nur indem Sie exec > stderr.log tun, leiten Sie bloß stdout des Unterprozesses in eine Datei um, aber Sie schreiben nichts wirklich zu stdout >(...)

+0

ich suche nicht nach einer Alternative. Ich möchte verstehen, was mit meinem Befehl nicht stimmt. – ceving

+0

Überprüfen Sie meine aktualisierte Antwort. Ich habe versucht, es jetzt zu erklären. – anubhava

Verwandte Themen