溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux 下nohup 和 &有什么聯系呢?

發(fā)布時間:2020-08-19 07:00:10 來源:ITPUB博客 閱讀:155 作者:03ngnntds 欄目:建站服務器

背景
  一直沒搞清楚 nohup 與 & 的區(qū)別, 看著公司里遺留的shell, 也就稀里糊涂地用著… 這是很糟糕的態(tài)度
  結論放前面
  &
  使進程在后臺運行, 默認輸出到標準輸出(即當前屏幕), 除非重定向輸出.
  此時忽略 SIGINT 信號.
   若關閉會話, 則進程會結束
  nohup
  進程仍舊在前臺跑, 默認輸出到 nohup.out .
  此時進程忽略 SIGHUP 信號, 關閉會話不影響進程.
   Ctrl+c會使進程中斷
  nohup + &
  進程在后臺跑, 忽略 SIGINT, SIGHUP 信號.
  測試
  repeat=${1:-20}
  echo 循環(huán)次數 $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 結束循環(huán)
  直接運行
  [root@linuxidc tmp]# sh  test.sh
  循環(huán)次數 20
  第0次循環(huán)
  第1次循環(huán)
  第2次循環(huán)
  ^C
  此時不論是直接 Ctrl+c 或 關閉當前ssh連接, 都會導致進程停止
  [root@linuxidc tmp]# sh  test.sh  > test.out
  ^C
  此時進程仍在前端跑, 查看 test.out 文件會發(fā)現在輸出, 此時不論是直接 Ctrl+C 或 關閉當前ssh連接, 都會導致進程停止
  單獨使用 &
  [root@linuxidc tmp]# sh  test.sh  &
  [1] 111418
  [root@linuxidc tmp]# 循環(huán)次數 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)
  此時進程在后臺跑, 同時默認會輸出到屏幕上.
  此時 Ctrl+c 無效, 即進程忽略了 SIGINT 信號.
  但若是直接關閉ssh連接(會話), 則該進程會被關閉, 這是因為進程受到了 SIGHUP 信號影響.
  系統(tǒng)對SIGHUP信號的默認處理是終止收到該信號的進程。所以若程序中沒有捕捉該信號,當收到該信號時,進程就會退出。
  [root@linuxidc tmp]# sh  test.sh  > test.out &
  [4] 111758
  [root@linuxidc tmp]# http://www.iis7.com/a/lm/ftp/
  使進程在后臺跑, 輸出被重定向到指定文件
  可用 jobs -l 獲取當前的所有后臺進程
  [root@linuxidc tmp]# jobs -l
  [2]+ 113043 Running sh  test.sh  > /dev/null &
  單獨使用 nohup
  [root@linuxidc tmp]# nohup sh  test.sh  > test.out 2>&1
  運行后是在前端跑, 若關閉會話, 進程不受影響.
  但此時 Ctrl+c會結束進程.
  nohup + &
  [root@linuxidc tmp]# nohup sh  test.sh  &
  [2] 112987
  [root@linuxidc tmp]# nohup: 忽略輸入并把輸出追加到"nohup.out"
  [root@linuxidc tmp]#
  忽略 Ctrl+c 以及 會話關閉的影響, 進程可以在后臺持續(xù)運行.
  若會話未關閉, 可通過 jobs -l 查看當前該進程
  [root@linuxidc tmp]# jobs -l
  [1]+ 112987 Running nohup sh  test.sh  &

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI