1

原文地址:http://www.isee.xyz/a/5ea2a30dcfe99271725ca17b

nohup

nohupno hang up 不挂起的意思,如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。==该命令运行后是前台进程==

eg: nobup java -jar xxx.jar

&

&指让程序后台运行

eg:java -jar xxx.jar &

两者特点

使用nohup运行程序:

  • 结果默认会输出到nohup.out
  • 使用Ctrl + C发送SIGINT信号,程序关闭
  • 关闭session发送SIGHUP信号,程序免疫

使用&后台运行程序:

  • 结果会输出到终端
  • 使用Ctrl + C发送SIGINT信号,程序免疫
  • 关闭session发送SIGHUP信号,程序关闭

使用两者结合让程序后台运行

结合上面两个命令可以让程序后台运行,关闭窗口或者 ctrl+c 都不会中断进程

nohup java -jar xxx.jar &

日志文件的处理

类型 文件描述符 含义
标准输入(standard input) 0 从键盘输入
标准输出(standard output) 1 输出到屏幕(控制台)
错误输出(error output) 2 输出到屏幕(控制台)

使用nohup java -jar xxx.jar 命令会默认生成一个 nohup.out 文件来记录日志,标准输出和错误输出都会在该文件中。

如果我们要将日志输出到指定的其他文件时可以使用输出符号 >指定你的文件。例如将文件输出到log.txt 中可以使用命令:nohup java -jar xxx.jar 1>log.txt 字符1可以省略,这样标准输出日志会输出到 log.txt文件中,但是错误的日志怎么处理呢?我需要使用到==命令的重定向绑定==。修改命令为:nohup java -jar xxx.jar >log.txt 2>&1 & 将错误输出重定向到标准输出1中,这样标准输出和错误输出都会在log.txt文件中。

如果不需要日志该如何设置

有的时候程序中已经指定了日志的位置,那么就不需要nohup.out文件了,这时候要丢弃这个文件。

/dev/null代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称黑洞,

我们可以把日志输出指向这里: nohup java -jar xxx.jar >/dev/null 2>&1

总结

==后台启动并且不需要nohup.out文件的命令:==

nohup java -jar xxx.jar   >/dev/null 2>&1 &

大橙子
12 声望1 粉丝