window下的java -jar命令

发布于:2024-06-29 ⋅ 阅读:(20) ⋅ 点赞:(0)

@echo off
rem netstat -aon|findstr "8089" 
rem taskkill /f /pid 17796
rem tasklist | findstr java.exe
rem %1 mshta vbscript:CreateObject("WScript.Shell").Run("%~s0 ::",0,FALSE)(window.close)&&exit
rem java -Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxNewSize=512m  -jar srpboot-0.0.1-SNAPSHOT.jar >> StartupLog.log  2>&1 &
start javaw -Xms512m -Xmx1024m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:MaxNewSize=512m -jar srpboot-0.0.1-SNAPSHOT.jar &
exit

@Echo off,是指命令行窗口不打印脚本代码

rem是注释

javaw是后台运行jar包,正常来说这个命令就够了,异步执行了。但是不知道为什么我这不行,要加多一个start,start的作用是后台再打开一个窗口运行接下来的命令。

java -jar > NUL 2>&1

> NUL 2>&1 是一个在命令行中用于重定向输出的指令序列,具体作用如下:
> 是输出重定向符号,用于将命令的输出(默认为标准输出,即STDOUT)从默认的屏幕输出重定向到其他位置。
NUL 是Windows系统中的一个空设备文件,类似于Unix/Linux中的/dev/null。向NUL重定向意味着将输出丢弃,不显示在屏幕上也不保存到任何文件。
2> 表示错误输出(STDERR)重定向。
&1 表示将一个流(在这里是错误输出流2)重定向到另一个流(在这里是标准输出流1)相同的目标。因此,2>&1 的意思是把标准错误输出重定向到与标准输出相同的地方。
综上,> NUL 2>&1 的整体作用是将命令的正常输出(STDOUT)和错误输出(STDERR)都重定向到NUL,即同时丢弃命令的所有输出信息,既不显示在屏幕上也不保存,使得命令执行过程在视觉上显得“安静”。这对于那些不需要用户查看输出信息,或者希望避免输出干扰的场景非常有用,比如后台服务的启动脚本。

即使你在启动Java应用时使用了> NUL 2>&1来隐藏命令行窗口的输出,如果您的Java应用内部集成了日志框架(如log4j、logback、SLF4J搭配其实现等),并且配置得当,日志依然会被记录下来。
日志框架允许独立于系统输出(System.out和System.err)的配置,它们可以直接将日志信息写入到文件、数据库、网络Socket等目标。只要在日志框架的配置文件中设置了日志输出路径和级别,无论命令行输出是否被重定向或屏蔽,日志框架都会遵循其自身配置进行日志记录。
因此,即使命令行输出被重定向到NUL,不影响日志框架按照配置将日志信息记录到指定的日志文件中。这保证了应用的运行日志、错误信息等重要数据能够被妥善保存,便于后续分析和故障排查。

java -jar & 

在命令行中,java -Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxNewSize=512m -jar srpboot-0.0.1-SNAPSHOT.jar & 中的&符号具有特殊意义,它是一个命令行操作符,用于在Unix/Linux shell或Windows命令提示符中实现命令的后台执行。
具体作用如下:
后台执行:当你在命令的末尾添加&,这条命令会在后台启动,意味着命令行终端不会等待该命令执行完成,而是立即返回,允许你继续输入其他命令或关闭终端窗口,而不会中断正在执行的命令或进程。
不阻塞当前shell:这意味着启动Java应用后,shell会立即获得控制权,不会因为Java应用的运行而被阻塞,这对于需要启动长时间运行的服务或应用尤为有用,因为你可以在不中断应用运行的情况下继续使用当前的命令行界面。
注意,使用&启动的进程将成为一个守护进程,如果关闭了命令行窗口,通常不会影响这个后台进程的运行。但是,在某些图形界面的终端模拟器中,关闭窗口可能会导致后台进程被终止,这取决于具体的终端设置。
另外,关于参数-XX:PermSize和-XX:MaxPermSize,这两个选项在Java 8及以后的版本中已经不再适用,因为永久代(PermGen)已经被元空间(Metaspace)取代。如果你使用的是Java 8及以上版本,应使用-XX:MetaspaceSize和-XX:MaxMetaspaceSize来控制元空间的大小。

说是这样说,但是实际上一点卵用没有。

中文的操作系统环境不知道是不是不支持mshta,反正跑不了这个。


网站公告

今日签到

点亮在社区的每一天
去签到