2014-06-05 5 views
8

Apparentemente ho fatto qualcosa di strano/sbagliato in una shell tcsh e ora ogni volta che avvio un'applicazione in background che stampa sullo stdout dell'applicazione è sospesa (interrotta). La cosa strana è che questo comportamento accade solo in questo terminale; se faccio lo stesso in un altro terminale, l'applicazione continua a funzionare in background e stampa l'output sul terminale.perché ottengo "Sospeso (output tty)" in un terminale ma non in altri?

Nel terminale "interrotto" devo mettere di nuovo in sospeso l'applicazione sospesa (con fg) per continuare.

Esempio:

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)> 

stesso comando eseguito in un altro terminale funziona bene:

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

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

Avvio di un bash nel terminale interessata non risolve questa operazione:

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$ 

Ottenere una nuova shell di login (con su - oliver) non risolve neanche questo.

Quindi: che cosa ho fatto in questo terminale per ottenere questo comportamento, e cosa posso fare per tornare al comportamento normale? Non è davvero un problema importante (potrei chiudere il terminale e aprirne uno nuovo), ma sono curioso :-)

Succede su Linux RHEL 6.4 a 64 bit, con KDE 4.11.5 e Konsole 2.11.3, e tcsh 6.17.00.

risposta

7

Questo sarà risolvere il problema:

stty -tostop 

Dalla pagina man:

tostop (-tostop)

Invia (non inviare) SIGTTOU per l'uscita di sfondo. Ciò causa l'interruzione dei lavori in background se tentano l'output del terminale.

Questo tostop normalmente è l'impostazione di default, come di solito è indesiderabile per miscelare l'uscita di più posti di lavoro. Quindi molte persone vogliono solo che il lavoro in primo piano sia in grado di stampare sul terminale.

Problemi correlati