java -jar命令启动jar包

本文详细介绍通过SSH使用不同命令启动JAR包的方法及其特点,包括锁定窗口、后台运行及输出重定向,特别关注nohup命令的使用,以及如何通过参数配置Spring应用。
  • 以命令方式启动jar包:

    • java -jar XXX.jar
      

      特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出。

    • java -jar XXX.jar &
      

      特点:当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行。

    • nohup java -jar XXX.jar &
      

      特点:当窗口关闭时,程序也不会中止运行;当用 nohup 命令执行作业时,缺省情况下该作业的所有输出被重定向到nohup.out的文件中,除非另外指定了输出文件。

    • nohup java -jar XXX.jar >temp.txt &
      

      ​>temp.txt是将command的输出重定向到temp.file文件,即输出内容不打印到屏幕上,而是输出到temp.file文件中

  • >/dev/null 2>&1
    

    启动jar包或war包时,启动脚本中经常看到类似以下启动命令:

    nohup java -jar  /data/server/ifsmp/ifsmp.war --spring.profiles.active=test --server.port=8080 >/dev/null 2>&1 &
    

    其中 >/dev/null 2>&1的含义是:

    该条shell命令将不会输出任何信息到控制台,也不会有任何信息输出到文件中

  • –spring.profiles.active=test

    连续的两个减号–就是对application.properties中的属性值进行赋值的标识,java -jar xxx.jar --spring.profiles.active=test --server.port=8080命令,等价于我们在application.properties中添加属性spring.profiles.active=test 和 server.port=8080

### 在Windows系统中使用nohup命令配合java -jar启动jar的方法 在Windows系统中,`nohup` 命令是Unix/Linux系统的特有命令,因此无法直接使用。然而,可以通过其他方式实现类似的功能,例如使用 `cmd` 或者批处理文件(`.bat`)来确保 Java 应用程序在后台运行,并且即使关闭终端也能继续执行。 以下是一个解决方案: #### 使用 `start` 命令结合 `cmd` 在Windows中,可以使用 `start` 命令启动一个新窗口并运行指定的命令。通过将输出重定向到日志文件,可以模拟 `nohup` 的功能。以下是具体的命令格式[^1]: ```cmd start /B java -jar admin.jar > log.file 2>&1 ``` - `/B` 参数表示在后台运行而不打开新的命令行窗口。 - `>` 将标准输出重定向到 `log.file`。 - `2>&1` 将错误输出也重定向到同一个文件。 #### 使用批处理文件(`.bat`) 为了更方便地管理和启动应用程序,可以创建一个批处理文件(`.bat`),内容如下: ```batch @echo off start /B java -jar admin.jar > log.file 2>&1 exit ``` 保存为 `start_admin.bat` 并运行该文件即可。这种方式可以确保即使关闭命令行窗口,Java 程序仍然在后台运行。 #### 设置Windows服务 如果需要更稳定的解决方案,可以将 Java 应用程序注册为 Windows 服务。这可以通过工具如 `nssm`(Non-Sucking Service Manager)来实现。以下是步骤概述[^2]: 1. 下载并安装 `nssm`。 2. 打开命令行,运行以下命令: ```cmd nssm install MyJavaApp ``` 3. 在弹出的对话框中,设置以下参数: - **Path**: 指向 `java.exe` 的路径。 - **Arguments**: 输入 `-jar admin.jar`。 - **Startup directory**: 指向含 `admin.jar` 的目录。 4. 安装完成后,可以通过以下命令启动服务: ```cmd nssm start MyJavaApp ``` #### 日志管理 无论使用哪种方法,都可以通过日志文件监控应用程序的运行状态。例如,在批处理文件中添加循环检查逻辑,类似于 Unix/Linux 中的 `while` 脚本[^3]: ```batch :loop tasklist | findstr /I "java.exe" > nul if errorlevel 1 ( echo Restarting Java application... start /B java -jar admin.jar > log.file 2>&1 ) timeout /T 5 > nul goto loop ``` #### 后台启动并丢弃日志 如果不需要保留日志,可以将输出重定向到 `NUL`,类似于 Linux 中的 `/dev/null`[^4]: ```cmd start /B java -jar admin.jar > NUL 2>&1 ``` ### 示例代码 以下是一个完整的批处理文件示例: ```batch @echo off :start echo Starting Java application... start /B java -jar admin.jar > log.file 2>&1 timeout /T 5 > nul tasklist | findstr /I "java.exe" > nul if errorlevel 1 ( echo Application crashed. Restarting... goto start ) else ( echo Application is running. ) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值