java - 如何在 Linux (Centos 7) shell 上在后台正确运行 Spring Boot Batch 应用程序?

标签 java linux spring-boot centos spring-batch

我必须在 Linux 机器(Centos 7)上运行 Java Spring Boot 应用程序。我正在通过 SSH 连接到 shell。
此应用程序位于 jar 格式化和实现一个批处理应用程序并包含它自己的调度程序。
我必须在远程服务器的后台运行它,以便在我退出 shell 之后它仍然运行。
我已执行此命令以在后台运行我的应用程序:

java -Xms256m -Xmx1024m -jar UpdateInfoBatch-0.0.1-SNAPSHOT.jar &
然后我点击 CTRL+C 在我的键盘上,以便再次获得我的外壳上的键盘提示。
这里是第一个 trange 行为:我再次获得 shell 提示和插入命令的可能性,但如果应用程序记录了它出现在 shell 上的内容。为什么?我希望我的应用程序仍然在后台运行。
无论如何,我现在在我的 shell 中提示这个命令,以检查我的应用程序是否正在运行:
xxx@xxx.yyy.it [~/zzz-import-data-batch]# ps aux | grep java
xxx 23307 15.3 1.6 4871172 418980 pts/0 Sl 10:23 0:22 java -Xms256m -Xmx1024m -jar UpdateInfoBatch-0.0.1-SNAPSHOT.jar
webadmin 23522 0.0 0.0 112812 980 pts/0 S+ 10:25 0:00 grep --color=auto java
是的,我的应用程序似乎正确运行(第一个)。
然后我关闭与我的 shell 的连接,我再次登录它并再次执行上一个命令,但现在我得到了这个:
xxx@xxx.spaccount.it [~/zzz-import-data-batch]# ps aux | grep java
xxx 23919 0.0 0.0 112812 980 分/0 S+ 10:27 0:00 grep --color=auto java
正如您之后看到的那样,我与 shell 断开连接,当我重新登录时,我的批处理应用程序似乎没有运行(实际上我的作业应用程序没有运行)。
怎么了?我错过了什么?什么是在后台运行我的 java jar 批处理应用程序的好方法?

最佳答案

通常你会想要重定向输出,你可以使用 nohup 命令将其生成到后台。如果您不关心捕获标准输出或标准错误,您可以将它们定向到/dev/null

nohup java -Xms256m -Xmx1024m -jar UpdateInfoBatch-0.0.1-SNAPSHOT.jar >/dev/null 2>&1 &

关于java - 如何在 Linux (Centos 7) shell 上在后台正确运行 Spring Boot Batch 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71183703/

相关文章:

java - Spring Boot OAuth2 具有基本身份验证和自定义 UserDetailsS​​ervice

java - 为什么在 spring-boot 中 Web 应用程序必须有单独的 @Controller 类文件?

spring - 如何构建基于数据库的Spring Boot环境/属性源?

java - 在scala中实现泛型通用接口(interface)

java - 计算一天中不同时间的剩余时间

php - PHP 上的 SWFUpload 图像上传失败,错误代码为 'Partial File Uploaded'

与 MongoDB 的 PHP 连接无法正常工作并响应 "trying to get property of non value"

java - 寻找一个奇完全数

java - 斐波那契数列返回参数

linux - 在linux中如何加入2个文件