Linux 下nohup 和 &有什麼聯絡呢?
背景
一直沒搞清楚 nohup 與 & 的區別, 看著公司裡遺留的shell, 也就稀裡糊塗地用著… 這是很糟糕的態度
結論放前面
&
使程式在後臺執行, 預設輸出到標準輸出(即當前螢幕), 除非重定向輸出.
此時忽略 SIGINT 訊號.
若關閉會話, 則程式會結束
nohup
程式仍舊在前臺跑, 預設輸出到 nohup.out .
此時程式忽略 SIGHUP 訊號, 關閉會話不影響程式.
Ctrl+c會使程式中斷
nohup + &
程式在後臺跑, 忽略 SIGINT, SIGHUP 訊號.
測試
repeat=${1:-20}
echo 迴圈次數 $repeat
counter=0
while [ $counter -lt
r
e
p
e
a
t
]
d
o
e
c
h
o
第
{counter}次迴圈
let “counter ++”
sleep 1
done
echo 結束迴圈
直接執行
[root@linuxidc tmp]# sh
迴圈次數 20
第0次迴圈
第1次迴圈
第2次迴圈
^C
此時不論是直接 Ctrl+c 或 關閉當前ssh連線, 都會導致程式停止
[root@linuxidc tmp]# sh
> test.out
^C
此時程式仍在前端跑, 檢視 test.out 檔案會發現在輸出, 此時不論是直接 Ctrl+C 或 關閉當前ssh連線, 都會導致程式停止
單獨使用 &
[root@linuxidc tmp]# sh
&
[1] 111418
[root@linuxidc tmp]# 迴圈次數 20
第0次迴圈
第1次迴圈
第2次迴圈
^C
[root@linuxidc tmp]# 第3次迴圈
第4次迴圈
第5次迴圈
^C
[root@linuxidc tmp]# 第6次迴圈
第7次迴圈
第8次迴圈
第9次迴圈
第10次迴圈
第11次迴圈
此時程式在後臺跑, 同時預設會輸出到螢幕上.
此時 Ctrl+c 無效, 即程式忽略了 SIGINT 訊號.
但若是直接關閉ssh連線(會話), 則該程式會被關閉, 這是因為程式受到了 SIGHUP 訊號影響.
系統對SIGHUP訊號的預設處理是終止收到該訊號的程式。所以若程式中沒有捕捉該訊號,當收到該訊號時,程式就會退出。
[root@linuxidc tmp]# sh
> test.out &
[4] 111758
[root@linuxidc tmp]#
使程式在後臺跑, 輸出被重定向到指定檔案
可用 jobs -l 獲取當前的所有後臺程式
[root@linuxidc tmp]# jobs -l
[2]+ 113043 Running sh
> /dev/null &
單獨使用 nohup
[root@linuxidc tmp]# nohup sh
> test.out 2>&1
執行後是在前端跑, 若關閉會話, 程式不受影響.
但此時 Ctrl+c會結束程式.
nohup + &
[root@linuxidc tmp]# nohup sh
&
[2] 112987
[root@linuxidc tmp]# nohup: 忽略輸入並把輸出追加到"nohup.out"
[root@linuxidc tmp]#
忽略 Ctrl+c 以及 會話關閉的影響, 程式可以在後臺持續執行.
若會話未關閉, 可透過 jobs -l 檢視當前該程式
[root@linuxidc tmp]# jobs -l
[1]+ 112987 Running nohup sh
&
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69911024/viewspace-2637510/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 區塊鏈和挖礦有什麼聯絡?區塊鏈
- python是什麼?與spyder有什麼聯絡?Python
- Python和爬蟲有什麼聯絡?Python學習!Python爬蟲
- Linux中軟連結和硬連結之間有什麼區別和聯絡?Linux
- 什麼是大資料?Python和大資料有什麼聯絡?大資料Python
- 雲端計算和區塊鏈有什麼聯絡?區塊鏈
- shell與Linux命令有什麼區別?它們之間有聯絡嗎?Linux
- Linux有什麼特點呢?Linux學習Linux
- 【Linux入門】FTP協議與SFTP協議是什麼?兩者有什麼聯絡?LinuxFTP協議
- 人工智慧和python之間有什麼聯絡?為何用python?人工智慧Python
- 精益生產和智慧製造之間有什麼聯絡?
- 等級保護和風險評估分別是什麼意思?有什麼聯絡?
- 什麼是DDoS攻擊?與CC攻擊有什麼聯絡?
- 知識點,JavaScript與Java之間有什麼區別和聯絡?JavaScript
- 網路安全和資訊保安有什麼聯絡?差異在哪裡?
- DNS與網站訪問有什麼聯絡?-VeCloudDNS網站Cloud
- File、Blob、ArrayBuffer等檔案類的物件有什麼區別和聯絡物件
- Centos和Redhat有什麼關係?Centos和Redhat的區別與聯絡介紹CentOSRedhat
- struct和typedef struct 有什麼不同呢?Struct
- 為什麼運維要學Python?它們之間有什麼聯絡?運維Python
- 人工智慧與Python有什麼聯絡?為何學Python?人工智慧Python
- 反向代理是什麼?和正向代理有什麼區別呢?
- SDK、API 和 app 之間的關係和聯絡是什麼?APIAPP
- Linux和Unix之間有什麼關聯?區別在哪裡?Linux
- defer有什麼用呢
- 學習大資料需要了解Python嗎?有什麼聯絡?大資料Python
- html和html5有什麼區別呢?HTML
- NFS服務有什麼優缺點呢?linux入門用什麼書NFSLinux
- 運維工程師有什麼職業發展呢?Linux運維工程師Linux
- CRM系統中的聯絡人是什麼?如何進行聯絡人管理?
- CDN和CDN加速有什麼關聯
- FPGA和微控制器有什麼區別呢?FPGA
- Linux和Windows有什麼區別啊?Linux怎麼樣?LinuxWindows
- 【網路安全入門】DDOS攻擊和DOS攻擊之間有什麼區別及聯絡?
- Linux和Unix有什麼不同之處?Linux
- linux和ubuntu區別是什麼?有什麼關係?LinuxUbuntu
- Linux中apt是什麼?和Dpkg有什麼關係?LinuxAPT
- XML和HTML有什麼區別?兩者之間有什麼關聯?XMLHTML