使用"screen"命令输出重定向

jav*_*ity 7 java linux redirect gnu-screen output

可能是一个简单的问题,但我正在远程运行CentOS 5.4命令行.我想重定向一个简单的Java文件的输出,让我们说循环在控制台中打印十万个数字到文本文件.问题是,我必须使用'screen'命令才能在后台运行它,即使我松开与远程计算机的会话,并且此命令不会写入所需的文件.

我试过的方法screen java MyClass >& log.txtscreen java MyClass > log.txt,但它并没有写入文件.为什么会发生这种情况,有什么解决方案吗?

mpo*_*llo 16

您可以使用该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
Run Code Online (Sandbox Code Playgroud)

<<重新启动shell >>

$ cat foo.txt 
0
1
...
29
30
Run Code Online (Sandbox Code Playgroud)

这不起作用的原因screen是因为screen不像shell那样解释你的参数.如果你这样做screen,它会起作用:

screen /bin/bash -c 'java Foo > foo.txt'
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.`screen/bin/bash -c'java Foo> foo.txt'`对我来说是新手! (4认同)