2012-02-27 118 views
7

簡単な問題かもしれませんが、CentOS 5.4コマンドラインをリモートで実行しています。私は、単純なJavaファイルの出力をリダイレクトしたい、コンソールで何十万もの数字をテキストファイルに出力するループを言うことができる。問題は、私はを持っていて、リモートコンピュータとのセッションを失ってもこのコマンドをバックグラウンドで実行できるようにするには 'screen'コマンドを使い、このコマンドは目的のファイルに書き込みません。"screen"コマンドによる出力リダイレクト

screen java MyClass >& log.txtでもscreen java MyClass > log.txtの方法を試しましたが、ファイルに書き込まれません。なぜこれが起こっていて、何か解決策がありますか?

ありがとうございます!

+2

はなぜ 'nohup'代わりに使用していませんか? – mpontillo

+0

私はそれを行うなら、私はまだ他のコマンドを実行することができますか? – javaCity

+2

はあなた次第です。あなたがバックグラウンドでそれを実行する場合は、はい。 – mpontillo

答えて

15

これはnohupコマンドで実行できます。ここに例があります。

$ 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 

< <リニューアルシェル>>

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

シェルが行うようscreenがあなたの引数を解釈することはありませんので、これはscreenでは動作しない理由があります。あなたはscreenでこれを行うとしたら、それが働いているだろう:

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

ありがとうございます。 'screen/bin/bash -c 'java Foo> foo.txt''は私にとって初めてのものでした! – javaCity

1

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" 
関連する問題