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 命令` 來檢查。