【问题标题】:Command stops whenever I log out of my server每当我注销服务器时命令就会停止
【发布时间】:2016-04-22 17:46:44
【问题描述】:

我有一个我编写并编译并上传到服务器的 java 程序(基于文本的无 GUI)。

我使用java -cp myjar.jar mypackage.MyClass 运行它,它开始运行处理包含 20,000,000 多个条目的数据文件并将输出打印到System.out。我已经计算出处理数据需要很长时间,而且我不想让我的笔记本电脑在 10 天的数字运算中打开......

但是,当我退出 shell 时,进程停止。

如何在不停止的情况下执行命令并注销?这叫什么?

我正在使用 Amazon Ubuntu EC2 服务器。我使用带有终端的 Mac OSX 证书登录。服务器似乎正在使用 bash shell。

希望有人可以帮助我! 杰森。

【问题讨论】:

  • 在普通 Linux 上可以由nohup java -cp myjar.jar mypackage.MyClass &完成
  • 谢谢!这真的很好用!我似乎无法对您的回复投赞成票...

标签: java macos bash amazon-ec2 ubuntu-12.04


【解决方案1】:

考虑使用 screen 而不是 nohup。它允许您创建一个即使在您注销/断开连接后仍然存在的虚拟终端。当您重新连接到服务器时,您可以立即跳转到您上次打开的screen 会话。

服务器上的典型工作流程:

  1. 输入screen(您可能需要按空格离开介绍页面)
  2. 输入您希望长期运行的命令(您的 java 程序或操作系统升级)
  3. ctrl a+d 离开屏幕(确保按住ctrl)

要重新进入屏幕,只需使用screen -r,您将看到之前的终端以及您离开时正在运行的所有程序。

【讨论】:

    【解决方案2】:

    你可以使用nohup

    nohup java -cp myjar.jar mypackage.MyClass > yourLogFile.log &
    

    ----->http://ss64.com/bash/nohup.html

    【讨论】:

    • 真是太快了!谢谢。多么巧妙的方法。然后我可以读取输出以查看是否完成。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-23
    相关资源
    最近更新 更多