Linux中nohup與&的用法和區(qū)別詳解
示例 :
我們用python代碼loop_hello.py做示例,代碼的作用是循環(huán)輸出循環(huán)次數(shù)和hello world!,每次輸出后sleep 1秒
示例代碼如下:
import time def main(): i = 0 while True: i += 1 print('%d: hello world!' %(i)) time.sleep(1) if '__main__' == __name__: main()
運(yùn)行l(wèi)oop_hello.py,輸出結(jié)果如下:
程序每隔一秒會(huì)在終端輸出一個(gè)字符串,此時(shí)如果鍵入Ctrl+C ,程序會(huì)收到一個(gè)SIGINT信號(hào),如果不做特殊處理,程序的默認(rèn)行為是終止(如上圖)。
&
使用 python loop_hello.py &,效果如下所示:
首先會(huì)在終端顯示進(jìn)程號(hào)是2367
鍵入Ctrl + C,發(fā)出SIGINT信號(hào),程序會(huì)繼續(xù)運(yùn)行
關(guān)掉session,程序會(huì)收到一個(gè)SIGHUP信號(hào),通過(guò)ps aux | grep loop_hello.py可以看到,進(jìn)程2367也關(guān)閉了
nohup
使用nohup python loop_hello.py,效果如下:
- 前臺(tái)沒(méi)有出現(xiàn)進(jìn)程號(hào)
- 有一個(gè)“忽略輸入并把輸出追加到"nohup.out"”的提示
- hello的輸出也沒(méi)有出現(xiàn)在前臺(tái)
如果關(guān)掉session,程序會(huì)不會(huì)關(guān)閉呢?
- 使用ps aux | grep loop_hello查看進(jìn)程號(hào)
- 關(guān)掉session,程序會(huì)收到一個(gè)SIGHUP信號(hào)
- 再次使用ps aux | grep loop_hello,發(fā)現(xiàn)進(jìn)程仍然存在
- kill掉進(jìn)程
測(cè)試一下Ctrl +C
使用nohup啟動(dòng)loop_hello.py,如果鍵入Ctrl+C ,程序收到SIGINT信號(hào)后,直接關(guān)閉了
&和nohup同時(shí)使用
使用nohup python loop_hello.py &運(yùn)行程序,效果如下:
鍵入Ctrl + C,發(fā)送SIGINT信號(hào) 使用ps aux查看,進(jìn)程仍然存在
關(guān)閉session,發(fā)送SIGHUP信號(hào) 使用ps aux查看,進(jìn)程依然存在
如果想要終止進(jìn)程的話,只能使用kill了
總結(jié) :
使用&后臺(tái)運(yùn)行程序:
- 結(jié)果會(huì)輸出到終端
- 使用Ctrl + C發(fā)送SIGINT信號(hào),程序免疫
- 關(guān)閉session發(fā)送SIGHUP信號(hào),程序關(guān)閉
使用nohup運(yùn)行程序:
- 結(jié)果默認(rèn)會(huì)輸出到nohup.out
- 使用Ctrl + C發(fā)送SIGINT信號(hào),程序關(guān)閉
- 關(guān)閉session發(fā)送SIGHUP信號(hào),程序免疫
平日線上經(jīng)常使用nohup和&配合來(lái)啟動(dòng)程序:
- 同時(shí)免疫SIGINT和SIGHUP信號(hào)
好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Linux進(jìn)程間通信(IPC)的幾種方式總結(jié)
進(jìn)程間通信是指至少兩個(gè)進(jìn)程或線程間傳送數(shù)據(jù)或信號(hào)的一些技術(shù)或方法,每個(gè)進(jìn)程都有自己的一部分獨(dú)立的系統(tǒng)資源,彼此是隔離的,為了能使不同的進(jìn)程互相訪問(wèn)資源并進(jìn)行協(xié)調(diào)工作,才有了進(jìn)程間通信,本文就給大家介紹幾種Linux進(jìn)程間通信的方式,需要的朋友可以參考下2023-09-09詳解linux電源管理驅(qū)動(dòng)編寫(xiě)
這篇文章主要介紹了詳解linux電源管理驅(qū)動(dòng)編寫(xiě),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04Linux下關(guān)于mtrace工具排查內(nèi)存泄露的問(wèn)題
這篇文章主要介紹了Linux下關(guān)于mtrace工具排查內(nèi)存泄露的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09linux ubuntu中安裝、卸載和刪除python-igraph的方法教程
igraph是一個(gè)進(jìn)行圖計(jì)算和社交網(wǎng)絡(luò)分析的軟件包,支持python語(yǔ)言。下面這篇文章主要給大家介紹了關(guān)于在linux ubuntu中安裝、卸載和刪除python-igraph的方法教程,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。2017-11-11Apache啟動(dòng)提示錯(cuò)誤undefined symbol: libiconv_open解決方法
這篇文章主要介紹了Apache啟動(dòng)提示錯(cuò)誤undefined symbol: libiconv_open解決方法,需要的朋友可以參考下2015-06-06linux如何通過(guò)防火墻iptables做隔離端口的腳本
這篇文章主要介紹了linux如何通過(guò)防火墻iptables做隔離端口的腳本問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06CentOS 7.3配置Nginx虛擬主機(jī)的方法步驟
這篇文章主要介紹了CentOS 7.3配置Nginx虛擬主機(jī)的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-02-02