disown

从当前的shell中移除作业。

概要

  1. disown [-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
  3. user2@192.168.1.4's password:
  4. # 此时按下ctrl+z使得交互停止。
  5. [1]+ Stopped ssh 192.168.1.4
  6. [user2@pc] ssh 192.168.1.7
  7. user2@192.168.1.7's password:
  8. # 此时按下ctrl+z使得交互停止。
  9. [1]+ Stopped ssh 192.168.1.7
  10. [user2@pc] sleep 120 &
  11. [3] 28986
  12. # 列出作业及pid信息。
  13. [user2@pc] jobs -l
  14. [1]- 28756 Stopped ssh 192.168.1.4
  15. [2]+ 28833 Stopped ssh 192.168.1.7
  16. [3] 28986 Running sleep 120 &
  17. # 删除运行状态的作业。
  18. [user2@pc] disown -r
  19. [user2@pc] jobs -l
  20. [1]- 28756 Stopped ssh 192.168.1.4
  21. [2]+ 28833 Stopped ssh 192.168.1.7
  22. # 注意disown只是移除作业,并没有停止。
  23. [user2@pc] pgrep -a -u user2 -f 'sleep 120'
  24. 28986 sleep 120
  25. # 删除指定的作业。
  26. [user2@pc] disown %2
  27. bash: warning: deleting stopped job 2 with process group 28833
  28. [user2@pc] jobs -l
  29. [1]- 28756 Stopped ssh 192.168.1.4
  30. # 注意disown只是移除作业,并没有停止。
  31. [user2@pc] pgrep -a -u user2 -f 'ssh 192.168.1.7'
  32. 28833 ssh 192.168.1.7
  33. # 删除全部作业。
  34. [user2@pc] disown -a
  35. bash: warning: deleting stopped job 1 with process group 28756
  36. [user2@pc] jobs -l
  37. # 注意disown只是移除作业,并没有停止。
  38. [user2@pc] pgrep -a -u user2 -f 'ssh 192.168.1.4'
  39. 28756 ssh 192.168.1.4
  1. # 演示-h选项的作用。
  2. [user2@pc] sleep 90 &
  3. [1] 109080
  4. [user2@pc] jobs -l
  5. [1]+ 109080 Running sleep 90 &
  6. [user2@pc] disown -h %1
  7. [user2@pc] exit
  8. # 此时前一个终端已经关闭,现在打开新终端查找该作业。
  9. [user2@pc] pgrep -a -u user2 -f 'sleep 90'
  10. 109080 sleep 90

注意

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

参考链接