【问题标题】:Java Jar running on remote ubuntu server在远程 ubuntu 服务器上运行的 Java Jar
【发布时间】:2012-03-21 04:37:33
【问题描述】:

我正在使用打包的 jar 在远程服务器上运行服务,问题是当我结束 ssh 会话时,它也会终止进程,包括我需要的服务。

大约一年前我用一个 cron 脚本玩过这个,但没有运气,任何指针都将不胜感激。

刘易斯

【问题讨论】:

    标签: java bash ubuntu jar cron


    【解决方案1】:

    您需要使用nohup 命令,这样可以防止会话结束时进程挂起。

    nohup java -jar myjar.jar
    

    只是想我会添加这个,以回应 Marvin Pinto 所说的话。您还可以将控制台输出发送到文件,如下所示:

    nohup java -jar myjar.jar >> logfile.log 2>&1
    

    【讨论】:

    • 我不确定这些差异,但我最终使用了java -jar myjar.jar 2>&1 > log.out &
    • 如果您在命令前不使用“nohup”,即使您添加了“&”以使其在后台运行,进程仍会在您结束会话时挂起。
    【解决方案2】:

    可能需要更多细节,但总的来说,我认为您需要查看 nohup 或守护进程以将其与父 shell 进程分离。

    【讨论】:

      【解决方案3】:

      当我需要在远程机器上运行类似的长时间运行的操作时,我通常使用screen 会话。

      每当我登录或退出服务器时,加入或分离会话变得很容易。额外的好处是它会保存所有的 stdout/stderr 输出,以备您返回时使用。

      【讨论】: