Colocando o cursor de volta no prompt do bash depois que um script retorna a saída atrasada

2

Apenas uma questão menor. Estou escrevendo um script simples que inicia e interrompe o Jetty. Quando eu o executo, o script imediatamente coloca meu cursor de volta no prompt do bash. No entanto, como Jetty inicia e grava sua saída de inicialização de volta ao stdout, ele deixa o cursor em uma linha própria (sem um prompt) até que eu digite um comando ou aperte enter. Nitpicking, eu sei, mas eu acho que há uma maneira fácil de evitar isso que estou perdendo.

Aqui está o script:

#!/bin/bash
cd /opt/jetty/jetty-distribution-7.4.5.v20110725/
if [ "$1" = "-stop" ]
then
    java -DSTOP.PORT=8079 -DSTOP.KEY=something -jar start.jar --stop
else
    java -DSTOP.PORT=8079 -DSTOP.KEY=something -jar start.jar &
fi

Aqui está a saída:

[user@machine ~]# jetty
[user@machine ~]# 2011-08-11 14:47:34.818:INFO::jetty-7.4.5.v20110725
2011-08-11 14:47:34.866:INFO::Deployment monitor /opt/jetty/jetty-distribution-7.4.5.v20110725/webapps at interval 1
2011-08-11 14:47:34.878:INFO::Deployment monitor /opt/jetty/jetty-distribution-7.4.5.v20110725/contexts at interval 1
2011-08-11 14:47:34.883:INFO::Deployable added: /opt/jetty/jetty-distribution-7.4.5.v20110725/contexts/javadoc.xml
2011-08-11 14:47:34.934:INFO::started o.e.j.s.h.ContextHandler{/javadoc,file:/opt/jetty/jetty-distribution-7.4.5.v20110725/javadoc}
2011-08-11 14:47:34.935:INFO::Deployable added: /opt/jetty/jetty-distribution-7.4.5.v20110725/contexts/test.xml
2011-08-11 14:47:35.011:INFO::Extract jar:file:/opt/jetty/jetty-distribution-7.4.5.v20110725/webapps/test.war!/ to /tmp/jetty-0.0.0.0-8080-test.war-_-any-/webapp
2011-08-11 14:47:35.645:INFO::started o.e.j.w.WebAppContext{/,file:/tmp/jetty-0.0.0.0-8080-test.war-_-any-/webapp/},/opt/jetty/jetty-distribution-7.4.5.v20110725/webapps/test.war
2011-08-11 14:47:36.127:INFO:org.eclipse.jetty.servlets.TransparentProxy:TransparentProxy @ /javadoc to http://download.eclipse.org/jetty/stable-7/apidocs
2011-08-11 14:47:36.199:INFO::Started [email protected]:8080 STARTING

E o cursor acaba em uma nova linha em branco logo abaixo. Há uma maneira de prevenir isto? Eu sou muito novo para bash scripting, há algo que eu deveria estar fazendo que eu não sou?

    
por B. Striegel 11.08.2011 / 20:52

2 respostas

4

Você não pode evitar isso facilmente - o bash não recebe nenhum sinal quando um processo em segundo plano é gravado no terminal, somente quando ele sai completamente. ( SIGTTOU só é entregue ao processo de escrita, neste caso Java, que não tem nenhum controle sobre quando o prompt é exibido ...)

    
por 11.08.2011 / 21:07
0

Você pode redirecionar a saída para um arquivo para os comandos java

    
por 11.08.2011 / 21:08