源码仓库地址
一、方式一(推荐)
1.创建一个新的服务单元文件
执行以下命令创建一个新的服务单元文件,例如 phoenix_ui.service
sudo nano /etc/systemd/system/phoenix_ui.service
2.在打开的文件中,添加以下内容
[Unit]
Description=phoenix监控UI端
After=network.target syslog.target
[Service]
User=root
Group=root
WorkingDirectory=/path/to/your/app
ExecStart=/usr/bin/java -jar -Ddruid.mysql.usePingMethod=false /path/to/your/app/phoenix-ui.jar --spring.profiles.active=prod
Restart=on-failure
RestartSec=60s
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
① 请将 /usr/bin/java 替换为您服务器的Java可执行文件所在路径,如果不知道路径,可以用命令 whereis java 查询。
② 请将 /path/to/your/app 替换为您的应用程序的实际路径,请确保用户、路径和文件名为您实际的应用程序信息,以确保正确的配置和启动。
3.保存并关闭文件
4.重新加载 systemd 配置
执行以下命令重新加载 systemd 配置:
sudo systemctl daemon-reload
5.将服务添加到开机启动项中
执行以下命令将服务添加到开机启动项中:
sudo systemctl enable phoenix_ui.service
6.启动、停止、重启服务,查看服务状态
1)启动
sudo systemctl start phoenix_ui.service
2)停止
sudo systemctl stop phoenix_ui.service
3)重启
sudo systemctl restart phoenix_ui.service
4)查看服务状态
systemctl status phoenix_ui.service
7.问题诊断
在 systemd 中,可以使用以下命令来查看服务开机自启动失败的日志:
1)使用 journalctl 命令查看系统日志
sudo journalctl -u <service_name>.service
其中 <service_name>
是服务的名称。通过运行上述命令,您将只显示指定服务的日志。
2)查看引导过程的日志(包括服务启动)
sudo journalctl -b
该命令将显示最近一次引导的整个日志,其中包括服务启动和其他相关信息。
3)使用 systemctl 命令查看服务状态和日志
systemctl status <service_name>.service
该命令将显示服务的当前状态,包括最近的日志记录片段。
这些命令将显示与指定服务相关的日志条目,帮助您确定服务开机自启动失败的原因。您可以检查日志中的错误消息、警告和其他有关服务启动过程的详细信息,以便进一步诊断问题。
二、方式二
1.创建一个启动脚本
执行以下命令创建一个新的启动脚本:
sudo nano /etc/init.d/phoenix_ui
注意:init脚本通常用于旧版的Linux发行版,如CentOS 6及更早版本中。现在,systemd已经成为许多Linux发行版的默认服务管理器,如果您的服务器不支持init脚本,请使用其它方式设置开机自启动。
2.在打开的文件中,添加以下内容
#!/usr/bin/env bash
### BEGIN INIT INFO
# Provides: phoenix_ui
# Required-Start: $network $syslog
# Required-Stop: $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: phoenix监控服务端
### END INIT INFO
# 出错立即退出
set -e
# 未定义变量报错
set -u
#替换为您的应用程序的实际路径
cd /path/to/your/app
# ================== 配置项 ==================
# 定义可执行 JAR 文件名
PACKAGE_NAME="phoenix-ui.jar"
# 定义程序的名称
PROGRAM_NAME="phoenix-ui"
# 定义启动程序的命令
START_CMD="java -jar -Ddruid.mysql.usePingMethod=false ${PACKAGE_NAME} --spring.profiles.active=prod"
# 定义在停止程序时,最大重试次数
MAX_RETRY=12
# 定义每次重试之间的等待时间
SLEEP_SEC=5
# ================== 工具函数 ==================
# 获取当前运行进程的 PID
get_pid() {
pgrep -f "${PACKAGE_NAME}" 2>/dev/null
}
# 判断程序是否正在运行
is_running() {
[ -n "$(get_pid)" ]
}
# ================== 功能函数 ==================
# 查看状态
status() {
echo "---------------------------------------检测状态---------------------------------------"
if is_running; then
local pid
pid=$(get_pid)
echo "${PROGRAM_NAME} 正在运行,进程ID:${pid}"
else
echo "${PROGRAM_NAME} 未运行!"
fi
}
# 停止程序
stop() {
echo "---------------------------------------停止程序---------------------------------------"
if ! is_running; then
echo "${PROGRAM_NAME} 未运行!"
return 0
fi
local pid
pid=$(get_pid)
echo "${PROGRAM_NAME} 进程ID:${pid}"
kill "${pid}" 2>/dev/null
echo "发送关闭信号:kill ${pid}"
local retry=${MAX_RETRY}
while ((retry > 0)); do
if ! is_running; then
echo "${PROGRAM_NAME} 已经关闭!"
return 0
fi
sleep ${SLEEP_SEC}
((retry--))
done
echo "等待超时,仍未关闭,尝试强制终止..."
kill -9 "${pid}" 2>/dev/null
echo "${PROGRAM_NAME} 被强制关闭!"
}
# 启动程序
start() {
echo "---------------------------------------启动程序---------------------------------------"
if is_running; then
echo "${PROGRAM_NAME} 正在运行,请先停止程序!"
return 1
fi
echo "启动命令:${START_CMD}"
# 此处是一条完整命令,不能加双引号
nohup ${START_CMD} >/dev/null 2>&1 &
local pid=$!
echo "启动中,PID: ${pid}"
# 给一点时间让进程启动
sleep 15
if ! is_running; then
echo "${PROGRAM_NAME} 启动失败!"
return 1
else
echo "${PROGRAM_NAME} 已启动,PID: $(get_pid)"
fi
}
# 重启程序
restart() {
stop
start
}
# ================== 主程序入口 ==================
if [ $# -lt 1 ]; then
echo "
用法: $0 {start|stop|restart|status}
示例:
./phoenix_ui.sh start # 启动服务
./phoenix_ui.sh stop # 停止服务
./phoenix_ui.sh restart # 重启服务
./phoenix_ui.sh status # 检查状态
"
exit 1
fi
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status
;;
*)
echo "无效参数: ${1}"
echo "请使用: start | stop | restart | status"
exit 1
;;
esac
请将 /path/to/your/app 替换为您的应用程序的实际路径。
3.保存并关闭文件
4.设置脚本的权限
执行以下命令设置脚本的执行权限:
sudo chmod +x /etc/init.d/phoenix_ui
5.添加到开机启动项中
执行以下命令将服务添加到开机启动项中:
sudo chkconfig --add phoenix_ui
6.启动、停止、重启服务,查看服务状态
1)启动
sudo service phoenix_ui start
2)停止
sudo service phoenix_ui stop
3)重启
sudo service phoenix_ui restart
4)查看服务状态
sudo service phoenix_ui status
评论