欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關閉linux終端還讓程序繼續(xù)執(zhí)行的實現方式

 更新時間:2023年12月25日 11:13:28   作者:beeworkshop  
這篇文章主要介紹了關閉linux終端還讓程序繼續(xù)執(zhí)行的實現方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

一、前言

我們在使用linux時,會經常要把一個程序放到后臺運行,這時候就需要在程序的最后使用【&】符號,但是當直接關閉這個終端時,程序就會退出

下面我介紹5種方法,在關閉終端后程序還繼續(xù)運行。

二、思考

首先要考慮一個問題,直接關閉終端為什么后臺程序就退出了?

那是因為直接關閉,終端會向當前環(huán)境啟動的后臺任務發(fā)送SIGHUP信號,讓運行的程序掛起,那么忽略SIGHUP信號就行啦。

三、nohup

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

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

$ nohup sh test.sh &  
# 直接關閉當前終端,再打開一個查看  
$ ps -few|grep test.sh 

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

四、setsid

nohup是忽略SIGHUP信號,那有沒有其他的思路?

使用setsid命令可以使程序打開新的進程,該進程繼承了父進程組的ID。

從下圖可以看到,test.sh腳本的父進程已經是init 1,此時不管關閉還是退出終端,已經和后臺的程序沒有關系了。

$ setsid sh test.sh 

setsid與nohup的一個重要區(qū)別是:不需要使用&壓入后臺。

此法使運行的進程以root身份運行,多少有些安全隱患。

五、exit

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

這是因為使用exit命令退出終端時不會向終端所屬任務發(fā)SIGHUP信號,這是huponexit 配置項控制的,默認是off,可以使用shopt 命令查看。

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

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

[root@api ~]# shopt -s huponexit  
[root@api ~]# shopt |grep huponexit  
huponexit on 

六、trap

trap命令是linux內置的命令

trap [接收到指定信號時將要采取的行動] signal_spec

常見的信號如下:

信號描述
1SIGHP掛起進程
2SIGINT終止進程
3SIGQUIT停止進程
9SIGKILL無條件終止進程
15SIGTERM盡可能終止進程
17SIGSTOP無條件停止進程,但不是終止進程
18SIGTSTP停止或暫停進程,但不終止進程
19SIGCONT繼續(xù)運行終止的進程

當一個腳本要在后臺運行,不希望終端退出后關閉腳本程序,我們可以在的腳本中增加trap命令來忽略SIGHUP信號(掛起進程)。

#!/bin/bash
trap "" HUP  
while true;do  
	date >> /root/test.txt  
	sleep 1  
done 

七、screen

screen命令用于管理多個終端,它可以創(chuàng)建終端,讓程序在里面運行。

screen sh test.sh & 

從上圖可以看出,test.sh腳本的父進程是screen終端進程【PID 7806】,而screen終端的父進程【PID 1】,同樣可以實現后臺的運行。

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • CentOS環(huán)境下安裝Redis3.0及phpredis擴展測試示例

    CentOS環(huán)境下安裝Redis3.0及phpredis擴展測試示例

    這篇文章主要介紹了CentOS環(huán)境下安裝Redis3.0及phpredis擴展測試,結合實例形式分析了CentOS下Redis安裝相關步驟、命令及phpredis擴展的測試代碼,需要的朋友可以參考下
    2018-04-04
  • Linux之常見漏洞修復

    Linux之常見漏洞修復

    這篇文章主要介紹了Linux中的常見漏洞修復,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Linux上下行網速測試工具_speedtest-cli安裝使用方法

    Linux上下行網速測試工具_speedtest-cli安裝使用方法

    speedtest-cli是Linux下的一個上下行網速測試工具,是一個用Python寫的命令行腳本,需要的朋友可以參考下
    2017-03-03
  • linux如何編寫同步文件的腳本

    linux如何編寫同步文件的腳本

    這篇文章主要介紹了linux如何編寫同步文件的腳本問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • 解決Linux+Apache服務器URL區(qū)分大小寫問題

    解決Linux+Apache服務器URL區(qū)分大小寫問題

    Linux服務器的大小寫敏感有時候很不方便,在地址欄里一定要輸入準確的URL才能訪問,對搜索引擎和用戶不是很友好,那么如何解決LINUX服務器URL的大小寫問題
    2020-01-01
  • 修改linux文件權限命令:chmod命令詳解

    修改linux文件權限命令:chmod命令詳解

    本篇文章主要介紹了修改linux文件權限命令:chmod,Linux系統(tǒng)中的每個文件和目錄都有訪問許可權限,用它來確定誰可以通過何種方式對文件和目錄進行訪問和操作。
    2016-12-12
  • 詳解Linux系統(tǒng)配置nginx的負載均衡

    詳解Linux系統(tǒng)配置nginx的負載均衡

    這篇文章主要介紹了詳解Linux系統(tǒng)配置nginx的負載均衡的相關資料,這里對負載均衡的幾種方式進行了講解并附NGINX配置文件,需要的朋友可以參考下
    2017-03-03
  • linux下用戶程序同內核通信詳解(netlink機制)

    linux下用戶程序同內核通信詳解(netlink機制)

    這篇文章主要介紹了linux下用戶程序同內核通信詳解(netlink機制),涉及netlink,內核模塊,用戶程序的介紹等相關內容,小編覺得還是挺不錯的,這里分享給大家,需要的朋友可以參考下
    2018-01-01
  • Linux服務器進程退出了,但是顯存占用問題的解決

    Linux服務器進程退出了,但是顯存占用問題的解決

    這篇文章主要介紹了Linux服務器進程退出了,但是顯存占用問題的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • thrift安裝遇到的問題以及解決方法(必看篇)

    thrift安裝遇到的問題以及解決方法(必看篇)

    下面小編就為大家?guī)硪黄猼hrift安裝遇到的問題以及解決方法(必看篇)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12

最新評論