Linux如何使用nohup命令

后臺(tái)執(zhí)行任務(wù)

nohup COMMAND > FILE 后臺(tái)執(zhí)行命令并將log輸出到文件中
nohup COMMAND & 后臺(tái)執(zhí)行命令并輸出log到當(dāng)前文件夾下
nohup ./start-dishi.sh >output 2>&1 &

  1. 最后的& 表示后臺(tái)執(zhí)行
  2. 2>&1的意思
      這個(gè)意思是把標(biāo)準(zhǔn)錯(cuò)誤(2)重定向到標(biāo)準(zhǔn)輸出中(1),而標(biāo)準(zhǔn)輸出又導(dǎo)入文件output里面,所以結(jié)果是標(biāo)準(zhǔn)錯(cuò)誤和標(biāo)準(zhǔn)輸出都導(dǎo)入文件output里面了。 至于為什么需要將標(biāo)準(zhǔn)錯(cuò)誤重定向到標(biāo)準(zhǔn)輸出的原因,那就歸結(jié)為標(biāo)準(zhǔn)錯(cuò)誤沒(méi)有緩沖區(qū),而stdout有。這就會(huì)導(dǎo)致 >output 2>output 文件output被兩次打開(kāi),而stdout和stderr將會(huì)競(jìng)爭(zhēng)覆蓋,這肯定不是我們想要的.
      這就是為什么有人會(huì)寫成: nohup ./command.sh >output 2>output出錯(cuò)的原因了

最后談一下/dev/null文件的作用,這是一個(gè)無(wú)底洞,任何東西都可以定向到這里,但是卻無(wú)法打開(kāi)。 所以一般很大的stdout和stderr當(dāng)你不關(guān)心的時(shí)候可以利用stdout和stderr定向到這里>./command.sh >/dev/null 2>&1

常用相關(guān)命令

tail
tail -f FILE 查看日志
tail -n100 nohup.log
tail -f `ls -t1|awk '{if (NR ==1) print}'` 查看當(dāng)前文件夾下最新更新文件的最新輸出

jobs
bg
fg

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容