disown
命令用于从当前shell会话中移除指定的作业。这意味着这些作业将不再受到当前shell的控制,即使shell关闭或退出,这些作业仍然会继续运行。
disown
是Linux中一个用于管理后台任务的命令,它允许用户将作业从当前的shell作业列表中移除,通过使用该命令,用户可以确保在退出shell时某些后台任务不会终止。
移除全部作业:使用disown -a
可以移除当前shell会话中的所有作业。
移除指定的作业:可以使用作业ID或进程ID来指定需要移除的作业,如disown %1
或disown 1234
。
移除运行中的作业:通过disown -r
可以移除所有正在运行的作业。
标记作业:使用-h
选项可以标记作业,使其在接收到sigup信号时不会被终止。
1、查看当前作业列表:
jobs
输出示例:
[1]+ Stopped ssh 192.168.4.1 [2] Running sleep 120 & [3]+ Sleeping ssh 192.168.4.7
2、删除运行状态的作业:
disown -r
执行后,再次查看作业列表:
jobs
输出示例:
[1]+ Stopped ssh 192.168.4.1 [2] Stopped sleep 120
3、删除指定的作业:
disown %2
删除指定的作业后,可以通过以下命令确认其是否仍在运行:
pgrep -a -u user2 'sleep 120'
4、标记作业:
sleep 90 & disown -h %1
然后关闭终端并重新打开,通过以下命令查找进程:
pgrep -a -u user2 'sleep 90'
可以看到进程仍在运行。
-h
:标记每个作业标识符,这些作业将不会在shell接收到sigup信号时接收到sigup信号。
-a
:移除所有的作业。
-r
:移除运行的作业。
disown
命令需要set选项monitor处于开启状态时才能执行,可以通过输入set -o
查看 monitor行;执行set -o monitor
或set -m
开启该选项。
disown
命令是bash内建命令,相关的帮助信息可以通过help disown
查看。
Q1: disown命令的主要作用是什么?
A:disown
命令主要用于从当前shell的作业列表中移除作业,从而确保在退出shell时这些作业不会终止。
Q2: 如果我想删除所有后台任务,应该使用什么命令?
A: 可以使用disown -a
命令来删除所有后台任务。
disown
命令在日常的Linux系统操作中非常有用,特别是在需要长时间运行后台任务时,通过合理使用该命令,可以避免因意外退出shell而导致的任务中断,从而提高工作的效率和稳定性,希望本文能帮助您更好地理解和使用disown
命令。