编写一个shell脚本,使用 nohup 运行jar包
时间: 2023-02-28 14:31:58 浏览: 151
你可以创建一个名为run.sh的shell脚本,内容如下:
```
#!/bin/bash
nohup java -jar /path/to/your.jar &
```
然后,执行以下命令以运行该脚本:
```
sh run.sh
```
这将使用nohup在后台运行your.jar,并且即使你关闭终端它也会继续运行。
相关问题
编写一个在centos7上运行jar包的shell脚本
可以按照以下步骤编写一个在CentOS 7上运行jar包的shell脚本:
1. 创建一个新的文件,例如`run.sh`,并加入以下内容:
```
#!/bin/bash
java -jar /path/to/your/jar/file.jar
```
其中,`/path/to/your/jar/file.jar`是指你的jar文件的路径。
2. 保存并关闭文件,并将其设置为可执行文件:
```
chmod +x run.sh
```
3. 运行脚本:
```
./run.sh
```
这将启动你的jar文件并在终端中显示输出。如果你希望在后台运行该文件,可以使用以下命令:
```
nohup ./run.sh &
```
这将在后台运行你的jar文件,并将输出保存到`nohup.out`文件中。
编写shell脚本一键部署jar包
### 编写 Shell 脚本实现一键部署 JAR 包
为了创建一个能够一键部署JAR包的应用程序,可以按照如下方式构建Shell脚本。该脚本不仅会备份当前应用程序版本,还会检查是否有正在运行的服务实例。如果检测到已有服务在运行,则不会继续操作并给出提示信息[^3]。
#### 创建部署脚本 `deploy.sh`
```bash
#!/bin/bash
# 定义变量
APP_NAME="Watcher-1.0-SNAPSHOT"
BACKUP_DIR="/path/to/backup/directory"
DEPLOY_PATH="/path/to/deploy/location/"
NEW_JAR="${DEPLOY_PATH}${APP_NAME}.jar.new"
CURRENT_JAR="${DEPLOY_PATH}${APP_NAME}.jar"
# 备份旧版本
if [ -f "$CURRENT_JAR" ]; then
mv "${CURRENT_JAR}" "${BACKUP_DIR}/${APP_NAME}-$(date +%Y%m%d%H%M%S).jar"
fi
# 替换新版本
mv "${NEW_JAR}" "${CURRENT_JAR}"
# 检查是否已经有相同名称的服务在运行
CHECK_PROCESS=$(ps aux | grep ${APP_NAME} | grep -v "grep")
if [[ ! -z $CHECK_PROCESS ]];then
echo "Error: The application is already running."
exit 1;
else
nohup java -jar "${CURRENT_JAR}" > /dev/null 2>&1 &
PID=$!
echo $PID > "${DEPLOY_PATH}/app.pid"
# 设置优雅关闭函数
graceful_shutdown() {
kill -TERM $PID
wait $PID
rm -rf "${DEPLOY_PATH}/app.pid"
echo "Application has been stopped gracefully."
}
trap 'graceful_shutdown' SIGINT SIGTERM EXIT
echo "Deployment completed successfully!"
fi
```
上述脚本实现了基本的一键部署功能,包括但不限于:
- **备份现有应用**:确保每次更新前都保存一份副本。
- **覆盖安装最新版本**:将新的`.new`文件重命名为正式使用的`.jar`扩展名。
- **防止重复启动**:当发现有同名进程存在时不执行任何动作,并返回错误消息给用户。
- **记录进程ID (PID)**:便于后续管理和监控目的。
- **处理异常终止情况下的清理工作**:定义了SIGINT/SIGTERM信号处理器用于安全停止应用程序。
阅读全文
相关推荐













