雷火电竞-中国电竞赛事及体育赛事平台

歡迎來到入門教程網(wǎng)!

Linux/apache

當前位置:主頁 > 服務器 > Linux/apache >

Linux中nohup與&的用法和區(qū)別詳解

來源:本站原創(chuàng)|時間:2020-01-10|欄目:Linux/apache|點擊:

示例 :

我們用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()

運行l(wèi)oop_hello.py,輸出結果如下:

程序每隔一秒會在終端輸出一個字符串,此時如果鍵入Ctrl+C ,程序會收到一個SIGINT信號,如果不做特殊處理,程序的默認行為是終止(如上圖)。

&

使用 python loop_hello.py &,效果如下所示:

首先會在終端顯示進程號是2367

鍵入Ctrl + C,發(fā)出SIGINT信號,程序會繼續(xù)運行

關掉session,程序會收到一個SIGHUP信號,通過ps aux | grep loop_hello.py可以看到,進程2367也關閉了

nohup

使用nohup python loop_hello.py,效果如下:

  1. 前臺沒有出現(xiàn)進程號
  2. 有一個“忽略輸入并把輸出追加到"nohup.out"”的提示
  3. hello的輸出也沒有出現(xiàn)在前臺

如果關掉session,程序會不會關閉呢?

  1. 使用ps aux | grep loop_hello查看進程號
  2. 關掉session,程序會收到一個SIGHUP信號
  3. 再次使用ps aux | grep loop_hello,發(fā)現(xiàn)進程仍然存在
  4. kill掉進程

測試一下Ctrl +C

使用nohup啟動loop_hello.py,如果鍵入Ctrl+C ,程序收到SIGINT信號后,直接關閉了

&和nohup同時使用

使用nohup python loop_hello.py &運行程序,效果如下:

鍵入Ctrl + C,發(fā)送SIGINT信號 使用ps aux查看,進程仍然存在

關閉session,發(fā)送SIGHUP信號 使用ps aux查看,進程依然存在

如果想要終止進程的話,只能使用kill了

總結 :

使用&后臺運行程序:

  1. 結果會輸出到終端
  2. 使用Ctrl + C發(fā)送SIGINT信號,程序免疫
  3. 關閉session發(fā)送SIGHUP信號,程序關閉

使用nohup運行程序:

  1. 結果默認會輸出到nohup.out
  2. 使用Ctrl + C發(fā)送SIGINT信號,程序關閉
  3. 關閉session發(fā)送SIGHUP信號,程序免疫

平日線上經(jīng)常使用nohup和&配合來啟動程序:

  1. 同時免疫SIGINT和SIGHUP信號

好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對我們的支持。

上一篇:Centos7 下安裝python3及卸載的教程

欄    目:Linux/apache

下一篇:CentOS7系統(tǒng)增加swap的操作方法實例

本文標題:Linux中nohup與&的用法和區(qū)別詳解

本文地址:http://www.jygsgssxh.com/a1/Linux_apache/10765.html

網(wǎng)頁制作CMS教程網(wǎng)絡編程軟件編程腳本語言數(shù)據(jù)庫服務器

如果侵犯了您的權利,請與我們聯(lián)系,我們將在24小時內進行處理、任何非本站因素導致的法律后果,本站均不負任何責任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權所有