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

講述Linux HUP信號(hào)的干擾問(wèn)題

運(yùn)維 系統(tǒng)運(yùn)維
我們知道,當(dāng)用戶注銷(logout)或者網(wǎng)絡(luò)斷開(kāi)時(shí),終端會(huì)收到Linux HUP信號(hào)(hangup)信號(hào)從而關(guān)閉其所有子進(jìn)程。因此,我們的解決辦法就有兩種途徑:要么讓進(jìn)程忽略Linux HUP信號(hào),要么讓進(jìn)程運(yùn)行在新的會(huì)話里從而成為不屬于此終端的子進(jìn)程。

在向大家詳細(xì)介紹Linux HUP信號(hào)之前,首先讓大家了解下Linux HUP信號(hào),然后全面介紹Linux服務(wù)器X,希望對(duì)大家有用。想讓進(jìn)程在斷開(kāi)連接后依然保持運(yùn)行?如果該進(jìn)程已經(jīng)開(kāi)始運(yùn)行了該如何補(bǔ)救? 如果有大量這類需求如何簡(jiǎn)化操作?

我們經(jīng)常會(huì)碰到這樣的問(wèn)題,用 telnet/ssh 登錄了遠(yuǎn)程的 Linux服務(wù)器,運(yùn)行了一些耗時(shí)較長(zhǎng)的任務(wù), 結(jié)果卻由于網(wǎng)絡(luò)的不穩(wěn)定導(dǎo)致任務(wù)中途失敗。如何讓命令提交后不受本地關(guān)閉終端窗口/網(wǎng)絡(luò)斷開(kāi)連接的干擾呢?下面舉了一些例子, 您可以針對(duì)不同的場(chǎng)景選擇不同的方式來(lái)處理這個(gè)問(wèn)題。

場(chǎng)景:
如果只是臨時(shí)有一個(gè)命令需要長(zhǎng)時(shí)間運(yùn)行,什么方法能最簡(jiǎn)便的保證它在后臺(tái)穩(wěn)定運(yùn)行呢?

hangup 名稱的來(lái)由

在 Unix 的早期版本中,每個(gè)終端都會(huì)通過(guò) modem 和系統(tǒng)通訊。當(dāng)用戶 logout 時(shí),modem 就會(huì)掛斷(hang up)電話。 同理,當(dāng) modem 斷開(kāi)連接時(shí),就會(huì)給終端發(fā)送 hangup 信號(hào)來(lái)通知其關(guān)閉所有子進(jìn)程。 
 
解決方法:
我們知道,當(dāng)用戶注銷(logout)或者網(wǎng)絡(luò)斷開(kāi)時(shí),終端會(huì)收到Linux HUP信號(hào)(hangup)信號(hào)從而關(guān)閉其所有子進(jìn)程。因此,我們的解決辦法就有兩種途徑:要么讓進(jìn)程忽略Linux HUP信號(hào),要么讓進(jìn)程運(yùn)行在新的會(huì)話里從而成為不屬于此終端的子進(jìn)程。

1. nohup
nohup 無(wú)疑是我們首先想到的辦法。顧名思義,nohup 的用途就是讓提交的命令忽略 hangup 信號(hào)。讓我們先來(lái)看一下 nohup 的幫助信息:
nohup(1)  User Commands  nohup(1)
nohup - run a command immune to hangups, with output to a non-tty
SYNOPSIS
nohup COMMAND [ARG]...
nohup OPTION
DESCRIPTION
Run COMMAND, ignoring hangup signals.
--help display this help and exit
--version
output version information and exit 

可見(jiàn),nohup 的使用是十分方便的,只需在要處理的命令前加上 nohup 即可,標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤缺省會(huì)被重定向到 nohup.out 文件中。一般我們可在結(jié)尾加上"&"來(lái)將命令同時(shí)放入后臺(tái)運(yùn)行,也可用">filename 2>&1"來(lái)更改缺省的重定向文件名。

nohup 示例
               
[root@pvcent107 ~]# nohup ping www.ibm.com &
[1] 3059
nohup: appending output to `nohup.out'
[root@pvcent107 ~]# ps -ef |grep 3059
root      3059   984  0 21:06 pts/3    00:00:00 ping www.ibm.com
root      3067   984  0 21:06 pts/3    00:00:00 grep 3059
[root@pvcent107 ~]#  

2。setsid
nohup無(wú)疑能通過(guò)忽略Linux HUP信號(hào) 信號(hào)來(lái)使我們的進(jìn)程避免中途被中斷,但如果我們換個(gè)角度思考,如果我們的進(jìn)程不屬于接受Linux HUP信號(hào)的終端的子進(jìn)程,那么自然也就不會(huì)受到Linux HUP信號(hào)的影響了。setsid 就能幫助我們做到這一點(diǎn)。讓我們先來(lái)看一下 setsid 的幫助信息:

SETSID(8)  Linux Programmer’s Manual SETSID(8)
setsid - run a program in a new session
SYNOPSIS setsid program [ arg ... ]
DESCRIPTION setsid runs a program in a new session. 
可見(jiàn) setsid 的使用也是非常方便的,也只需在要處理的命令前加上 setsid 即可。

setsid 示例

[root@pvcent107 ~]# setsid ping www.ibm.com
[root@pvcent107 ~]# ps -ef |grep www.ibm.com
root     31094     1  0 07:28 ?        00:00:00 ping www.ibm.com
root     31102 29217  0 07:29 pts/4    00:00:00 grep www.ibm.com
[root@pvcent107 ~]#   
值得注意的是,上例中我們的進(jìn)程 ID(PID)為31094,而它的父 ID(PPID)為1(即為 init 進(jìn)程 ID),并不是當(dāng)前終端的進(jìn)程 ID。請(qǐng)將此例與nohup 例中的父 ID 做比較。

3。&
這里還有一個(gè)關(guān)于 subshell 的小技巧。我們知道,將一個(gè)或多個(gè)命名包含在“()”中就能讓這些命令在子 shell 中運(yùn)行中,從而擴(kuò)展出很多有趣的功能,我們現(xiàn)在要討論的就是其中之一。
當(dāng)我們將"&"也放入“()”內(nèi)之后,我們就會(huì)發(fā)現(xiàn)所提交的作業(yè)并不在作業(yè)列表中,也就是說(shuō),是無(wú)法通過(guò)jobs來(lái)查看的。讓我們來(lái)看看為什么這樣就能躲過(guò)Linux HUP信號(hào)的影響吧。

subshell 示例
               
[root@pvcent107 ~]# (ping www.ibm.com &)
[root@pvcent107 ~]# ps -ef |grep www.ibm.com
root     16270     1  0 14:13 pts/4    00:00:00 ping www.ibm.com
root     16278 15362  0 14:13 pts/4    00:00:00 grep www.ibm.com
[root@pvcent107 ~]#   
從上例中可以看出,新提交的進(jìn)程的父 ID(PPID)為1(init 進(jìn)程的 PID),并不是當(dāng)前終端的進(jìn)程 ID。因此并不屬于當(dāng)前終端的子進(jìn)程,從而也就不會(huì)受到當(dāng)前終端的Linux HUP信號(hào)的影響了。

【編輯推薦】

  1. 命令手冊(cè):Linux中的ipvsadm命令
  2. 今天你預(yù)裝Linux桌面系統(tǒng)了么?
  3. Linux中NMAP工具的強(qiáng)大功能
  4. 詳解保護(hù)Linux服務(wù)器七步驟
  5. 詳細(xì)介紹Linux進(jìn)行C編譯
責(zé)任編輯:佚名 來(lái)源: CSDN
相關(guān)推薦

2011-01-11 14:11:57

inSSIDer無(wú)線網(wǎng)絡(luò)無(wú)線信號(hào)抗干擾

2010-09-06 10:11:44

無(wú)線信號(hào)

2009-11-24 13:53:03

SuSE Linux

2011-06-13 10:33:01

LTE網(wǎng)絡(luò)GPS

2009-11-23 15:57:05

SUSE Linux超

2009-12-17 17:19:45

Linux系統(tǒng)

2009-12-24 13:46:23

Linux驅(qū)動(dòng)

2009-10-20 09:19:11

Linux kill命

2009-10-20 10:15:01

Linux用戶管理

2010-03-10 14:04:35

Linux端口安全

2009-12-18 16:44:57

ADO.NET統(tǒng)計(jì)

2009-10-26 10:24:35

linux脫機(jī)打印命令

2010-03-10 17:37:48

Linux磁盤配額

2013-04-26 16:52:11

能量脈沖無(wú)線網(wǎng)絡(luò)信號(hào)干擾

2009-12-18 15:28:19

Linux內(nèi)核

2010-03-18 17:29:21

2010-06-29 10:28:14

Wi-Fi干擾

2009-12-24 09:47:17

Linux之父

2009-11-24 11:35:59

2009-10-23 19:11:32

linux集群
點(diǎn)贊
收藏

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