windows下java -jar 后台运行以及杀死后台进程

在你的jar文件当前目录中建立一个bat文件:
在这里插入图片描述

内容是:注意文件名要对应

@echo off 
START "commandServer" javaw -jar command-0.0.1-SNAPSHOT.jar

之后双击bat文件就能后台启动jar包啦

杀死后台进程
首先执行命令 (你要知道你运行的jar文件的端口号)

netstat -aon | findstr "9998"

有一次突然报错:findstr"xxx"不是内部命令也不是外部命令,我无语了…
后来用这个可以,也就是空格 不加引号(目前不知道为啥上面突然报这个错)

netstat -aon | findstr 9998

在这里插入图片描述可以看到PID为6452 然后在执行:

tasklist|findstr "6452"

在这里插入图片描述
最后我们就要杀死这个进程啦
执行命令:

taskkill /f /im javaw.exe

在这里插入图片描述
当然你也可以按照PID来杀死进程

taskkill /pid 3380  -t  -f

在这里插入图片描述
另外扩展一个知识: windows 杀死进程名

taskkill /F /im nginx.exe

如果电脑上没有安装JDK,又想运行java程序可以这样做
在这里插入图片描述将jre和jar包放在同一目录下,bat文件中写入命令,没有JDK环境也可后台启动jar包
在这里插入图片描述

### 使用 `java -jar` 指定输出文件路径的方法 在使用 `java -jar` 命令运行 Java 可执行 JAR 文件时,可以通过重定向操作符或者修改程序内部逻辑的方式指定输出文件路径。以下是两种常见方法: #### 方法一:通过命令行重定向指定输出文件 可以利用 Unix/Linux 的标准输入输出重定向功能实现输出到特定文件的功能。例如,在运行 JAR 文件的同时将标准输出和错误输出重定向至目标文件。 ```bash nohup java -jar your-app.jar > output.log 2>&1 & ``` 上述命令中: - `>` 表示将标准输出(stdout)写入到 `output.log` 文件中[^2]。 - `2>&1` 表示将标准错误输出(stderr)也合并到标准输出流中[^3]。 - `&` 表示将整个命令放入后台运行。 这种方法适用于不需要动态调整输出位置的应用场景。 --- #### 方法二:通过 `-D` 参数设置系统属性控制输出路径 如果希望更灵活地定义输出文件的位置,则可以在启动 JAR 文件时传递自定义的系统属性给 JVM。假设您的应用支持读取某个系统属性作为输出目录或文件名,那么可以这样调用: ```bash java -Doutput.file=path/to/output.txt -jar your-app.jar ``` 在此情况下: - `-Doutput.file=path/to/output.txt` 设置了一个名为 `output.file` 的系统属性,其值为期望的目标文件路径[^4]。 - 应用程序需在其代码中获取此属性并通过它决定实际保存数据的地方。例如,可通过如下方式访问该属性: ```java String outputPath = System.getProperty("output.file", "default_output_path"); // 如果未提供 output.file 属性,默认使用 default_output_path System.out.println("Output will be written to: " + outputPath); ``` 这种做法更加通用且易于维护,尤其适合复杂的企业级项目。 --- #### 综合案例分析 当需要长期运行的服务型 Java 程序时,通常会结合以上两者来完成部署工作。比如先停止旧版本服务再启动新实例,并记录日志以便后续排查问题: ```bash # 杀死当前正在运行的老版进程 pkill -f old-version.jar # 启动新版 jar 并把所有打印信息存档 nohup java -Dlog.dir=/var/log/myapp -jar new-version.jar > app.log 2>&1 & ``` 这里不仅指定了日志存储的具体地址 `/var/log/myapp` 还保留了一份完整的运行状态副本于 `app.log` 中[^5]。 --- ### 注意事项 无论采用哪种方案都应确保所选路径具有足够的权限供写入操作顺利完成;另外对于生产环境而言建议定期清理过期的日志以免占用过多磁盘空间。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值