自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux運(yùn)維之,關(guān)閉終端,程序后臺(tái)運(yùn)行,我有5種方法你呢?

系統(tǒng) Linux
我們?cè)谑褂胠inux時(shí),會(huì)經(jīng)常要把一個(gè)程序放到后臺(tái)運(yùn)行,這時(shí)候就需要在程序的最后使用【&】符號(hào),但是當(dāng)直接關(guān)閉這個(gè)終端時(shí),程序就會(huì)退出,下面我介紹5種方法,在關(guān)閉終端后程序還繼續(xù)運(yùn)行。

前言

我們?cè)谑褂胠inux時(shí),會(huì)經(jīng)常要把一個(gè)程序放到后臺(tái)運(yùn)行,這時(shí)候就需要在程序的最后使用【&】符號(hào),但是當(dāng)直接關(guān)閉這個(gè)終端時(shí),程序就會(huì)退出,下面我介紹5種方法,在關(guān)閉終端后程序還繼續(xù)運(yùn)行。

[[340801]]

思考

首先要考慮一個(gè)問題,直接關(guān)閉終端為什么后臺(tái)程序就退出了?那是因?yàn)橹苯雨P(guān)閉,終端會(huì)向當(dāng)前環(huán)境啟動(dòng)的后臺(tái)任務(wù)發(fā)送SIGHUP信號(hào),讓運(yùn)行的程序就掛起,那么忽略SIGHUP就行啦。

nohup

最常用的命令就是【nohup】,從名字就看出是否掛起運(yùn)行命令,關(guān)閉終端或者退出某個(gè)賬號(hào),進(jìn)程也繼續(xù)保持運(yùn)行狀態(tài),同樣要配合【&】符號(hào)一起使用。

用法:nohup Command [ Arg … ] [ & ]

  1. $ nohup sh test.sh &  
  2. # 直接關(guān)閉當(dāng)前終端,再打開一個(gè)查看  
  3. $ ps -few|grep test.sh 

從上面的可以看出,我們運(yùn)行的test.sh的父進(jìn)程變成了【PID 1】.,由linux主進(jìn)程接管。

setsid

nohup是忽略SIGHUP信號(hào),有沒其他的思路嗎?

setip命令可以重新打開了會(huì)話,繼承了父進(jìn)程組的ID,脫離了父進(jìn)程的控制。從下圖可以看到,test.sh腳本的父進(jìn)程已經(jīng)是init 1,此時(shí)不管關(guān)閉還是退出終端,已經(jīng)和后臺(tái)的程序沒有關(guān)系了。

  1. $ setsid sh test.sh 

 

setsid和nohup還有一個(gè)區(qū)別是,不需要使用&后臺(tái)符號(hào)。

exit

使用exit命令退出終端,我們的程序還是會(huì)繼續(xù)運(yùn)行,這是為什么呢?

這是因?yàn)槭褂胑xit命令退出終端時(shí)不會(huì)向終端所屬任務(wù)發(fā)SIGHUP信號(hào),是huponexit 配置項(xiàng)控制的,默認(rèn)是off,可以使用shopt 命令查看。

  1. [root@api ~]# shopt |grep huponexit  
  2. huponexit off 

將huponexit 配置成on,再次使用exit命令退出,所屬的任務(wù)就會(huì)跟隨退出。

  1. [root@api ~]# shopt -s huponexit  
  2. [root@api ~]# shopt |grep huponexit  
  3. huponexit on 

trap

trap命令linux內(nèi)置的命令,接收到指定信號(hào)時(shí)將要采取的行動(dòng),后是要處理的信號(hào)名,常見的信號(hào)如下:

當(dāng)一個(gè)腳本要后臺(tái),同樣不希望終端退出而關(guān)閉程序,我們可以在的腳本中增加trap命令,來忽略SIGHUP信號(hào)(掛起進(jìn)程)。

  1.  #!/bin/sh  
  2. trap "" HUP  
  3. while true;do  
  4. date >> /root/test.txt  
  5. sleep 1  
  6. done 

Linux screen命令用于多重視窗管理程序,它可以創(chuàng)建一個(gè)終端,讓程序在里面運(yùn)行

  1. screen sh test.sh & 

 

從示例可以看出,test腳本的父進(jìn)程是screen終端進(jìn)程,而screen終端的父進(jìn)程PID1,同樣完成了后臺(tái)進(jìn)程的運(yùn)行。

總結(jié)

至此,我們完成了5種linux程序后臺(tái)運(yùn)行的方法,同樣是不需要關(guān)心終端是否關(guān)閉,你還知道哪些linux后臺(tái)運(yùn)行程序的方法?

責(zé)任編輯:未麗燕 來源: 今日頭條
相關(guān)推薦

2019-01-21 10:34:13

Linux運(yùn)算命令

2020-05-21 15:20:27

Linux終端系統(tǒng)

2015-01-27 23:21:53

Linux終端

2019-04-29 09:19:04

Linux命令行

2010-01-27 09:53:37

2010-07-21 16:23:09

運(yùn)行telnet程序

2011-11-14 09:17:14

Linux運(yùn)維ClusterShel

2017-11-20 22:28:43

程序員源代碼編程

2019-06-04 15:34:05

WindowsLinuxLinux命令

2021-11-19 10:10:14

手機(jī)移動(dòng)設(shè)備網(wǎng)絡(luò)攻擊

2011-03-21 17:07:37

2015-11-18 11:56:23

Linux

2011-01-04 14:27:50

安裝linux方法

2019-03-27 11:30:30

Linux終端密碼生成器

2015-09-10 16:45:39

運(yùn)維服務(wù)器

2017-12-22 08:39:28

程序員代碼BUG

2022-11-02 09:44:20

Linux運(yùn)維json

2020-11-16 15:51:54

Kubernetes

2020-05-28 13:33:30

React Hook前端開發(fā)

2018-11-01 10:10:35

網(wǎng)絡(luò)安全網(wǎng)絡(luò)攻擊網(wǎng)絡(luò)威脅
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)