2014-06-05 14 views
8

Offenbar habe ich in einer tcsh-Shell etwas Seltsames/Falsches gemacht, und jetzt, wenn ich eine Anwendung im Hintergrund starte, die auf stdout druckt, wird die Anwendung angehalten (gestoppt). Merkwürdiges Ding ist, geschieht dieses Verhalten nur in diesem Terminal; Wenn ich dasselbe in einem anderen Terminal mache, läuft die Anwendung einfach im Hintergrund weiter und druckt die Ausgabe an das Terminal.Warum bekomme ich "Suspended (tty output)" in einem Terminal, aber nicht in anderen?

Im "kaputten" Terminal muss ich die gesperrte Anwendung wieder in den Vordergrund stellen (mit fg), damit es weiter geht.

Beispiel:

thehost:/tmp/test1(277)> ls -l & 
[3] 1454 
thehost:/tmp/test1(278)> 
[3] + Suspended (tty output)  ls --color=auto -l 
thehost:/tmp/test1(278)> fg 
ls --color=auto -l 
total 0 
thehost:/tmp/test1(279)> 

Same-Befehl in einem anderen Terminal ausgeführt funktioniert:

thehost:/tmp/test1(8)> ls -l &             
[1] 2280                   
thehost:/tmp/test1(9)> total 0             

[1] Done       ls --color=auto -l       
thehost:/tmp/test1(9)>               

ein Bash in dem betroffenen Terminal starten löst nicht das entweder:

thehost:/tmp/test1(280)> bash 
[email protected]:/tmp/test1$ ls -l & 
[1] 2263 
[email protected]:/tmp/test1$ 

[1]+ Stopped     ls --color=auto -l 
[email protected]:/tmp/test1$ fg 
ls --color=auto -l 
total 0 
[email protected]:/tmp/test1$ 

Das Aufrufen einer neuen Login-Shell (mit su - oliver) löst dies auch nicht.

Also: was habe ich in diesem Terminal, um dieses Verhalten zu bekommen, und was kann ich tun, um das normale Verhalten zurück zu bekommen? Es ist nicht wirklich ein wichtiges Problem (ich könnte das Terminal schließen und ein neues öffnen), aber ich bin neugierig :-)

Happens auf Linux RHEL 6.4 64bit, mit KDE 4.11.5 und Konsole 2.11.3, und tcsh 6.17.00.

Antwort

7

Dies wird es beheben:

stty -tostop 

Aus der Manpage:

tostop (-tostop)

Senden Hintergrund Ausgang (nicht senden) SIGTTOU für. Dies führt dazu, dass Hintergrundjobs gestoppt werden, wenn sie eine Terminalausgabe versuchen.

Diese tostop ist normalerweise die Standardeinstellung, da es in der Regel nicht wünschenswert ist, die Ausgabe mehrerer Jobs zu mischen. Die meisten Leute möchten nur, dass der Vordergrundjob auf dem Terminal drucken kann.

Verwandte Themen