后臺(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 &
- 最后的& 表示后臺(tái)執(zhí)行
- 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