【问题标题】:Run a java program even after putty terminal closed即使在 putty 终端关闭后也运行 java 程序
【发布时间】:2018-04-08 07:25:01
【问题描述】:

我使用putty从我的windows机器上获取linux机器终端并运行一个java程序。

Java 类

   try {

        Timer t = new Timer();
        t.scheduleAtFixedRate(new TimerTask() {

            @Override
            public void run() {
                logger.info(new Date()+"...");
                i=i+1;
            }
        }, new Date(), 3000);

        if(i==50){
            t.cancel();
        }

    } catch (Exception e) {
        e.printStackTrace();
    }

这个程序每 3 秒写一行。如果我关闭腻子,它将停止运行。程序结束,它不再在记录器文件中写入任何行。

关闭putty终端后如何在后台运行java程序甚至处于运行状态?

【问题讨论】:

  • 如何从命令行启动程序?
  • 我为我的 maven 项目创建一个 jar 并运行命令 java -jar test.jar
  • nohup java <args>,但是,当然,记录或打印到控制台并没有太大的影响。

标签: java linux multithreading jvm putty


【解决方案1】:

您可以考虑在 linux 上使用 screen 实用程序,该实用程序在您注销会话后会继续运行。

https://www.linode.com/docs/networking/ssh/using-gnu-screen-to-manage-persistent-terminal-sessions

【讨论】:

    【解决方案2】:

    试试nohup 命令:

    nohup java -jar test.jar &
    

    【讨论】:

    • 让我检查一下
    • nohup 到底是做什么的?在我的程序中我使用记录器。所以,nohup 与此相关,因为它创建了一个文件 nohup.out
    • 来自我回答中的附加链接:“nohup 是一个忽略 HUP(挂起)信号的 POSIX 命令。按照惯例,HUP 信号是终端警告相关进程注销的方式。输出如果它尚未被重定向,通常会转到终端转到名为 nohup.out 的文件。”如果您将输出记录到控制台,那么它将打印在 nohup.out 文件中。但是,如果您使用自己的日志文件,则不会有任何变化。
    • 嘿,有一些问题,根据我的程序,它会在 i==50 时终止,但是当我使用 nohup 运行它时,它会继续运行。
    • 请参考link
    猜你喜欢
    • 2018-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-20
    相关资源
    最近更新 更多