在Linux中,nohup
命令和&
符号都用于在后台运行程序,但它们的工作方式和用途有所不同。
nohup
命令:
nohup
是"No Hang Up"的缩写,它的作用是在用户退出登录后继续运行指定的程序。当你使用nohup
命令启动一个程序时,该程序会忽略所有的挂起(SIGHUP)信号,这样即使你关闭了终端或者断开了SSH连接,程序也会继续运行。nohup
通常与输出重定向结合使用,将程序的输出保存到文件中,因为默认情况下,nohup
会将输出发送到名为nohup.out
的文件。例如:
nohup my_command > output.log 2>&1 &
这条命令会在后台运行my_command
,并将标准输出和标准错误都重定向到output.log
文件中。
&
符号:
&
符号用于将程序放入后台运行。当你在命令的末尾加上&
符号时,程序会在后台执行,而不会占用当前的终端。这意味着你可以继续在终端中执行其他命令,而不必等待后台程序完成。然而,如果关闭终端或者断开SSH连接,后台运行的程序通常会被终止。例如:
my_command &
这条命令会将my_command
放入后台运行,但是如果你退出登录,程序可能会被终止。
总结:
nohup
用于在用户退出登录后继续运行程序,并且忽略挂起信号。&
用于将程序放入后台运行,但不会阻止程序在终端关闭时被终止。nohup
和&
,并且重定向输出到文件。