Redirección de la salida con la "pantalla" de comandos
-
13-11-2019 - |
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?
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"