当前位置: 首页 > 知识库问答 >
问题:

在服务器上运行java jar文件作为后台进程

利稳
2023-03-14

我需要在服务器上运行一个java jar,以便在两个应用程序之间进行通信。我写了两个shell脚本来运行它,但是一旦我启动了这个脚本,我就不能关闭/终止这个进程。如果我按ctrlC或关闭控制台,服务器将关闭。有人能帮我如何修改这个脚本以作为普通服务器运行吗?

 #!/bin/sh
java -jar /web/server.jar
echo $! 
#> startupApp.pid

共有3个答案

裘臻
2023-03-14

如果你正在使用Ubuntu并且有“Upstart”(http://upstart.ubuntu.com/)您可以尝试以下方法:

创建/var/init/yourservice。形态

具有以下内容

description "Your Java Service"  
author "You"  

start on runlevel [3]  
stop on shutdown  

expect fork  

script     
    cd /web 
    java -jar server.jar >/var/log/yourservice.log 2>&1  
    emit yourservice_running  
end script  

现在,您可以发出service yourservice startservice yourservice stop命令。您可以跟踪/var/log/yourservice。记录以验证它是否正常工作。

如果您只想从控制台运行jar,而不让它占用控制台窗口,您可以执行以下操作:

java -jar /web/server.jar > /var/log/yourservice.log 2>&1
翟源
2023-03-14

Systemd,目前在大多数发行版中运行

查找您的用户定义服务我的位置是/usr/lib/systemd/system/

用你最喜欢的文本编辑器名称创建一个文本文件,无论你想要什么。服务

将以下模板放入文件中,随您所需。服务

[Unit]
Description=webserver Daemon

[Service]
ExecStart=/usr/bin/java -jar /web/server.jar
User=user

[Install]
WantedBy=multi-user.target

以超级用户身份运行您的服务

$ systemctl start whatever_you_want.service # starts the service
$ systemctl enable whatever_you_want.service # auto starts the service
$ systemctl disable whatever_you_want.service # stops autostart
$ systemctl stop whatever_you_want.service # stops the service
$ systemctl restart whatever_you_want.service # restarts the service
简成仁
2023-03-14

你可以试试这个:

#!/bin/sh
nohup java -jar /web/server.jar &

nohup实用程序使作为参数传递的命令即使在您注销后也在后台运行。

 类似资料:
  • 问题内容: 每当用户断开手机通话时,我都希望显示自定义弹出消息。问题是如何检测应用程序何时未运行。任何线索都将有所帮助。 问题答案: 已经有一段时间了,并且已经有了很多发展。 首先,如何在Flutter中创建服务以使应用程序始终在后台运行有一些答案? 此外,使用Flutter插件和地理围栏(在2018年9月),Flutter / Background流程 基本上将使您指向在后台执行中等/执行Dar

  • 问题内容: 我有一个用于发送http请求的服务,该服务在后台运行,并且在“正常模式”下工作正常。问题是当我将手机置于“省电模式”时,该服务无法正常工作。但是,像Whatsapp这样的应用程序仍然可以使用。你知道发生了什么吗? 问题答案: 诸如Whatsapp之类的移动应用程序必须请求权限才能将其从打ze /省电和应用待机模式中排除。 可以通过在 “设置” >“电池”>“电池优化”中配置白名单来手动

  • 问题内容: 我最近完成了 Wiki网站开发教程 (http://golang.org/doc/articles/wiki/)。我玩得很开心,我想用net / http包做更多的实验。 但是,我注意到从控制台运行Wiki时,该Wiki将接管控制台。如果我关闭控制台终端或停止进程,则服务器将停止。 如何使服务器在后台运行?我认为该术语在守护程序中运行。 我正在Ubuntu 12.04上运行它。谢谢你的

  • 我用node写了一个工具,如何做到,让用户npm全局安装后,运行直接是后台运行,不需要使用类似pm2之类的工具? 类似Whistle这样的https://www.npmjs.com/package/whistle

  • 问题内容: 多年来,由于这篇文章引起了很多关注,因此我在文章的底部列出了每个平台的最佳解决方案。 原始帖子 : 我希望我的node.js服务器在后台运行,即:当我关闭终端时,我希望服务器继续运行。我已经用谷歌搜索并提出了本教程,但是它没有按预期工作。因此,我没有使用该守护程序脚本,而是以为我只使用了输出重定向(该`2>&1 file`部分),但这也不会退出-我在终端中出现空白行,就像它在等待输出/

  • 问题内容: 我想使用ffmpeg在php中将视频转换为.flv。目前,我正在执行此操作,但是它会挂起浏览器,直到文件上传完毕。我一直在寻找有关如何在后台运行exec()进程的php文档,同时使用返回的PID更新进程。这是我发现的: 我还使用一个技巧来跟踪后台任务是否正在使用返回的PID运行: 我是否想创建一个单独的.php文件,然后从php cli运行以执行以下功能之一?我只需要稍微推动一下即可开