2016-12-04 1 views
2

Ich habe versucht, Befehlsausgabe in einem Befehl, aber ich konnte es nicht bekommen. Wenn ich manuell starte, wird das normale Ergebnis im Bildschirm angezeigt.Erhalten Ausgabe auf dem Bildschirm von Linux-Befehl

[[email protected] ~]# dnsdist -e "topQueries()" 1 Rest 0 100.0%

Ich habe versucht, mit dnsdist -e 'topQueries() 2>&1 1> /tmp/abc. Aber /tmp/abc war immer noch leer. Ich glaube nicht screen Befehl kann es lösen. Hat jemand irgendwelche Empfehlungen?

Addition Informationen:

1 Rast 0 100,0%

ist das Ergebnis von topQueries(). '-e' bedeutet, dass ein Befehl in dnsdist ausgeführt wird. Es sieht so aus, als würden wir auf mysql zugreifen, dann rufen wir eine SQL-Anweisung auf.

+0

und Ergebnis wird auf dem Bildschirm gedruckt? –

+0

Ja. Als mein Beispiel, nachdem ich den Befehl manuell ausgeführt habe, sehe ich dieses Ergebnis im Bildschirm. –

+0

Reihenfolge der Umleitung ist wichtig, wie über 'Beispielbefehl>/tmp/abc 2> & 1' – rkosegi

Antwort

1

Wie rkosegi commented, Reihenfolge ist wichtig. Wenn Sie laufen:

examplecommand 2>&1 1> /tmp/abc 

Es nimmt die stderr-Ausgabe und sendet sie an wo stdout derzeit gehen und dann sendet stdout in die Datei.

Sie sollten statt:

examplecommand 1> /tmp/abc 2>&1 

die stdout in die Datei sendet, sendet dann stderr an wo stdout derzeit geht, nämlich die Datei.

+0

Es ist nicht Arbeit :(Beide/tmp/abc und Bildschirm noch leerer Wert. –

+0

Anscheinend konnte ich nicht dieses Ergebnis von beiden stdout und stderr –

+1

Sie haben gerade ein '>' dort. – giusti

0

Um stderr und stdout beide zu haben Bildschirm und in einer Datei/tmp/abc können Sie Tee verwenden.

$cat a.sh 
echo "stderr" >&2 
echo "stdout" 

./a.sh 2>&1 | tee /tmp/abc 
stderr 
stdout 

$ cat /tmp/abc 
stderr 
stdout 
Verwandte Themen