Question

Peut-être un problème simple, mais j'exécute à distance la ligne de commande CentOS 5.4. Je veux rediriger la sortie d'un fichier Java simple, disons Loop pour imprimer cent mille numéros dans la console vers un fichier texte. Le truc, c'est que je ont Pour utiliser la commande 'écran' pour pouvoir l'exécuter en arrière-plan même si je perds ma session avec l'ordinateur distant et cette commande n'écrit pas dans le fichier souhaité.

J'ai essayé la méthode screen java MyClass >& log.txt aussi screen java MyClass > log.txt mais il n'écrit pas dans le fichier. Pourquoi cela se produit-il et y a-t-il une solution?

Était-ce utile?

La solution

Vous pouvez le faire avec le nohup commande. Voici un exemple.

$ 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

<< RELATION Shell >>

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

La raison pour laquelle cela ne fonctionne pas screen est parce que screen n'interpréte pas vos arguments comme le fait le shell. Si tu devais faire ça avec screen, ça aurait fonctionné:

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

Autres conseils

samptample_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"
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top