自适应网站建设选哪家,线上室内设计师,改成 响应式 网站,免签约收款WordPress编辑linux启动脚本 执行 vi run_blog 按i 进入编辑#xff0c;复制以下代码#xff0c;并根据当前环境修改三个参数。以下是详细完整脚本代码#xff1a;
#!/bin/bash# 配置部分
JAR_PATH/path/to/your/app.jar # 替换为你的 JAR 文件的实际路径
L…编辑linux启动脚本 执行 vi run_blog 按i 进入编辑复制以下代码并根据当前环境修改三个参数。以下是详细完整脚本代码
#!/bin/bash# 配置部分
JAR_PATH/path/to/your/app.jar # 替换为你的 JAR 文件的实际路径
LOG_FILE/var/log/app.log # 日志文件路径
JAVA_OPTS-Xms512m -Xmx1024m # Java 启动参数可根据需要调整# 获取应用的 PID
get_pid() {# 使用 pgrep 查找运行指定 JAR 的 Java 进程pgrep -f java .* -jar $JAR_PATH
}# 启动函数
start() {PID$(get_pid)if [ -n $PID ]; thenecho 应用已在运行PID$PIDexit 1fiecho 启动应用...nohup java $JAVA_OPTS -jar $JAR_PATH $LOG_FILE 21 sleep 1 # 确保进程有时间启动PID$(get_pid)if [ -n $PID ]; thenecho 应用已启动PID$PIDelseecho 启动失败请检查日志文件$LOG_FILEexit 1fi
}# 停止函数
stop() {PID$(get_pid)if [ -z $PID ]; thenecho 应用未运行exit 1fiecho 停止应用PID$PIDkill $PID# 等待进程结束for i in {1..10}; doif ! ps -p $PID /dev/null 21; thenbreakfisleep 1doneif ps -p $PID /dev/null 21; thenecho 进程未正常停止强制杀死进程kill -9 $PIDfiecho 应用已停止
}# 重启函数
restart() {stopstart
}# 状态检查函数
status() {PID$(get_pid)if [ -n $PID ]; thenecho 应用正在运行PID$PIDexit 0elseecho 应用未运行exit 1fi
}# 主逻辑根据传入的参数执行相应的函数
case $1 instart)start;;stop)stop;;restart)restart;;status)status;;*)echo 用法: $0 {start|stop|restart|status}exit 1;;
esac使用说明 配置脚本 修改 JAR_PATH将 /path/to/your/app.jar 替换为你的 JAR 文件的实际路径例如 /home/user/myapp/app.jar。修改 LOG_FILE设置日志文件的路径例如 /var/log/app.log。调整 JAVA_OPTS根据需要调整 Java 启动参数例如内存设置等。 赋予执行权限
chmod x app_control.sh使用脚本 启动应用 ./run_blog.sh start 停止应用 ./run_blog.sh stop 重启应用 ./run_blog.sh restart 检查应用状态 ./run_blog.sh status
详细说明 获取 PID 脚本通过 pgrep -f java .* -jar $JAR_PATH 来查找运行指定 JAR 文件的 Java 进程。这种方法避免了使用 PID 文件确保脚本能够准确定位到对应的进程。 启动应用 使用 nohup 和 将应用在后台运行并将输出重定向到指定的日志文件。启动后脚本会等待一秒钟以确保进程已启动并再次检查 PID。 停止应用 脚本首先查找应用的 PID然后发送 SIGTERM 信号请求进程优雅退出。如果进程在 10 秒内未停止脚本将发送 SIGKILL 信号强制终止进程。 状态检查 通过检查 PID 是否存在判断应用是否正在运行并输出相应的信息。
执行脚本如下图 自动启动可选
如果希望应用在系统启动时自动运行可以将脚本添加到 systemd 服务中。以下是创建 systemd 服务单元文件的步骤 创建服务单元文件 创建一个 app.service 文件在 /etc/systemd/system/ 目录下 [Unit]
DescriptionMy Java Application
Afternetwork.target[Service]
Useryour_username
ExecStart/path/to/app_control.sh start
ExecStop/path/to/app_control.sh stop
Restartalways[Install]
WantedBymulti-user.target注意 将 your_username 替换为运行应用的实际用户名。将 /path/to/app_control.sh 替换为脚本的实际路径。
启用并启动服务
sudo systemctl daemon-reload
sudo systemctl enable app.service
sudo systemctl start app.service管理服务 使用 systemctl 命令来管理应用 查看状态 sudo systemctl status app.service 停止服务 sudo systemctl stop app.service 重启服务 sudo systemctl restart app.service
日志查看
应用的输出被重定向到指定的日志文件。你可以使用以下命令实时查看日志
tail -f /var/log/app.log
注意事项
权限问题确保脚本和日志文件的路径对运行脚本的用户具有适当的读写权限。如果选择将日志文件存放在 /var/log可能需要使用 sudo 或调整权限。唯一性如果服务器上有多个相同 JAR 文件运行pgrep 可能会匹配多个进程。确保 JAR_PATH 唯一或者根据需要调整 pgrep 的匹配模式。安全性确保脚本的执行权限和文件权限设置合理避免未经授权的用户修改或执行脚本。