disown

從當前的shell中移除作業。

概要

1disown [-h] [-ar] [jobspec ... | pid ...]

主要用途

  • 從當前shell的作業列表中移除全部作業。

  • 從當前shell的作業列表中移除指定的一到多個作業。

  • 從當前shell的作業列表中移除正在運行的作業。

  • 標記作業,使得它們在當前shell退出後也不會結束。

選項

1-h    標記每個作業標識符,這些作業將不會在shell接收到sighup信號時接收到sighup信號。
2-a    移除所有的作業。
3-r    移除運行的作業。

參數

jobspec(可選):要移除的作業標識符,可以是一到多個。

pid(可選):要移除的作業對應的進程ID,可以是一到多個。

返回值

返回成功除非未開啓作業控制或執行出現錯誤。

例子

 1# 演示。
 2[user2@pc] ssh 192.168.1.4
 3user2@192.168.1.4's password:
 4# 此時按下ctrl+z使得交互停止。
 5[1]+  Stopped                 ssh 192.168.1.4
 6
 7[user2@pc] ssh 192.168.1.7
 8user2@192.168.1.7's password:
 9# 此時按下ctrl+z使得交互停止。
10[1]+  Stopped                 ssh 192.168.1.7
11
12[user2@pc] sleep 120 &
13[3] 28986
14
15# 列出作業及pid信息。
16[user2@pc] jobs -l
17[1]- 28756 Stopped                 ssh 192.168.1.4
18[2]+ 28833 Stopped                 ssh 192.168.1.7
19[3]  28986 Running                 sleep 120 &
20
21# 刪除運行狀態的作業。
22[user2@pc] disown -r
23
24[user2@pc] jobs -l
25[1]- 28756 Stopped                 ssh 192.168.1.4
26[2]+ 28833 Stopped                 ssh 192.168.1.7
27
28# 注意disown只是移除作業,並沒有停止。
29[user2@pc] pgrep -a -u user2 -f 'sleep 120'
3028986 sleep 120
31
32# 刪除指定的作業。
33[user2@pc] disown %2
34bash: warning: deleting stopped job 2 with process group 28833
35
36[user2@pc] jobs -l
37[1]- 28756 Stopped                 ssh 192.168.1.4
38
39# 注意disown只是移除作業,並沒有停止。
40[user2@pc] pgrep -a -u user2 -f 'ssh 192.168.1.7'
4128833 ssh 192.168.1.7
42
43# 刪除全部作業。
44[user2@pc] disown -a
45bash: warning: deleting stopped job 1 with process group 28756
46
47[user2@pc] jobs -l
48
49# 注意disown只是移除作業,並沒有停止。
50[user2@pc] pgrep -a -u user2 -f 'ssh 192.168.1.4'
5128756 ssh 192.168.1.4
 1# 演示-h選項的作用。
 2[user2@pc] sleep 90 &
 3[1] 109080
 4
 5[user2@pc] jobs -l
 6[1]+ 109080 Running                 sleep 90 &
 7
 8[user2@pc] disown -h %1
 9
10[user2@pc] exit
11
12# 此時前一個終端已經關閉,現在打開新終端查找該作業。
13[user2@pc] pgrep -a -u user2 -f 'sleep 90'
14109080 sleep 90

注意

  1. bash的作業控制命令包括bg fg kill wait disown suspend
  2. 該命令需要set選項monitor處於開啓狀態時才能執行;查看作業控制狀態:輸入set -o查看monitor行;執行set -o monitorset -m開啓該選項。
  3. 該命令是bash內建命令,相關的幫助信息請查看help命令。

參考鏈接

來源:https://github.com/jaywcjlove/linux-command

最後修改於: Wednesday, January 31, 2024

相關文章:

翻譯: