「画面」コマンドでの出力リダイレクト
-
13-11-2019 - |
質問
は単純な問題かもしれませんが、私はCentOS 5.4コマンドラインをリモートで実行しています。シンプルなJavaファイルの出力をリダイレクトしたい場合は、コンソールで数十万番号をテキストファイルに印刷するようにループと言うことができます。これは、リモートコンピュータとのセッションを緩めてもこのコマンドが目的のファイルに書き込まれていなくても、[画面]コマンドを使用できるようにするには、[Screen]コマンドを使用するには、[em>があります。
メソッドscreen java MyClass >& log.txt
もscreen 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"
. 所属していません StackOverflow