nohup 是一个在 Unix 和 Linux 操作系统中广泛使用的命令,它的全称是 “no hang up”,即不挂起。当你在一个终端会话中运行一个命令或脚本,并且想要确保这个进程在退出终端或网络断开时仍然能够持续运行,这时就可以使用 nohup 命令。以下是 nohup 命令的常见用法:
基本用法:
nohup command &
这里的 command
是你想要在后台持续运行的命令或程序。末尾加上 &
符号是为了让命令在后台运行。
标准输出和错误输出重定向: 默认情况下,nohup 运行的命令的标准输出(stdout)和标准错误输出(stderr)会被重定向到一个名为 nohup.out
的文件中,如果当前目录下没有这个文件则会被创建。
如果你想自定义输出文件,可以这样操作:
nohup command > output.log 2>&1 &
在这个例子中,command
的标准输出被重定向到 output.log
文件,同时标准错误输出也被合并到标准输出并写入同一个文件。
附加选项: 虽然 nohup 本身没有额外的选项,但结合其他命令或 shell 特性,它可以实现更多功能。例如,如果你想禁止输出重定向到任何文件,可以这样做:
nohup command >/dev/null 2>&1 &
这将会丢弃所有输出,将标准输出和错误输出都发送到黑洞设备 /dev/null
。
实例:
- 后台运行一个脚本并记录输出:
nohup ./myscript.sh > myscript.log 2>&1 &
让一个服务在后台持续运行,即使关闭终端也不影响其运行:
nohup service_name &
总之,nohup 是一个非常实用的命令,它使得进程能够在用户退出终端后不受 SIGHUP 信号的影响而继续运行,对于长时间运行的任务或后台服务来说尤为有用。