nohup
(全称为 “no hang up”),用于运行一个命令,使其在你退出 shell 或终端会话后继续运行。
基本语法
nohup command [arg1 ...] [&> output_file] &
command
是你想要运行的命令。[arg1 ...]
是该命令的参数。&> output_file
是一个可选的重定向,用于将命令的标准输出和错误输出都重定向到一个文件中。如果不指定,则默认会创建一个名为nohup.out
的文件来保存输出。&
在命令的末尾,用于将命令放到后台执行。
示例
- 运行一个长时间的任务
比如使用go 编译的一个可执行文件 go_test
,你可以使用 nohup
来运行它:
nohup ./go_test &
可以新开一个窗口或者当前窗口通过ps -ef | grep go_test
查询即可,如下显示已经在运行中
当你关闭终端或断开 SSH 连接时,该脚本将继续运行。
- 重定向输出
如果你想要将输出保存到特定的文件中,而不是默认的 nohup.out
nohup ./go_test > output.log 2>&1 &
或者使用 &>
的简写方式(在某些 shell 中可能不可用):
nohup ./go_test &> output.log &