Bash 中 nohup 与 & 的区别及用法剖析

[复制链接]
发表于 2025-11-5 07:51:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在 Bash 中,nohup 和 & 都可以用来在配景运行下令,但它们的作用和用途各有差别。以下将具体先容它们的特点、区别及实用场景。

1. &(配景运行)

& 是 Bash 的一个特殊符号,用于将下令放到配景实验。它的紧张功能是让下令在配景运行,不会壅闭当前终端。
特点:


  • 配景实验:下令会在配景运行,用户可以继续在当前终端实验其他利用。
  • 依靠终端:只管下令在配景运行,但它仍旧依靠于当前终端。假如终端关闭(比方 SSH 毗连断开),该配景进程大概会被克制。
  • 输出到终端:下令的尺度输出和错误输出仍旧发送到当前终端,大概导致屏幕紊乱。
示例:
  1. ./long_running_script.sh &
复制代码
上述下令会将脚本放到配景运行。但假如终端关闭(如断开 SSH 毗连),脚本大概会被克制。

2. nohup(忽略挂起信号)

nohup 是一个下令,用于让进程忽略挂起信号(SIGHUP),从而确保进程在终端关闭后仍旧可以大概继续运行。nohup 的名称泉源于 “no hang up”(不挂起)。
特点:


  • 忽略挂起信号:纵然终端关闭,进程也不会被克制。
  • 默认输出:假如未明白指定输出文件,nohup 会将尺度输出和错误输出重定向到文件 nohup.out。
  • 不肯定配景运行:nohup 自己不会将下令放到配景运行,但可以与 & 团结使用实现配景运行。
示例:
  1. nohup ./long_running_script.sh &
  2. amp;
复制代码
上述下令会确保脚本纵然在终端关闭后也能继续运行,且输出默认会被重定向到 nohup.out 文件。

3. disown(取消作业控制)

disown 是一个用于从当前终端的作业控制中移除配景进程的下令。它通常与 & 共同使用,确保进程在终端关闭后继续运行。
特点:


  • 通过 disown,配景进程将不再受当前终端的控制。
  • 一旦移除,终端关闭对该进程不会产生影响。
示例:
  1. ./long_running_script.sh &
  2. disown
复制代码
上述下令先将脚本放到配景运行,然后通过 disown 将其从作业控制中移除,确保终端关闭后脚本继续运行。

区别对比

功能&nohupdisown配景运行是可团结 & 实现通常与 & 共同使用是否依靠终端是(终端关闭会克制)否(忽略挂起信号)否(取消作业控制)输出重定向否(默认输出到终端)默认重定向到 nohup.out(可更改)不影响输出常用场景简朴的配景使命长时间运行且需保持运行的使命已启动的配景使命必要保持运行
保举用法

在实际场景中,假如渴望下令在配景运行且在终端关闭后继续实验,可以团结使用以下下令:
  1. nohup ./long_running_script.sh > output.log 2>&1 &
复制代码
表明:


  • nohup:确保进程不会因终端关闭而被克制。
  • > output.log:将尺度输出重定向到 output.log 文件。
  • 2>&1:将错误输出也重定向到雷同的文件。
  • &:将下令放到配景运行。
通过上述组合,可以安全地运行配景使命,并将输出纪录到指定文件中,便于后续分析。

总结


  • &:恰当不依靠终端关闭的简朴配景使命。
  • nohup:用于长时间运行的使命,克制受终端关闭影响。
  • disown:对已经在配景运行的使命提供额外的安全性,确保其不受终端控制。
选择恰当的工具和组合方式,可以高效完成使命,同时包管体系的稳固性和可利用性。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表