示例
nohup ./startserver.sh >output 2>&1 &
nohup 是不挂断的运行命令.
语法:nohup Command [ Arg … ] [ & ]
描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。
操作系统中有三个常用的流 :
0 : 标准输入流stdin
1 : 标准输出流stdout
2 : 标准错误流stderr
一般当我们用 > console.txt
实际上是 1 > console.txt
的省略用法; < console.txt
是0 < console.txt
的省略用法.
解释
nohup ./startserver.sh >output 2>&1 &
- 带 & 的命令行,意思是当terminal(终端)关闭之后 , 程序依然运行.
2>&1
意思是,把标准错误2重定向到标准输出1中,而标准输出又导入文件output中,所以结果是标准错误和标准输出都导入文件output中.至于为什么需要将标准错误重定向到标准输出的原因,那就归结为标准错误没有缓冲区,而stdout有.这就会导致>output 2> output
,文件output被两次打开,而stdout和stderr将会竞争覆盖.
一般很大的stdout和stderr当不关心的时候可以写成 :nohup ./startserver.sh > /dev/null 2>&1