nohup
命令和 &
符号在 Linux 和 Unix 系统中都用于在后台运行命令,但它们的作用和使用场景有所不同。
nohup
命令:
nohup
是 “no hang up” 的缩写,它的作用是让命令忽略挂起(SIGHUP)信号。通常情况下,当用户退出登录或者关闭终端时,所有在该终端下运行的进程都会收到 SIGHUP 信号,这会导致进程终止。使用 nohup
命令可以让进程在用户退出登录后继续运行。此外,nohup
还会将命令的输出重定向到一个名为 nohup.out
的文件中,除非指定了其他输出文件。使用示例:
nohup command &
&
符号:
&
符号用于将命令放入后台执行。当你在命令末尾加上 &
符号时,该命令会立即在后台运行,而不会等待前台进程完成。这对于那些不需要用户交互且可以长时间运行的命令非常有用。使用示例:
command &
总结:
nohup
主要用于忽略挂起信号,使得进程在用户退出登录后仍然运行,并将输出重定向到文件。&
主要用于将命令放入后台执行,但不提供忽略挂起信号的功能。通常情况下,你会将它们结合起来使用,以便在后台运行命令,同时忽略挂起信号,并将输出重定向到文件:
nohup command > output.log 2>&1 &
在这个例子中,command
在后台运行,忽略挂起信号,标准输出和标准错误都被重定向到 output.log
文件中。