在進行長時間的資料處理流程時,會遇到很多麻煩。一旦網路中斷、或者關閉視窗,就相當於提供了一個結束通話訊號(SIGHUP)給linux,正在執行的任務也會隨之中斷。
一個簡單的解決辦法是使用nohup命令,可以忽略這個結束通話訊號,將任務放在後臺執行,並輸出到nohup.out檔案中。
更好的辦法是使用screen,這是一個視窗管理工具,簡單來說相當於在已開啟的視窗中,建立新的視窗。在screen中,新建立的視窗被稱為會話,這些會話可以退出,但任務程序不會因此而中斷,還可以實現執行過程中的人機互動。
如果有root許可權,screen的安裝就很簡單,直接 yum install 就行了。對於和我一樣沒有root許可權的朋友,需要進行原始碼安裝:
下載:
解壓:
進入解壓得到的資料夾,建立一個名為build的子資料夾,執行screen目錄下的 ./configure 檔案:
用vim 開啟config.h 檔案,看一下define SOCKDIR後面的資料夾位置,並在相應的位置手動建立相應的檔案:
再使用 make 命令執行安裝,大功告成!可以執行 screen 驗證一下是否安裝成功。
使用辦法:
screen :最簡單的使用命令,在現在的視窗下建立一個會話,使用exit 退出,退出後能看到提示:[screen is terminating]
screen -S [session name]: 為你建立的會話命名
screen -ls :展示會話列表
screen -r:啟用會話
screen -d:關閉某個會話,但不終止會話中執行的程式
在會話中,可以使用 ctrl-a(在你的鍵盤上同時按下它們) 執行會話命令,這些命令不會對視窗下達:
Ctrl-a ? 顯示所有鍵繫結資訊
Ctrl-a w 顯示所有視窗列表
Ctrl-a C-a 切換到之前顯示的視窗
Ctrl-a c 建立一個新的執行shell的視窗並切換到該視窗
Ctrl-a n 切換到下一個視窗
Ctrl-a p 切換到前一個視窗(與C-a n相對)
Ctrl-a 0..9 切換到視窗0..9
Ctrl-a a 傳送 C-a到當前視窗
Ctrl-a d 暫時斷開screen會話
Ctrl-a k 殺掉當前視窗
Ctrl-a [進入複製/回滾模式
這裡有一篇對screen很詳細的介紹:
(我這專欄越寫越像軟體推薦了.......)
在進行長時間的資料處理流程時,會遇到很多麻煩。一旦網路中斷、或者關閉視窗,就相當於提供了一個結束通話訊號(SIGHUP)給linux,正在執行的任務也會隨之中斷。
一個簡單的解決辦法是使用nohup命令,可以忽略這個結束通話訊號,將任務放在後臺執行,並輸出到nohup.out檔案中。
更好的辦法是使用screen,這是一個視窗管理工具,簡單來說相當於在已開啟的視窗中,建立新的視窗。在screen中,新建立的視窗被稱為會話,這些會話可以退出,但任務程序不會因此而中斷,還可以實現執行過程中的人機互動。
如果有root許可權,screen的安裝就很簡單,直接 yum install 就行了。對於和我一樣沒有root許可權的朋友,需要進行原始碼安裝:
下載:
解壓:
進入解壓得到的資料夾,建立一個名為build的子資料夾,執行screen目錄下的 ./configure 檔案:
用vim 開啟config.h 檔案,看一下define SOCKDIR後面的資料夾位置,並在相應的位置手動建立相應的檔案:
再使用 make 命令執行安裝,大功告成!可以執行 screen 驗證一下是否安裝成功。
使用辦法:
screen :最簡單的使用命令,在現在的視窗下建立一個會話,使用exit 退出,退出後能看到提示:[screen is terminating]
screen -S [session name]: 為你建立的會話命名
screen -ls :展示會話列表
screen -r:啟用會話
screen -d:關閉某個會話,但不終止會話中執行的程式
在會話中,可以使用 ctrl-a(在你的鍵盤上同時按下它們) 執行會話命令,這些命令不會對視窗下達:
Ctrl-a ? 顯示所有鍵繫結資訊
Ctrl-a w 顯示所有視窗列表
Ctrl-a C-a 切換到之前顯示的視窗
Ctrl-a c 建立一個新的執行shell的視窗並切換到該視窗
Ctrl-a n 切換到下一個視窗
Ctrl-a p 切換到前一個視窗(與C-a n相對)
Ctrl-a 0..9 切換到視窗0..9
Ctrl-a a 傳送 C-a到當前視窗
Ctrl-a d 暫時斷開screen會話
Ctrl-a k 殺掉當前視窗
Ctrl-a [進入複製/回滾模式
這裡有一篇對screen很詳細的介紹:
screen使用方法(我這專欄越寫越像軟體推薦了.......)