首頁 > 程序管理 > disown

disown: 放棄正在執行的作業所有權 (當忘記使用 nohup 時)

將已在執行的作業從目前 shell 的作業列表中移除,以防止在關閉終端機或登出時該作業被終止 (SIGHUP)。通常用於不小心在沒有 nohup 的情況下執行命令時。

disown 是什麼?

像 Bash 這樣的 shell,在終端機關閉時會向其管理的所有作業 (Job) 發送 '終止!' 的信號 (SIGHUP)。`disown` 會將特定作業從 shell 的管理列表 (族譜) 中移除,以防止在 shell 終止時一起被終止。

何時使用?

  • 忘記使用 nohup 時: 當執行一個耗時的作業,但需要下班且不能終止該作業時使用。
  • 作業流程: 依序使用:執行中暫停 (Ctrl+z) -> 轉為背景執行 (bg) -> 放棄所有權 (disown)。
  • Shell 內建命令: 這不是獨立程式,而是內建於 shell (如 Bash, Zsh) 的功能。

主要選項 (Shell)

不帶選項使用時,會針對最近的作業。若要指定特定作業,請使用 '作業編號 (Job ID)'。

1. 基本使用與目標指定

2. 狀態保留

3. 說明

生成的命令:

請試著組合命令。

這個 Django 應用程序是一個技術指南文檔,旨在為用戶輕鬆解釋 Linux 的各種命令。

`disown` 執行命令。

請將上述選項組合在一起,與 AI 一同虛擬執行命令。

使用情境範例 (必要模式)

`disown` 通常不是單獨使用,而是與 `Ctrl+z`、`bg` 一起成套使用。

情境假設:在沒有 nohup 的情況下開始了備份!

不小心直接執行了 `backup.sh`,需要 1 小時才能完成。如果關閉終端機,備份也會停止。這是在此情況下解救的方法。

解救三步驟 (Step-by-Step)

請按以下順序輸入鍵盤指令。

  • 1. 在正在執行的終端機中按下 `Ctrl + z` 暫停作業。
  • 2. 輸入 `bg` 命令,將已暫停的作業重新轉為背景執行。
  • 3. 輸入 `disown` 命令,斷開與 shell 的連接。

選擇特定作業進行分離

disown %2

僅分離透過 `jobs` 確認到的第 2 號作業。

保留在列表中 (-h)

disown -h %1

在執行 `jobs` 命令時仍可見,但即使關閉終端機也不會終止。

安裝

`disown` 是 Bash、Zsh 等 shell 的內建 (Built-in) 命令,因此無需額外安裝。

無需安裝

如果您正在使用 Linux 終端機,它已經安裝了。

提示與注意事項

實用提示

  • Job ID 與 PID: `disown` 使用的是 shell 的作業編號 (Job ID,例如:%1),而不是行程 ID (PID,例如:1234)。請記住要加上 `%` 符號。
  • 無法確認輸出: `nohup` 會建立 `nohup.out` 檔案,但 `disown` 是將已執行的作業分離,因此其輸出可能會消失。若要保留輸出,則需要使用 `gdb` 等工具,這會使情況變得複雜。
  • 確認方法: disown 後 (若未使用選項),作業會從 `jobs` 列表中消失。若要確認行程是否仍在運行,需要使用 `ps -ef | grep 命令` 來檢查。

相關命令

功能上相似或經常一起使用的命令。



相同類別命令