从当前的 shell 中移除作业。

概要

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

主要用途

  • 从当前 shell 的作业列表中移除全部作业。
  • 从当前 shell 的作业列表中移除指定的一到多个作业。
  • 从当前 shell 的作业列表中移除正在运行的作业。
  • 标记作业,使得它们在当前 shell 退出后也不会结束。

选项

  1. -h 标记每个作业标识符,这些作业将不会在shell接收到sighup信号时接收到sighup信号。
  2. -a 移除所有的作业。
  3. -r 移除运行的作业。

参数

jobspec(可选):要移除的作业标识符,可以是一到多个。

pid(可选):要移除的作业对应的进程 ID,可以是一到多个。

返回值

返回成功除非未开启作业控制或执行出现错误。

例子

  1. [user2@pc] ssh 192.168.1.4
  2. user2@192.168.1.4's password:
  3. # 此时按下ctrl+z使得交互停止。
  4. [1]+ Stopped ssh 192.168.1.4
  5. [user2@pc] ssh 192.168.1.7
  6. user2@192.168.1.7's password:
  7. [1]+ Stopped ssh 192.168.1.7
  8. [user2@pc] sleep 120 &
  9. [3] 28986
  10. [user2@pc] jobs -l
  11. [1]- 28756 Stopped ssh 192.168.1.4
  12. [2]+ 28833 Stopped ssh 192.168.1.7
  13. [3] 28986 Running sleep 120 &
  14. [user2@pc] disown -r
  15. [user2@pc] jobs -l
  16. [1]- 28756 Stopped ssh 192.168.1.4
  17. [2]+ 28833 Stopped ssh 192.168.1.7
  18. [user2@pc] pgrep -a -u user2 -f 'sleep 120'
  19. 28986 sleep 120
  20. [user2@pc] disown %2
  21. bash: warning: deleting stopped job 2 with process group 28833
  22. [user2@pc] jobs -l
  23. [1]- 28756 Stopped ssh 192.168.1.4
  24. [user2@pc] pgrep -a -u user2 -f 'ssh 192.168.1.7'
  25. 28833 ssh 192.168.1.7
  26. [user2@pc] disown -a
  27. bash: warning: deleting stopped job 1 with process group 28756
  28. [user2@pc] jobs -l
  29. [user2@pc] pgrep -a -u user2 -f 'ssh 192.168.1.4'
  30. 28756 ssh 192.168.1.4
  31. [user2@pc] sleep 90 &
  32. [1] 109080
  33. [user2@pc] jobs -l
  34. [1]+ 109080 Running sleep 90 &
  35. [user2@pc] disown -h %1
  36. [user2@pc] exit
  37. [user2@pc] pgrep -a -u user2 -f 'sleep 90'
  38. 109080 sleep 90

注意

  1. bash的作业控制命令包括bg fg kill wait disown suspend
  2. 该命令需要set选项monitor处于开启状态时才能执行;查看作业控制状态:输入set -o查看monitor行;执行set -o monitorset -m开启该选项。
  3. 该命令是 bash 内建命令,相关的帮助信息请查看help命令。

参考链接