linux shell

关注公众号 jb51net

关闭
首页 > 脚本专栏 > linux shell > Bash  nohup 与 & 区别

Bash 中 nohup 与 & 的区别及用法详解

作者:vortex5

在Bash中,`&`、`nohup`和`disown`各有用途:`&`用于后台运行命令,选择合适的工具可以实现后台任务的稳定运行,本文介绍Bash 中 nohup 与 & 的区别及用法,感兴趣的朋友一起看看吧

在 Bash 中,nohup& 都可以用来在后台运行命令,但它们的作用和用途各有不同。以下将详细介绍它们的特点、区别及适用场景。

1. &(后台运行)

& 是 Bash 的一个特殊符号,用于将命令放到后台执行。它的主要功能是让命令在后台运行,不会阻塞当前终端。

示例:

./long_running_script.sh &

上述命令会将脚本放到后台运行。但如果终端关闭(如断开 SSH 连接),脚本可能会被终止。

2. nohup(忽略挂起信号)

nohup 是一个命令,用于让进程忽略挂起信号(SIGHUP),从而确保进程在终端关闭后仍然能够继续运行。nohup 的名称来源于 “no hang up”(不挂起)。

示例:

nohup ./long_running_script.sh &

上述命令会确保脚本即使在终端关闭后也能继续运行,且输出默认会被重定向到 nohup.out 文件。

3. disown(取消作业控制)

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

特点:

示例:

./long_running_script.sh &
disown

上述命令先将脚本放到后台运行,然后通过 disown 将其从作业控制中移除,确保终端关闭后脚本继续运行。

区别对比

功能&nohupdisown
后台运行可结合 & 实现通常与 & 配合使用
是否依赖终端是(终端关闭会终止)否(忽略挂起信号)否(取消作业控制)
输出重定向否(默认输出到终端)默认重定向到 nohup.out(可更改)不影响输出
常用场景简单的后台任务长时间运行且需保持运行的任务已启动的后台任务需要保持运行

推荐用法

在实际场景中,如果希望命令在后台运行且在终端关闭后继续执行,可以结合使用以下命令:

nohup ./long_running_script.sh > output.log 2>&1 &

解释:

通过上述组合,可以安全地运行后台任务,并将输出记录到指定文件中,便于后续分析。

总结

选择适合的工具和组合方式,可以高效完成任务,同时保证系统的稳定性和可操作性。

到此这篇关于Bash 中 nohup 与 & 的区别及用法详解的文章就介绍到这了,更多相关Bash  nohup 与 & 区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

阅读全文