質問

は単純な問題かもしれませんが、私はCentOS 5.4コマンドラインをリモートで実行しています。シンプルなJavaファイルの出力をリダイレクトしたい場合は、コンソールで数十万番号をテキストファイルに印刷するようにループと言うことができます。これは、リモートコンピュータとのセッションを緩めてもこのコマンドが目的のファイルに書き込まれていなくても、[画面]コマンドを使用できるようにするには、[Screen]コマンドを使用するには、[em>があります。

メソッドscreen java MyClass >& log.txtscreen java MyClass > log.txtを試しましたが、ファイルに書き込みません。これが起こっているのはなぜ解決策はありますか?

役に立ちましたか?

解決

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

他のヒント

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top