• 跳至主要導覽
  • 跳至主要內容
  • 跳至主要資訊欄
Office 指南

Office 指南

辦公室工作實用教學

  • Excel
  • Word
  • PowerPoint
  • Windows
  • PowerShell
  • R

Linux 使用 disown 讓程式在登出後繼續執行教學與範例

介紹如何在 Linux 系統上使用 disown 指令卸除正在執行的程式,讓程式可在使用者登出後繼續執行。


如果以 SSH 遠端登入 Linux 主機之後,執行某些耗時的程式,在程式尚未結束之前卻需要先登出(例如下班),但又不想中斷執行到一半的程式,這時候就可以使用 disown 指令來解決。

卸除行程

disown 指令可以將指定的行程從目前的工作列表中卸除,讓使用者在登出之後,該程式還是可以繼續執行。

假設我們執行了一個非常耗時的程式:

# 耗時的程式
sleep 600

執行之後,終端機就會處於等待狀態,維持 10 分鐘,若在這時候我們想要登出,同時也讓這個程式繼續執行的話,可以先按下 Ctrl + z,讓該程式暫停執行:

[1]+  Stopped                 sleep 600

接著執行 bg 讓該程式放在背景繼續執行:

# 將程式放在背景執行
bg
[1]+ sleep 600 &

使用 jobs 確認目前所有的工作與狀態:

# 列出所有工作
jobs
[1]+  Running                 sleep 600 &

接著使用 disown 卸除該程式,由於此處只有一個程式在背景執行,因此不需要特別指定要卸除的程式(預設會卸除目前預設的那一個程式,也就是有 + 標示的那一個):

# 卸除目前預設的背景行程
disown

卸除程式之後,執行 jobs 時就不會再列出該程式,這時候就算登出系統,該程式也會繼續執行。

卸除多個行程

如果我們一次執行了多個程式,想要將所有這些正在背景執行的行程都卸除,讓所有的程式在使用者登出之後,都繼續執行可以使用 -a 參數。

假設我們放置了多個程式在背景執行:

# 多個背景執行的程式
sleep 600 &
sleep 900 &
ping -c 500 www.google.com > /dev/null &

使用 jobs 確認目前所有的工作與狀態:

# 列出所有工作
jobs
[1]   Running                 sleep 600 &
[2]-  Running                 sleep 900 &
[3]+  Running                 ping -c 500 www.google.com > /dev/null &

若要將所有的工作一次全部卸除,可以執行:

# 卸除所有工作
disown -a

這裡要注意一點,-a 參數會卸除所有的工作,不論其狀態是否是執行中(Running)或是暫停(Stopped),將暫停狀態的工作卸除之後,它只會持續處於暫停狀態,不會執行任何工作,並沒有太大的意義,所以通常我們會再加上 -r 參數,僅卸除目前正常執行狀態的工作:

# 僅卸除所有執行中的工作
disown -ar

維持行程不中斷

透過 disown 卸除後的工作,就不會再出現在 jobs 的輸出列表中,如果希望不要卸除該工作,只是單純讓程式可以在登出後繼續執行,可以加上 -h 參數:

# 僅讓程式在登出後繼續執行
disown -h

加上 -h 參數的作用實際上就是當 shell 收到 SIGHUP 訊號時,不會將 SIGHUP 訊號轉發給該程式,讓程式不會因為登出而中斷。

參考資料:nixCraft、StackOverflow

分類:Linux

讀者互動方式

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

主要資訊欄

搜尋

近期文章

  • C++ 語言使用 Crypto++ 實作 RSA 數位簽章教學與範例
  • C++ 語言使用 Crypto++ 實作 RSA-OAEP 搭配 SHA256 加密教學與範例
  • C++ 語言使用 Crypto++ 實作 AES 加密、解密、認證加密教學與範例
  • C++ 語言使用 Crypto++ 實作 MD5、SHA1、SHA2、BLAKE2 雜湊教學與範例
  • Ubuntu Linux 安裝、使用 Crypto++ 加密函式庫教學與範例
  • C 語言使用 OpenSSL 實作橢圓曲線 ECDH 金鑰交換教學與範例
  • Python 以 eciespy 實作 ECC 非對稱式加密方法教學與範例
  • C 語言使用 OpenSSL 實作 PBKDF2 教學與範例

推薦網站

  • Udemy 線上教學課程
  • Coursera 線上教學課程

關注本站

  • 電子郵件
  • Facebook

公益

  • 家扶基金會
  • 台灣世界展望會
  • Yahoo 奇摩公益
  • igiving 公益網
  • 兒福聯盟

Copyright © 2021 · Office Guide