在 linux 中,nohup 命令和 & 符号都用于在后台运行程序,但它们的功能和使用方式有所不同。
nohup 命令
nohup 是 “no hang up” 的缩写,旨在让进程忽略挂起(SIGHUP)信号。通常,当用户退出登录或关闭终端时,所有在该终端下启动的进程都会收到 SIGHUP 信号并终止。使用 nohup 可以使进程在用户退出登录后继续运行。
基本用法如下:
nohup command &
这里的 command 是你希望在后台运行的命令。& 符号用于将命令放入后台运行,而 nohup 确保即使终端关闭,命令也会继续运行。
nohup 还会默认将命令的输出重定向到一个名为 nohup.out 的文件中,除非指定了其他输出文件。
& 符号
& 符号用于将命令放入后台运行。当你在命令的末尾加上 &,shell 不会等待该命令执行完毕,而是立即返回并允许用户继续输入其他命令。
例如:
command &
这会让 command 在后台运行,但不会忽略 SIGHUP 信号。如果用户退出登录或关闭终端,该命令通常会被终止。
结合使用
通常,你会看到 nohup 和 & 一起使用,以确保命令在后台运行并且不受终端关闭的影响:
nohup command &
这样,即使用户退出登录或关闭终端,command 也会继续运行,并且输出会被重定向到 nohup.out 文件中。
总结
- nohup:用于忽略挂起信号,使进程在用户退出登录后继续运行。
- &:用于将命令放入后台运行,但不提供对挂起信号的防护。
- nohup &:结合了两者的功能,使命令在后台运行且不受终端关闭的影响。
希望这些解释能帮助你理解 nohup 命令和 & 符号在 Linux 中的不同用途。