java - 使用 "screen"命令进行输出重定向

标签 java linux redirect output gnu-screen

可能是个简单的问题,但我正在远程运行 CentOS 5.4 命令行。我想重定向一个简单的 Java 文件的输出,假设循环将控制台中的十万个数字打印到一个文本文件。问题是,我必须使用“screen”命令以便能够在后台运行它,即使我失去了与远程计算机的 session 并且该命令没有写入所需的文件。

我尝试了方法 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

<< 重新启动 shell >>

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

这对 screen 不起作用的原因是因为 screen 不像 shell 那样解释您的参数。如果您使用 screen 执行此操作,它会起作用:

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

关于java - 使用 "screen"命令进行输出重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9460270/

相关文章:

linux - 在 Linux Mint 17.1 上清除 Firefox Developer Edition DNS 缓存

apache - 安全性:使用 htaccess 和 HTTP_USER_AGENT 阻止不良蜘蛛和机器人访问网站

java - 代理对象抛出 NullPointerException

java - 将 SortedList 转换为列表

linux - 用户空间驱动和内核驱动的区别

php - 找不到对象!在 Fuel php 中重定向路由后

php - 如何在 Codeigniter 中重定向和删除 index.php

java - 将自定义依赖项添加到 spring 项目后缺少类

java - 闭包参数 : how to specify generic types for closure parameter in groovy

linux - 查找 Linux 上的通用应用程序