作为 Java 程序员,经常会面临一个选择,打完 jar 包,测试或者上线生产的时候,java –jar or no­hup java -jar?


java -jar a.jar &

直接启动 jar 文件,在当前会话进程中开启一个子进程来运行程序,这个子进程会随着会话进程的结束而结束。

这种情况适合短时间测试用。


nohup java -jar a.jar&

hangup (挂断),终端退出时会发送 hangup 信号来通知其关闭所有子进程。

no­hup (不挂断,忽略挂断信号)

no­hup 的使用是十分方便的,只需在要处理的命令前加上 no­hup 即可,标准输出和标准错误缺省会被重定向到 no­hup.out 文件中。

一般我们可在结尾加上 "&" 来将命令同时放入后台运行,也可用 ">file­name2>&1" 来更改缺省的重定向文件名。

这种情况适合在生产环境长时间运行。