nohup是一個(gè)UNIX和Linux命令,用于在你退出shell之后繼續(xù)運(yùn)行指定的命令。nohup的名字來(lái)源于”no hang up”,表示即使你斷開了連接,命令仍然會(huì)運(yùn)行。
當(dāng)使用nohup運(yùn)行命令時(shí),命令的輸出默認(rèn)會(huì)被追加到一個(gè)名為nohup.out的文件中,除非你明確指定了其他的輸出文件。
要使用nohup來(lái)啟動(dòng)一個(gè)shell腳本(例如script.sh),你可以這樣操作:
nohup ./script.sh &
這里的&是將命令放到后臺(tái)運(yùn)行。
如果你想把輸出重定向到其他文件,例如output.log,可以這樣做:
nohup ./script.sh > output.log 2>&1 &
這個(gè)命令會(huì)將標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤都重定向到output.log。
注意:當(dāng)你使用nohup啟動(dòng)了一個(gè)后臺(tái)進(jìn)程后,該進(jìn)程的父進(jìn)程會(huì)成為init進(jìn)程(進(jìn)程 ID 為 1),這意味著即使你退出了shell,進(jìn)程仍然會(huì)繼續(xù)運(yùn)行。使用jobs命令不會(huì)顯示使用nohup啟動(dòng)的后臺(tái)進(jìn)程,因?yàn)檫@些進(jìn)程已經(jīng)與當(dāng)前shell脫鉤。要查看使用nohup啟動(dòng)的進(jìn)程,可以使用ps或者top命令。要結(jié)束這些進(jìn)程,可以使用kill命令。