linux-command
Version:
126 lines (83 loc) • 3.07 kB
Markdown
disown
===
从当前的shell中移除作业。
192.168.1.4
user2@192.168.1.4's password:
[ ]+ Stopped ssh 192.168.1.4
[ ] ssh 192.168.1.7
user2@192.168.1.7's password:
[ ]+ Stopped ssh 192.168.1.7
[ ] sleep 120 &
[ ] 28986
[ ] jobs -l
[ ]- 28756 Stopped ssh 192.168.1.4
[ ]+ 28833 Stopped ssh 192.168.1.7
[ ] 28986 Running sleep 120 &
[ ] disown -r
[ ] jobs -l
[ ]- 28756 Stopped ssh 192.168.1.4
[ ]+ 28833 Stopped ssh 192.168.1.7
[ ] pgrep -a -u user2 -f 'sleep 120'
28986 sleep 120
[ ] disown %2
bash: warning: deleting stopped job 2 with process group 28833
[ ] jobs -l
[ ]- 28756 Stopped ssh 192.168.1.4
[ ] pgrep -a -u user2 -f 'ssh 192.168.1.7'
28833 ssh 192.168.1.7
[ ] disown -a
bash: warning: deleting stopped job 1 with process group 28756
[ ] jobs -l
[ ] pgrep -a -u user2 -f 'ssh 192.168.1.4'
28756 ssh 192.168.1.4
```
```shell
[ ] sleep 90 &
[ ] 109080
[ ] jobs -l
[ ]+ 109080 Running sleep 90 &
[ ] disown -h %1
[ ] exit
[ ] pgrep -a -u user2 -f 'sleep 90'
109080 sleep 90
```
1. `bash`的作业控制命令包括`bg fg kill wait disown suspend`。
2. 该命令需要`set`选项`monitor`处于开启状态时才能执行;查看作业控制状态:输入`set -o`查看`monitor`行;执行`set -o monitor`或`set -m`开启该选项。
3. 该命令是bash内建命令,相关的帮助信息请查看`help`命令。
- [disown的用法](https://www.cyberciti.biz/faq/unix-linux-disown-command-examples-usage-syntax/)
```shell
disown [-h] [-ar] [jobspec ... | pid ...]
```
- 从当前shell的作业列表中移除全部作业。
- 从当前shell的作业列表中移除指定的一到多个作业。
- 从当前shell的作业列表中移除正在运行的作业。
- 标记作业,使得它们在当前shell退出后也不会结束。
```shell
-h 标记每个作业标识符,这些作业将不会在shell接收到sighup信号时接收到sighup信号。
-a 移除所有的作业。
-r 移除运行的作业。
```
jobspec(可选):要移除的作业标识符,可以是一到多个。
pid(可选):要移除的作业对应的进程ID,可以是一到多个。
返回成功除非未开启作业控制或执行出现错误。
```shell
[ ] ssh