O $ RUN é um comando embutido para executar?

1

Eu tenho um script .sh que inicia um serviço java meu (eu não escrevi isso).

Alguém pode explicar como isso realmente é executado?

start() {
 ..
 ..

   # setup classpath
  . $ROOT/bin/_cp.sh

  RUN="java -Dlog.root=$VAR $JOPTS $CP $MAIN -v"

  # start
  $RUN 2>>$OUT_FILE >>$OUT_FILE &

}

Quando o start é chamado, ele constrói as variáveis para as opções e o caminho da classe (coisas do java), mas quando essa linha faz?

$RUN 2>>$OUT_FILE >>$OUT_FILE &

O $ RUN é algo embutido?

Eu quero converter isso em um script iniciante, e o upstart requer que eu use exec como:

script
        [ "$enabled" = "1" ] || [ "$force_start" = "1" ] || exit 0
        # Setup Serviio specific properties
        JAVA_OPTS="-Djava.net.preferIPv4Stack=true -Djava.awt.headless=true -Dderby.system.home=$SERVIIO_HOME/library -Dserviio.home=$SERVIIO_HOME -Xmx512M -Xms20M -XX:+UseParNewGC -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=20"
        # construct classpath
        cd $SERVIIO_HOME
        CLASSPATH="config"
        for i in lib/*.jar; do
                CLASSPATH="$CLASSPATH:$i"
        done
        # write to syslog - for debugging
        # logger -t $0 -- "starting: /usr/bin/java $JAVA_OPTS -classpath $CLASSPATH org.serviio.MediaServer"
        exec /usr/bin/java $JAVA_OPTS -classpath $CLASSPATH org.serviio.MediaServer
end script
    
por Blankman 19.02.2013 / 04:03

1 resposta

3

Como Seth mencionou, $ RUN é definido anteriormente no script com a linha RUN="java ..." . A linha é executada e a saída padrão e as mensagens de erro padrão são anexadas ao $OUTFILE , que presumivelmente também é definido no script (ou especificado pelo parâmetro da linha de comando).

2>>file

é o código bash para redirecionar o fluxo stderr. Por padrão, stdout e stderr são ambos enviados para o tty (seu prompt bash) onde são exibidos, mas você pode redirecionar a saída. Por padrão, usar >> file só redirecionará a saída padrão (material que é impresso usando echo - essa é a forma usual de saída para a maioria dos programas. No entanto, quando os programas desejam exibir um erro, isso ocorre fluxo de saída de erro padrão, que (por padrão) é impresso no terminal, e NÃO é redirecionado usando >> Para redirecionar o fluxo de erro também (talvez para o log de erros) você usa 2>> file , que irá anexá-lo a% Curiosamente, o mesmo efeito que no script pode ser alcançado usando file , que é a abreviação de "redirecionar stdout e stderr".

    
por Aaron D 19.02.2013 / 07:07