nohup
(no hang-up的缩写)是一个在Unix和类Unix系统(如Debian)中用于在后台运行命令的实用程序,即使用户退出登录或关闭终端,该命令也会继续运行。它的工作原理主要基于以下几个方面:
nohup
命令会忽略SIGHUP(挂起)信号。nohup
后,这些进程不会收到SIGHUP信号,因此会继续运行。nohup
会将标准输出(stdout)和标准错误(stderr)重定向到一个名为nohup.out
的文件中。nohup
命令本身会在前台运行,但它启动的子进程会在后台执行。&
符号来显式地将命令放入后台运行。nohup
会创建一个新的进程组,并将子进程放入该组中。kill
命令时。nohup your_command &
这条命令会以后台模式运行your_command
,并且忽略挂起信号。输出会被重定向到当前目录下的nohup.out
文件中。
如果需要将输出重定向到其他文件,可以使用以下语法:
nohup your_command > output.log 2>&1 &
这会将标准输出和标准错误都重定向到output.log
文件中。
nohup
并不保证进程在所有情况下都能无限期地运行下去。例如,系统重启或电源故障等情况仍然可能导致进程终止。
总之,nohup
是一个非常有用的工具,特别适用于需要在后台长时间运行的任务,或者希望在用户退出登录后仍然保持运行的任务。