> 进程管理 > nohup

nohup: 登出后继续运行

一个工具,即使终端关闭或SSH连接断开,也能让命令继续运行而不终止。对于需要在后台长时间运行的任务(如启动服务器、大文件下载、批处理作业等)至关重要。

nohup 是什么?

nohup 是 'No Hang Up' 的缩写,意味着它会忽略挂断信号(HUP 信号)并执行命令。通常,关闭终端窗口也会终止正在运行的程序,但使用 nohup 可以像盾牌一样阻止这种情况。

3 个核心概念

  • 忽略 HUP 信号: 忽略用户登出时系统发送的终止信号(SIGHUP),使进程保持运行。
  • nohup.out: 如果未指定单独的保存文件,执行结果(输出内容)将自动保存到 `nohup.out` 文件中。
  • & (后台运行): 单独使用 nohup 会占用终端。通常在命令末尾加上 `&` 将其发送到后台。

主要语法和选项 (Shell)

nohup 本身没有复杂的选项。它通过结合**要执行的命令**和**重定向(指定输出方向)**来使用。

1. 基本执行配置

2. 日志(输出)管理

3. 帮助

生成的命令:

请尝试组合命令。

描述:

`nohup` 执行命令。

通过组合这些选项,您可以与 AI 一起虚拟地执行命令。

使用场景示例

实际工作中常用的 nohup 模式。

最基本的使用方法

nohup ./backup.sh &

在后台运行脚本。输出将累积在 `nohup.out` 中。

指定日志文件名(推荐)

nohup python3 app.py > my-app.log 2>&1 &

将日志保存到 `my-app.log` 而不是 `nohup.out`。`2>&1` 表示将错误消息也保存到同一个文件。

不保存日志运行

nohup ./heavy-task.sh > /dev/null 2>&1 &

当不需要输出内容或输出过多可能导致磁盘空间不足时,将输出丢弃到 `/dev/null`。

查找正在运行的 nohup 进程

ps -ef | grep app.py

使用 `ps` 命令查看正在运行的进程。

安装

nohup 是 'GNU Coreutils' 中包含的基本命令,几乎所有 Linux 发行版都已预装。

安装确认

大多数情况下无需单独安装。可以使用以下命令确认是否已安装。

查看版本

nohup --version

提示与注意事项

有用提示

  • 已经运行的任务怎么办?: 如果忘记使用 nohup 而直接运行了任务,可以先用 `Ctrl+z` 暂停,然后用 `bg` 切换到后台,最后使用 `disown -h %1` 命令来达到 nohup 的效果。
  • 终止方法: 通过 nohup 运行的进程无法用 `Ctrl+c` 终止。需要使用 `ps -ef | grep [名称]` 查找 PID(进程ID),然后用 `kill -9 [PID]` 命令终止。
  • 注意磁盘空间: 长时间运行的程序如果持续向 `nohup.out` 写入日志,文件可能会变得巨大,导致服务器停止。请定期清空或使用 `/dev/null`。

相关命令

功能上相似或经常一起使用的命令。



相同类别命令