TOP

Linux 技巧:讓進程在后臺可靠運行的幾種方法 (一)
2010-12-31 12:21:01 】 瀏覽:11924
Tags:

我們經常會碰到這樣的問題,用 telnet/ssh 登錄了遠程的 Linux 服務器,運行了一些耗時較長的任務, 結果卻由于網絡的不穩定導致任務中途失敗。如何讓命令提交后不受本地關閉終端窗口/網絡斷開連接的干擾呢?下面舉了一些例子优乐棋牌app下载, 您可以針對不同的場景選擇不同的方式來處理這個問題。

nohup/setsid/&

場景:

如果只是臨時有一個命令需要長時間運行优乐棋牌app下载,什么方法能最簡便的保證它在后臺穩定運行呢?

hangup 名稱的來由

在 Unix 的早期版本中,每個終端都會通過 modem 和系統通訊。當用戶 logout 時,modem 就會掛斷(hang up)電話。 同理,當 modem 斷開連接時,就會給終端發送 hangup 信號來通知其關閉所有子進程。

解決方法:

我們知道,當用戶注銷(logout)或者網絡斷開時,終端會收到 HUP(hangup)信號從而關閉其所有子進程。因此,我們的解決辦法就有兩種途徑:要么讓進程忽略 HUP 信號,要么讓進程運行在新的會話里從而成為不屬于此終端的子進程。

1. nohup

nohup 無疑是我們首先想到的辦法。顧名思義,nohup 的用途就是讓提交的命令忽略 hangup 信號。讓我們先來看一下 nohup 的幫助信息:

NOHUP(1) User Commands NOHUP(1)

NAME
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

可見,nohup 的使用是十分方便的,只需在要處理的命令前加上 nohup 即可,標準輸出和標準錯誤缺省會被重定向到 nohup.out 文件中。一般我們可在結尾加上"&"來將命令同時放入后臺運行,也可用">filename 2>&1"

來更改缺省的重定向文件名。
nohup 示例

[root@pvcent107 ~]# nohup ping www.ibm.com &
[1] 3059
nohup:

請關注公眾號獲取更多資料



首頁 上一頁 1 2 3 4 5 6 7 下一頁 尾頁 1/7/7
】【打印繁體】【】【】 【】【】【】 【關閉】 【返回頂部
上一篇一起寫 Makefile 規則 下一篇Linux命令Man解釋:useradd:帳號建..