基礎(chǔ)
- 用途:不掛斷地運行命令
- 語法:nohup Command [ Arg ... ] [ & ]
- 描述:nohup 命令運行由 Command 參數(shù)和任何相關(guān)的 Arg 參數(shù)指定的命令贰军,忽略所有掛斷(SIGHUP)信號评姨。在注銷后使用 nohup 命令運行后臺中的程序巧鸭。要運行后臺中的 nohup 命令嘉熊,添加 & ( 表示“and”的符號)到命令的尾部。
- 操作系統(tǒng)中有三個常用的流:
0:標(biāo)準(zhǔn)輸入流 stdin
1:標(biāo)準(zhǔn)輸出流 stdout
2:標(biāo)準(zhǔn)錯誤流 stderr
一般當(dāng)我們用 > console.txt佣盒,實際是 1>console.txt的省略用法偿荷;
< console.txt 枝誊,實際是 0 < console.txt的省略用法况芒。
使用
- 實例
nohup ./start-dishi.sh >output 2>&1 &
解釋:
- 帶&的命令行,即使terminal(終端)關(guān)閉叶撒,或者電腦死機程序依然運行(前提是你把程序遞交到服務(wù)器上)牛柒;
-
2>&1的意思
這個意思是把標(biāo)準(zhǔn)錯誤(2)重定向到標(biāo)準(zhǔn)輸出中(1),而標(biāo)準(zhǔn)輸出又導(dǎo)入文件output里面痊乾,所以結(jié)果是標(biāo)準(zhǔn)錯誤和標(biāo)準(zhǔn)輸出都導(dǎo)入文件output里面了皮壁。 至于為什么需要將標(biāo)準(zhǔn)錯誤重定向到標(biāo)準(zhǔn)輸出的原因,那就歸結(jié)為標(biāo)準(zhǔn)錯誤沒有緩沖區(qū)哪审,而stdout有蛾魄。這就會導(dǎo)致 >output 2>output 文件output被兩次打開,而stdout和stderr將會競爭覆蓋湿滓,這肯定不是我門想要的. 這就是為什么有人會寫成: nohup ./command.sh >output 2>output出錯的原因了
補充
最后談一下/dev/null文件的作用滴须,這是一個無底洞,任何東西都可以定向到這里叽奥,但是卻無法打開扔水。所以一般很大的stdou和stderr當(dāng)你不關(guān)心的時候可以利用stdout和stderr定向到這里>./command.sh >/dev/null 2>&1