后台运行
nohup
是一个用于在Shell中运行命令时的工具,它的作用是忽略挂断信号(SIGHUP)并将命令放在后台运行。当用户注销或终止终端会话时,通常会向正在运行的进程发送SIGHUP信号,这将导致进程终止。nohup
命令可以防止这种情况发生,使得命令在后台继续运行。使用
nohup
的一般语法如下:其中,
command
是要运行的命令,arguments
是命令的参数,options
是命令的选项。最后的&
符号将命令放在后台运行。nohup
命令的输出会被重定向到当前目录下的nohup.out
文件中,除非手动指定了输出重定向到其他位置。使用
nohup
命令可以确保即使用户注销或关闭终端,被启动的命令仍然会继续运行,并且不受终端会话的影响。>/dev/null 2>&1 &
解释(丢弃输出,项目中日志框架输出不受影响,比如log4j需要配置一下)>/dev/null
是一个输出重定向的操作符,它将命令的标准输出(stdout)重定向到/dev/null
设备文件中。/dev/null
是一个特殊的设备文件,它会默默地丢弃一切写入它的内容,相当于一个黑洞。2>&1
是一个错误输出重定向的操作符,它将命令的标准错误输出(stderr)重定向到与标准输出相同的位置。也就是说,它将错误输出与标准输出合并在一起。最后的
&
符号将命令放在后台运行,即使当前终端会话结束,命令也会继续在后台运行。综合起来,
>/dev/null 2>&1 &
的意思是将命令的标准输出和标准错误输出都重定向到/dev/null
,并将命令放在后台运行。这样做可以使命令在后台默默地执行,并且不会在终端上产生任何输出。> ./output.log 2>&1 &
输出到output.log 中,
> ./output.log
是一个输出重定向操作符,它将命令的标准输出(stdout)重定向到名为 output.log
的文件中。这意味着命令的输出将被写入到 output.log
文件中,而不是显示在终端上。2>&1
是一个错误输出重定向操作符,它将命令的标准错误输出(stderr)重定向到与标准输出相同的位置。也就是说,它将错误输出与标准输出合并在一起,一同写入到 output.log
文件中。最后的
&
符号将命令放在后台运行,即使当前终端会话结束,命令也会继续在后台运行。sudo nohup java -jar -Xmx1G -Xms1G -Dspring.profiles.active=onldev jeecg-boot-module-system-3.3.0.jar > ./output.log 2>&1 &
命令会将 Java 应用程序以后台方式运行,并将标准输出和标准错误输出重定向到 output.log
文件中。这个命令对于 Log4j 的输出通常不会有直接的影响。Log4j 是一个日志框架,它在应用程序中使用特定的配置来控制日志的输出目标和格式。它通常会将日志输出到文件、控制台或其他目标,而不依赖于标准输出或标准错误输出。
所以java程序直接丢弃输出即可,使用log4j的就行
Loading...