從當前的shell中移除作業。
disown [-h] [-ar] [jobspec ... | pid ...]
從當前shell的作業列表中移除全部作業。
從當前shell的作業列表中移除指定的一到多個作業。
從當前shell的作業列表中移除正在運行的作業。
標記作業,使得它們在當前shell退出后也不會結束。
-h 標記每個作業標識符,這些作業將不會在shell接收到sighup信號時接收到sighup信號。
-a 移除所有的作業。
-r 移除運行的作業。
jobspec(可選):要移除的作業標識符,可以是一到多個。
pid(可選):要移除的作業對應的進程ID,可以是一到多個。
返回成功除非未開啟作業控制或執行出現錯誤。
# 演示。
[user2@pc] ssh 192.168.1.4
user2@192.168.1.4's password:
# 此時按下ctrl+z使得交互停止。
[1]+ Stopped ssh 192.168.1.4
[user2@pc] ssh 192.168.1.7
user2@192.168.1.7's password:
# 此時按下ctrl+z使得交互停止。
[1]+ Stopped ssh 192.168.1.7
[user2@pc] sleep 120 &
[3] 28986
# 列出作業及pid信息。
[user2@pc] jobs -l
[1]- 28756 Stopped ssh 192.168.1.4
[2]+ 28833 Stopped ssh 192.168.1.7
[3] 28986 Running sleep 120 &
# 刪除運行狀態的作業。
[user2@pc] disown -r
[user2@pc] jobs -l
[1]- 28756 Stopped ssh 192.168.1.4
[2]+ 28833 Stopped ssh 192.168.1.7
# 注意disown只是移除作業,并沒有停止。
[user2@pc] pgrep -a -u user2 -f 'sleep 120'
28986 sleep 120
# 刪除指定的作業。
[user2@pc] disown %2
bash: warning: deleting stopped job 2 with process group 28833
[user2@pc] jobs -l
[1]- 28756 Stopped ssh 192.168.1.4
# 注意disown只是移除作業,并沒有停止。
[user2@pc] pgrep -a -u user2 -f 'ssh 192.168.1.7'
28833 ssh 192.168.1.7
# 刪除全部作業。
[user2@pc] disown -a
bash: warning: deleting stopped job 1 with process group 28756
[user2@pc] jobs -l
# 注意disown只是移除作業,并沒有停止。
[user2@pc] pgrep -a -u user2 -f 'ssh 192.168.1.4'
28756 ssh 192.168.1.4
# 演示-h選項的作用。
[user2@pc] sleep 90 &
[1] 109080
[user2@pc] jobs -l
[1]+ 109080 Running sleep 90 &
[user2@pc] disown -h %1
[user2@pc] exit
# 此時前一個終端已經關閉,現在打開新終端查找該作業。
[user2@pc] pgrep -a -u user2 -f 'sleep 90'
109080 sleep 90
bash
的作業控制命令包括bg fg kill wait disown suspend
。set
選項monitor
處于開啟狀態時才能執行;查看作業控制狀態:輸入set -o
查看monitor
行;執行set -o monitor
或set -m
開啟該選項。help
命令。