nohup 程序 >/dev/null 2>&1 &
关键在于最后的 >/dev/null 2>&1 部分,/dev/null是一个虚拟的空设备(类似物理中的黑洞),任何输出信息被重定向到该设备后,将会石沉大海
>/dev/null 表示将标准输出信息重定向到"黑洞"
2>&1 表示将标准错误重定向到标准输出(由于标准输出已经定向到“黑洞”了,即:标准输出此时也是"黑洞",再将标准错误输出定向到标准输出,相当于错误输出也被定向至“黑洞”)
nohup和&启动程序区别
nohup: no hang up,忽略挂断信号
sigint: signal interrupt,ctrl+c会发送此信号
sighup: signal hang up,关闭终端会发送此挂断信号
&: 放在执行命令最后,使启动的程序忽略sigint信号(忽略ctrl+c)
所以最终的结果就是使用nohup启动的程序可以使用ctrl+c关闭,关闭终端无法终止程序,使用&启动的程序无法使用ctrl+c关闭,关闭终端可以使程序关闭,同时使用nohup和&启动的程序,ctrl+c和关闭终端都无法关闭。
实际使用例子就是RocketMQ启动命令:nohup sh bin/mqnamesrv &
sh命令使用来实行shell脚本的命令