您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

disown

概要

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

    注意

  1. bash的作业控制命令包括bg fg kill wait disown suspend

  1. 该命令需要set选项monitor处于开启状态时才能执行;查看作业控制状态:输入set -o查看monitor行;执行set -o monitorset -m开启该选项。

  1. 该命令是bash内建命令,相关的帮助信息请查看help命令。

    参考链接

    • [disown的用法](https://www.cyberciti.biz/faq/unix-linux-disown-command-examples-usage-syntax/)