Pregunta

Podría ser un problema simple, pero estoy corriendo CentOS 5.4 línea de comandos de forma remota.Quiero redireccionar la salida de un simple archivo Java, que permite decir bucle para imprimir cientos de miles de números en la consola a un archivo de texto.La cosa es que, yo han el uso de la 'pantalla' comando para ser capaz de ejecutar en segundo plano incluso si pierdo mi sesión con el equipo remoto y este comando no se escribe en el archivo deseado.

He probado el método de screen java MyClass >& log.txt también screen java MyClass > log.txt pero no escribir en el archivo.¿Por qué sucede esto y si hay alguna solución?

¿Fue útil?

Solución

Usted puede hacer esto con la nohup comando.He aquí un ejemplo.

$ cat Foo.java 
public class Foo {
    public static void main(String[] args) throws InterruptedException
    {
        for(int i = 0 ; i < 1000 ; i++)
        {
            System.out.println(i);
            Thread.sleep(1000);
        }
    }
}

$ javac Foo.java
$ nohup java Foo > foo.txt &
[3] 29542
$ cat foo.txt 
0
1
2
3
4
5
$ exit

<< relanzamiento de la shell >>

$ cat foo.txt 
0
1
...
29
30

La razón de que esto no funciona con screen es porque screen no interpretar sus argumentos como que el shell no.Si usted fuera a hacer esto con screen, que habría trabajado:

screen /bin/bash -c 'java Foo > foo.txt'

Otros consejos

sample_script.sh

#!/bin/bash
#start screen in detached mode with session name 'default_session' 
screen -dmS "default_session"
#redirect output to abc.log 
screen -S default_session -X stuff "script -f /tmp/abc.log\n"
#execute your command
screen -S default_session -X stuff "your command goes here...\n"

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top