nohup是一个用于在Shell中运行命令时的工具,它的作用是忽略挂断信号(SIGHUP)并将命令放在后台运行。当用户注销或终止终端会话时,通常会向正在运行的进程发送SIGHUP信号,这将导致进程终止。nohup命令可以防止这种情况发生,使得命令在后台继续运行。

使用nohup的一般语法如下:

nohup command [arguments] [options] &

其中,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 文件中。