systemctl是用于服务的命令行工具,常用于 Linux 系统中。提供了对系统服务(包括启动、停止、重启、启用、禁用等)的控制,以及对系统单元(units)的操作。
所以,我们可以用systemctl来控制java程序,做到启动、停止、重启、启用、禁用等;
假设我们有个jar包叫hk-ir-video-monitoring.jar,那先创建个名字叫hk-ir-video-monitoring.service的文件,然后编辑文件内容:
# [Unit]区块包含与单元类型无关的通用信息
[Unit]
#描述
Description=这里可以写一些简单的描述
#服务启动前置
After=network.target
# [Service]区块包含服务启动信息
[Service]
#类型:主进程
Type=simple
#使用root权限
User=root
#环境变量,没有环境变量需求的可不写这一行
Environment=LD_LIBRARY_PATH=/usr/local/java/hk-ir-video-monitoring/library
#服务的工作目录
WorkingDirectory=/usr/local/java/my_project
#日志标准输出
StandardOutput=append:/usr/local/java/hk-ir-video-monitoring/log
#日志标准错误
StandardError=append:/usr/local/java/hk-ir-video-monitoring/log
#启动命令,这里需要绝对路径
ExecStart=/usr/local/java/jdk1.8.0_271/bin/java -jar /usr/local/java/hk_ir_video_monitoring/hk-ir-video-monitoring.jar
#关闭命令
ExecStop=/bin/kill -s QUIT $MAINPID
#重启间隔
RestartSec=30
#只要服务关闭就重启
Restart=always
#设置重启的时间间隔限制,0表示无限制
StartLimitInterval=0
#设置在时间间隔内允许的最大重启次数
StartLimitBurst=5
# [Install]区块包含单元的启用信息
[Install]
WantedBy=multi-user.target
然后再linux的命令行输入:systemctl daemon-reload 让systemctl重新加载
输入命令:systemctl enable hk-ir-video-monitoring 启用服务
以下为扩展命令:
输入命令:systemctl disable hk-ir-video-monitoring 可禁用服务
输入命令:systemctl start hk-ir-video-monitoring 可立即启动hk-ir-video-monitoring
输入命令:systemctl stop hk-ir-video-monitoring 可立即关闭hk-ir-video-monitoring
输入命令:systemctl status hk-ir-video-monitoring 可查询hk-ir-video-monitoring的状态
systemctl [command] [unit]
command:命令,enable-启用,disable-禁用,start-启动,stop-停止,restart-重启,status-状态
unit:系统单元的名称,可以是服务、套接字、设备等