Linux 下 Java JAR 包后台运行指南
在服务器运维中,我们经常需要把 Java 应用挂起运行,确保终端关闭后服务不中断。这时候 nohup 命令就是最常用的工具。
nohup 的基本用法
nohup 全称是 "No Hang Up",意思是忽略挂断信号。当你退出账户或关闭终端时,程序依然会在后台继续跑。
默认情况下,执行作业时所有输出会被重定向到当前目录下的 nohup.out 文件中。有时候我们更希望日志集中管理,比如统一存到 logs/ 目录下,同时又不想生成那个默认的 nohup.out 文件。
避免生成 nohup.out
如果你直接运行 nohup java -jar shareniu.jar &,确实会生成 nohup.out。要解决这个问题,关键在于显式地重定向标准输出和错误流。
正确的写法是将标准输出 (>) 指向你的日志文件,同时将标准错误 (2>&1) 也合并过去:
nohup java -jar shareniu.jar > logs/myserver.out 2>&1 &
这里有个细节:2>&1 的意思是把标准错误(文件描述符 2)重定向到标准输出(文件描述符 1)当前指向的地方。这样既指定了日志路径,又避免了系统自动创建 nohup.out。
查看端口占用的线程
启动服务后,确认进程是否真的在监听预期端口也很重要。我们可以用 netstat 配合 grep 来快速定位。
假设我们要查 8080 端口的占用情况:
netstat -nlp | grep :8080
这条命令会列出该端口对应的 PID 和进程名,方便后续进行 kill 或监控操作。如果是在生产环境,建议加上 -tunap 参数获取更详细的信息,不过基础排查上述命令已经足够。
小结
后台运行 Java 应用时,注意输出重定向能保持工作区整洁;配合端口检查命令,能快速验证服务状态。这些基础命令虽然简单,但在日常排查中非常实用。

