背景
一直沒搞清楚 nohup 與 & 的區(qū)別, 看著公司里遺留的shell, 也就稀里糊涂地用著… 這是很糟糕的態(tài)度
結(jié)論放前面
&
使進(jìn)程在后臺運(yùn)行, 默認(rèn)輸出到標(biāo)準(zhǔn)輸出(即當(dāng)前屏幕), 除非重定向輸出.
此時忽略 SIGINT 信號.
若關(guān)閉會話, 則進(jìn)程會結(jié)束
nohup
進(jìn)程仍舊在前臺跑, 默認(rèn)輸出到 nohup.out .
此時進(jìn)程忽略 SIGHUP 信號, 關(guān)閉會話不影響進(jìn)程.
Ctrl+c會使進(jìn)程中斷
nohup + &
進(jìn)程在后臺跑, 忽略 SIGINT, SIGHUP 信號.
測試
repeat=${1:-20}
echo 循環(huán)次數(shù) $repeat
counter=0
while [ $counter -lt
r
e
p
e
a
t
]
d
o
e
c
h
o
第
repeat ] do echo 第
r
e
p
e
a
t
]
d
o
e
c
h
o
第
{counter}次循環(huán)
let “counter ++”
sleep 1
done
echo 結(jié)束循環(huán)
直接運(yùn)行
[root@linuxidc tmp]# sh
test.sh
循環(huán)次數(shù) 20
第0次循環(huán)
第1次循環(huán)
第2次循環(huán)
^C
此時不論是直接 Ctrl+c 或 關(guān)閉當(dāng)前ssh連接, 都會導(dǎo)致進(jìn)程停止
[root@linuxidc tmp]# sh
test.sh
> test.out
^C
此時進(jìn)程仍在前端跑, 查看 test.out 文件會發(fā)現(xiàn)在輸出, 此時不論是直接 Ctrl+C 或 關(guān)閉當(dāng)前ssh連接, 都會導(dǎo)致進(jìn)程停止
單獨(dú)使用 &
[root@linuxidc tmp]# sh
test.sh
&
[1] 111418
[root@linuxidc tmp]# 循環(huán)次數(shù) 20
第0次循環(huán)
第1次循環(huán)
第2次循環(huán)
^C
[root@linuxidc tmp]# 第3次循環(huán)
第4次循環(huán)
第5次循環(huán)
^C
[root@linuxidc tmp]# 第6次循環(huán)
第7次循環(huán)
第8次循環(huán)
第9次循環(huán)
第10次循環(huán)
第11次循環(huán)
此時進(jìn)程在后臺跑, 同時默認(rèn)會輸出到屏幕上.
此時 Ctrl+c 無效, 即進(jìn)程忽略了 SIGINT 信號.
但若是直接關(guān)閉ssh連接(會話), 則該進(jìn)程會被關(guān)閉, 這是因為進(jìn)程受到了 SIGHUP 信號影響.
系統(tǒng)對SIGHUP信號的默認(rèn)處理是終止收到該信號的進(jìn)程。所以若程序中沒有捕捉該信號,當(dāng)收到該信號時,進(jìn)程就會退出。
[root@linuxidc tmp]# sh
test.sh
> test.out &
[4] 111758
[root@linuxidc tmp]# http://www.iis7.com/a/lm/ftp/
使進(jìn)程在后臺跑, 輸出被重定向到指定文件
可用 jobs -l 獲取當(dāng)前的所有后臺進(jìn)程
[root@linuxidc tmp]# jobs -l
[2]+ 113043 Running sh
test.sh
> /dev/null &
單獨(dú)使用 nohup
[root@linuxidc tmp]# nohup sh
test.sh
> test.out 2>&1
運(yùn)行后是在前端跑, 若關(guān)閉會話, 進(jìn)程不受影響.
但此時 Ctrl+c會結(jié)束進(jìn)程.
nohup + &
[root@linuxidc tmp]# nohup sh
test.sh
&
[2] 112987
[root@linuxidc tmp]# nohup: 忽略輸入并把輸出追加到"nohup.out"
[root@linuxidc tmp]#
忽略 Ctrl+c 以及 會話關(guān)閉的影響, 進(jìn)程可以在后臺持續(xù)運(yùn)行.
若會話未關(guān)閉, 可通過 jobs -l 查看當(dāng)前該進(jìn)程
[root@linuxidc tmp]# jobs -l
[1]+ 112987 Running nohup sh
test.sh
&
站在用戶的角度思考問題,與客戶深入溝通,找到蜀山網(wǎng)站設(shè)計與蜀山網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站制作、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、主機(jī)域名、虛擬主機(jī)、企業(yè)郵箱。業(yè)務(wù)覆蓋蜀山地區(qū)。
新聞標(biāo)題:Linux下nohup和&有什么聯(lián)系呢?
網(wǎng)站網(wǎng)址:http://sd-ha.com/article30/popjso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、營銷型網(wǎng)站建設(shè)、做網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站排名、
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)