nohup 和 & 的作用
相同点
nohup
和&
都是用于在 Linux/Unix 系统中将一个进程放到后台运行的工具,但它们的功能有所不同。
不同点
&
是在命令行中使用的一个特殊字符,用于将一个命令放到后台运行。例如,如果你想在后台运行一个长时间运行的程序,你可以在命令的末尾加上&
,这样程序就会在后台运行,而你可以继续在命令行中执行其他任务。但是,如果你关闭了终端窗口,这个后台进程也会被关闭。
nohup
是一个命令,用于在运行命令时忽略挂起信号(SIGHUP)。当你在命令行中运行一个程序时,如果你关闭了终端窗口或者与终端窗口的连接断开,这个程序就会收到一个挂起信号(SIGHUP),并且默认情况下会被终止。nohup
命令可以让你忽略这个信号,使得你的程序在后台运行,即使你关闭了终端窗口或与终端窗口的连接断开,这个程序也会继续运行。例如,你可以使用以下命令来在后台运行一个长时间运行的程序,并且忽略挂起信号:
nohup long_running_program &
因此,nohup
可以让你在后台运行一个长时间运行的程序,并且即使你关闭了终端窗口或与终端窗口的连接断开,这个程序也会继续运行。
一定同时使用吗?
nohup
和&
不一定需要一起使用,它们可以单独使用,也可以组合使用。
如果你想让一个命令在后台运行,并且不希望在关闭终端窗口或与终端窗口的连接断开时终止这个命令,你可以使用nohup
命令。例如:
nohup long_running_command &
这个命令会在后台运行long_running_command
命令,并且不会因为关闭终端窗口或与终端窗口的连接断开而终止。
如果你只是想让一个命令在后台运行,而不需要在关闭终端窗口或与终端窗口的连接断开时继续运行,你可以使用&
符号。例如:
long_running_command &
这个命令会在后台运行long_running_command
命令,但是如果你关闭终端窗口或与终端窗口的连接断开,这个命令也会终止。
因此,nohup
和&
可以单独使用,也可以组合使用,具体取决于你的需求。