【systemd】如何实现 java -jar 程序的开机自启?

作为java程序员,经常会遇到这样一个问题,打个jar包,测试或者上线生产,于是乎面临的选择来了,java –jar or nohup?

一、 # java -jar  x.jar &

直接启动jar文件,在当前会话进程中开启一个子进程来运行程序,这个子进程会随着会话进程的结束而结束。

这种情况适合短时间测试用。

二、 # nohup java -jar x.jar &

先熟悉一下相关名词:

hangup (挂断),终端退出时会发送 hangup 信号来通知其关闭所有子进程

nohup(不挂断,忽略挂断信号)

nohup 的使用是十分方便的,只需在要处理的命令前加上 nohup 即可,标准输出和标准错误缺省会被重定向到 nohup.out 文件中。

一般我们可在结尾加上"&"来将命令同时放入后台运行,也可用">filename2>&1"来更改缺省的重定向文件名。

# nohup java -jar x.jar > jar.log 2>&1 &

执行后程序会在后台运行,适合在生产环境长时间运行。

三、如果服务器重启了,怎么实现程序的开机自启呢?

在CentOS7上,我们可以将其注册为系统服务,用systemd管理

在用systemd控制前,我们需要用shell脚本对其做封装

# cat  /usr/local/bin/testJar.sh

#####################################

#!/bin/bash

export JAVA_BIN="/opt/jre18.0_151/bin"

export PATH=$JAVA_BIN:$PATH

start () {

  nohup java -jar  /path/to/x.jar >> /path/to/jar.log 2>&1 &

}

stop () {

 ps aux | grep "path/to/x.jar" | awk '{print $2}'  | xargs kill -9

}

restart () {

stop

start

}

case "$1" in

start)

start

;;

stop)

stop

;;

restart)

stop

start

;;

*)

echo "start|stop|restart"

esac

######################################

# chmod +x   /usr/local/bin/testJar.sh

# vim /etc/systemd/system/testJar.service

##############################

[Unit]

Description=testJar service daemon

[Service]

ExecStart=/usr/local/bin/testJar.sh      start

ExecStop=/usr/local/bin/testJar.sh      stop

ExecReload=/usr/local/bin/testJar.sh  relaod

[Install]

WantedBy=multi-user.target

##############################

# systemctl daemon-reload

# systemctl start       testJar.service

# systemctl enable  testJar.service

# systemctl status   testJar.service

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • muahao阅读 6,261评论 0 3
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,828评论 19 139
  • 肖申克的救赎 1.从本篇文章中,我学到的最重要的概念: 无论处于何种绝望的境地,都不要放弃希望,放弃追求自由的心。...
    上官云婍阅读 1,765评论 1 0
  • 关键在人关键在思路
    江都阅读 3,369评论 0 0
  • 关于成长这件事 成长,就是你从难过后哭的全世界都知道,变成了,难过的时候一个人静一静,奔溃的时候才敢在卫生间里,咬...
    佔西西阅读 3,196评论 0 0

友情链接更多精彩内容