【linux】nohup启动服务

nohup 是一个命令行工具,用于在用户注销后继续运行命令。它的名字来源于 “no hang up”(不断开连接)。使用 nohup 启动服务意味着即使你关闭终端或注销用户,服务仍然会继续运行。

为什么需要 nohup

在 Linux 或 Unix 系统中,当你在终端中启动一个后台进程时,如果关闭终端或注销用户,该进程通常会被终止。nohup 命令可以防止这种情况发生,确保进程在后台持续运行。

使用方法

假设你的服务程序名为 service,你可以使用以下命令启动它:

nohup ./service &
  • nohup:告诉系统不要在终端关闭时挂起进程。
  • ./service:启动你的服务程序。
  • &:将进程放到后台运行。

输出重定向

默认情况下,nohup 会将标准输出和标准错误重定向到一个名为 nohup.out 的文件中。你可以指定其他文件来存储输出:

nohup ./service > output.log 2>&1 &
  • >:将标准输出重定向到 output.log 文件。
  • 2>&1:将标准错误也重定向到标准输出(即 output.log)。
  • &:将进程放到后台运行。

示例

假设你有一个 C++ 服务程序 service,你可以这样启动它:

nohup ./service > service.log 2>&1 &

这会启动服务,并将所有输出(包括错误信息)重定向到 service.log 文件中。

查看服务状态

你可以使用以下命令查看服务是否正在运行:

ps aux | grep service

如果服务正在运行,你会看到类似以下的输出:

user     1234  0.0  0.1  123456  12345 ?        Ssl  12:34   0:00 ./service

停止服务

要停止服务,你可以使用 kill 命令。首先找到服务的进程 ID(PID):

ps aux | grep service

然后使用 kill 命令停止服务:

kill 1234

如果服务没有响应,可以使用 kill -9 强制停止:

kill -9 1234

总结

nohup 是一个非常有用的工具,用于在后台启动服务并确保服务在终端关闭后继续运行。通过重定向输出,你可以方便地记录服务的日志。

posted @ 2025-08-08 16:07  仰望星河Leon  阅读(50)  评论(0)    收藏  举报