kkfilesview和JeecgBoot服务断电来电后重启总结
先梳理目录信息
- kkFileView
- 程序目录:
/home/kkfilesview/kkFileView-4.4.0 - jar包:
/home/kkfilesview/kkFileView-4.4.0/bin/kkFileView-4.4.0.jar - 启动命令原参数:
java -Dfile.encoding=UTF-8 -Dspring.config.location=../config/application.properties -jar kkFileView-4.4.0.jar工作目录必须是
/home/kkfilesview/kkFileView-4.4.0/bin,../config才可以正确找到配置文件
- JeecgBoot
- 目录:
/home/qhoa - jar包:
/home/qhoa/jeecg-boot-module-system-3.0.jar - 启动命令:
/usr/java/jdk1.8.0_144/bin/java -jar -Xms512m -Xmx512m /home/qhoa/jeecg-boot-module-system-3.0.jar
⚠️ 当前问题:kkFileView双实例运行(18680、19189两个进程),必须先全部杀掉,再用systemd托管,否则端口冲突!
第一步:停止现有的Java旧进程
# 杀掉两个kkFileView进程
kill 18680
kill 19189
# 杀掉jeecg进程
kill 19807
# 确认全部java业务进程清理干净
ps -ef | grep java
如果kill无法正常关闭,使用
kill -9 进程号
第二步:创建 kkfileview.service
vim /etc/systemd/system/kkfileview.service
粘贴下面完整内容
[Unit]
Description=kkFileView 文件预览服务
After=network.target mysqld.service
Wants=network.target mysqld.service
[Service]
User=root
# 工作目录,非常关键,对应bin目录,才能识别 ../config
WorkingDirectory=/home/kkfilesview/kkFileView-4.4.0/bin
# jdk路径,你服务器jdk是/usr/java/jdk1.8.0_144/bin/java
ExecStart=/usr/java/jdk1.8.0_144/bin/java -Dfile.encoding=UTF-8 -Dspring.config.location=../config/application.properties -jar kkFileView-4.4.0.jar
Restart=on-failure
RestartSec=5
StandardOutput=journal+console
StandardError=journal+console
[Install]
WantedBy=multi-user.target
第三步:创建 jeecgboot.service
vim /etc/systemd/system/jeecgboot.service
粘贴下面完整内容
[Unit]
Description=JeecgBoot 后台业务服务
After=network.target mysqld.service
Wants=network.target mysqld.service
[Service]
User=root
WorkingDirectory=/home/qhoa
ExecStart=/usr/java/jdk1.8.0_144/bin/java -jar -Xms512m -Xmx512m jeecg-boot-module-system-3.0.jar
# 等待10秒,等mysql完全启动,避免数据库连接失败
ExecStartPre=/bin/sleep 10
Restart=on-failure
RestartSec=5
StandardOutput=journal+console
StandardError=journal+console
[Install]
WantedBy=multi-user.target
第四步:重载systemd(新增/修改service必须执行)
systemctl daemon-reload
第五步:设置开机自启 + 立即启动服务
# kkFileView
systemctl enable --now kkfileview
# JeecgBoot
systemctl enable --now jeecgboot
日常运维命令
# 查看状态
systemctl status kkfileview
systemctl status jeecgboot
# 重启
systemctl restart kkfileview
systemctl restart jeecgboot
# 停止
systemctl stop kkfileview
systemctl stop jeecgboot
# 查询是否开机自启(断电来电自动拉起)
systemctl is-enabled kkfileview
systemctl is-enabled jeecgboot
# 实时查看日志(排查启动报错)
journalctl -u kkfileview -f
journalctl -u jeecgboot -f
整套服务开机顺序(断电上电)
network → mysqld → nginx → kkfileview → jeecgboot
jeecgboot加了
sleep10,预留mysql启动时间,减少数据库连接失败问题
验证方案
执行 reboot 重启服务器,开机后执行:
systemctl status mysqld nginx kkfileview jeecgboot
ps -ef | grep java
常见坑提醒
- WorkingDirectory 不能写错,kkFileView如果目录不对,
../config/application.properties找不到,直接启动失败 - 旧进程没有杀干净,会端口冲突,服务启动失败
- 修改service文件后,必须执行daemon-reload
- 如果启动失败,优先用
journalctl -u xxx看详细报错
你执行完启动命令后,把 systemctl status kkfileview 和 systemctl status jeecgboot 的结果发我,我帮你确认是否正常。
补充:kkFileView自带shutdown.sh、startup.sh脚本,我们这里直接用java命令启动,避开自带脚本的nohup后台方式,交给systemd管理崩溃自动重启。
要不要我给你写一条一键巡检脚本,一次性查看 mysqld、nginx、kkfileview、jeecgboot 全部服务状态?
郭慕荣博客园

浙公网安备 33010602011771号