在Ubuntu上以服务方式运行Java程序
女主宣言
最近小编在项目中遇到了一个问题,打包的jar文件需要作为服务来使用,但是如何才能保证让jar文件开机自启动呢。小编使用的是Ubuntu的系统,所以查阅了相关资料之后,整理了此篇文章,供大家参考使用。在本文中,我们将使用示例服务包装器,在Ubuntu系统中以服务的方式运行JAR文件。包括自动启动和日志提示。
PS:丰富的一线技术、多元化的表现形式,尽在“HULK一线技术杂谈”,点关注哦!
假设您有一个JAR文件,您需要将它作为一个服务运行。此外,您希望它在系统重新启动时自动启动。那我们该怎么做呢?
其实,Ubuntu有一个内置的机制来创建自定义服务,使它们能够在系统启动时作为服务启动/停止它们。在这篇文章中,我将分享一个简单而优雅的方法来为您的JAR文件创建一个服务包装器,以便您可以将它作为一个服务运行。我们开始吧。
1
创建一个服务
> sudo vim /etc/systemd/system/my-webapp.service
复制/粘贴以下内容到文件 /etc/systemd/system/my-webapp.service 中:
[Unit]
Description=My Webapp Java REST Service
[Service]
User=ubuntu
# The configuration file application.properties should be here:
#修改为你的工作目录
WorkingDirectory=/home/ubuntu/workspace
#要执行程序的路径
#调用jar文件的shell执行文件
fileExecStart=/home/ubuntu/workspace/my-webapp
SuccessExitStatus=143
TimeoutStopSec=10
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
2
创建调用服务的Bash脚本
下面是调用JAR文件 my-webapp 的bash脚本:
#!/bin/sh
sudo /usr/bin/java -jar my-webapp-1.0-SNAPSHOT.jar server config.yml
不要忘记给脚本授予可执行权限:
$ sudo chmod u+x my-webapp
3
启动服务
$ sudo systemctl daemon-reload
$ sudo systemctl enable my-webapp.service
$ sudo systemctl start my-webapp
$ sudo systemctl status my-webapp
4
设置日志记录
服务设置好之后,我们还需要记录一下日志信息,以供有问题的时候查阅。这里我们使用Linux的新日志系统Journald。
简单介绍下Journald,它是Linux的新日志系统。Journald和systemd绑定。 Journald使用journalctl工具读取日志,默认参数下显示所有日志内容。journalctl不是本文的重点,感兴趣的读者可以自行查阅资料去了解。
我们简单介绍两个参数,使用 -f 选项可以查看实时日志,使用 -n 可以指定日志行数,使用 -u 指定特定单元(同--unit)。
首先执行该命令,
$ sudo journalctl --unit=my-webapp
如果想查看实时日志的话,可以执行:
$ sudo journalctl -f -n 1000 -u spinal-webapp
停止服务:
$ sudo systemctl stop my-webapp
总结
以上就是在Ubuntu下以服务的方式来运行我们java程序的方式。看似很简单的一个功能,但是可以做出不简单的事情,毕竟可以让我们使用其他语言来实现服务。本文以java程序为例,仅仅是抛砖引玉。感兴趣的读者可以去尝试运行一下php、python等语言,或者CentOS、Debian等操作系统。
扫描下方二维码了解更多内容
在Ubuntu上以服务方式运行Java程序相关推荐
- Windows以服务方式运行Java程序
Windows以服务方式运行Java程序 Windows以服务方式运行Java程序 方式1:通过windows的startup自启动实现 方式2:通过winsw实现windows的服务注册与启动 Wi ...
- docker使用dockerfile方式运行java程序
docker使用dockerfile方式运行java程序 1,下载基础java环境镜像java:8 2,创建文件夹并进入: mkdir dockerfile cd dockerfile 3,打包好的j ...
- 在Windows上以服务方式运行 MSOPenTech/Redis
ServiceStack.Redis 使用教程里提到Redis最好还是部署到Linux下去,Windows只是用来做开发环境,现在这个命题发生改变了,在Windows上也可以部署生产环境的Redis, ...
- javac的java扩展名_通过命令行方式运行Java程序时,使用的命令是javac,而且要求必须写出该文件的完整文件名,包括扩展名.java。 ( )...
通过大戟科植物都有乳汁. 在启动Excel之初,命令名该应用程序自动为用户建立一个工作簿,名为 ( ). 默认状态下,行方行J序时须写在启动Excel之初,应用程序为用户建立的 book1 中,包含 ...
- java代码在u盘里面运行_在u盘安装有jdk,在win7系统上怎么运行java程序
java程序的运行时需要环境的. java程序的运行环境就是JRE,你说的JDK其中也包含了JRE所以java程序可以运行,但是JDK中还包含有用于开发java程序所用到的工具,而这些JRE中是没有的 ...
- ultraedit运行java_如何在UltraEdit中编译和运行Java程序
如何在UltraEdit中编译和运行Java程序 (2011-07-28 12:33:52) 标签: it 问题提出: 可以毫不夸张地说,JDK+UltraEdit是面向Java初学者的开发工具的绝配 ...
- 以Windows服务方式运行.NET Core程序
原文:以Windows服务方式运行.NET Core程序 在之前一篇博客<以Windows服务方式运行ASP.NET Core程序>中我讲述了如何把ASP.NET Core程序作为Wind ...
- linux redhat 下让redis以服务方式运行
1.从官网 下载 redis-2.8.9.tar.gz之后,将redis解压在/usr/local下,目录是redis-2.8.9,然后按照官网给出的办法安装redis即可. 2.安装完在redis- ...
- JJY本地服务器以服务方式运行不能读取消息文件
1.问题描述 JJY主服务器采用Windows服务方式运行时,在读tb_0031消息对应的外部文件时失败.而在控制台方式下正常. 读文件失败的结果是单据没有发送,且错误类型是文件路径不存在(ERROR ...
最新文章
- python文件流习题解析
- notepad++的NppFTP插件远程连接linux操作系统
- [css] 举例说明实现圆角的方式有哪些?
- 链表每k个反转 java_K 个一组翻转链表
- UltraISO 制作ESXi 的 USB 安装盘
- 某道Pwn(格式化字符串漏洞)
- redis使用lua脚本
- 翰文进度计划软件横道图不显示文字_作为工程新人总是加班?这份工程软件+算量套表直接帮助你,共享...
- a标签下载文件直接打开的问题
- sqlite stmt
- 怎么把照片背景变成蓝色
- springboot2 druid监控控制台去掉下面的图片广告和powered by
- html清除span的text,使用jquery删除字符串中的span标签
- c++ 控制台游戏打砖块
- Py第四问 from test import test1 ImportError:cannot import name 'test1'
- iguana::json/xml 序列化框架
- 如何学计算机打字,新手学习计算机打字全文阅读
- Educational Codeforces Round 61 (Rated for Div. 2) D. Stressful Training 详解
- 送别贴:《李兴》 秋风为落叶所破歌!
- Tungsten Fabric(6):部署更高版本的TF
热门文章
- [转贴]网页及其控件的触发事件
- Python学习笔记之元组
- VUE自学日志04-Data Property 和方法
- SpringCloud微服务注册调用入门-路由网关
- Spring整合Quartz实现定时任务
- SpringMVC controller与页面之间的传值
- 调节pycharm字体大_字体美化大师里的字体推荐
- 注册Nocos配置中心失败:Could not resolve placeholder ‘config.info‘ in value “${config.info}
- 伪数组转化真数组_ES6 数组方法
- 听云CTO访谈:解读现代应用性能管理(APM)技术