Domanda

potrebbe essere un problema semplice, ma sto eseguendo il comando Centos 5.4 a distanza.Voglio reindirizzare l'output di un semplice file Java, diciamo che loop per stampare centomila numeri in console in un file di testo.La cosa è, i ha per utilizzare il comando 'schermata' per poterlo eseguire in background anche se perdo la mia sessione con il computer remoto e questo comando non scrive al file desiderato.

Ho provato il metodo screen java MyClass >& log.txt anche screen java MyClass > log.txt ma non scrive al file.Perché questo sta succedendo ed è lì qualche soluzione?

È stato utile?

Soluzione

Puoi farlo con il comando nohup.Ecco un esempio.

$ 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
.

<< Shell Relunch >>

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

Il motivo per cui questo non funziona con screen è perché screen non interpreta i tuoi argomenti come lo fa la shell.Se dovessi farlo con screen, avrebbe funzionato:

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

Altri suggerimenti

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"
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top