首页 理论教育 高效移除作业disown

高效移除作业disown

时间:2023-11-18 理论教育 版权反馈
【摘要】:在不指定作业号时,disown命令的选项-a的作用是移除当前shell里的所有作业。就是说,如果希望某作业在shell收到SIGHUP信号时仍能继续运行,可以使用命令:disown-h〈作业号〉。命令disown -ah的作业是使所有的作业忽略SIGHUP信号;命令disown -rh的作业是使状态为Running的作业忽略SIGHUP信号。

高效移除作业disown

命令disown加作业号不是用来停止某个作业(那是kill命令的任务),而是从当前shell的作业表中移除该作业,移除后,用jobs命令查不到它了,但是用ps命令仍然可以查到它的相应进程。

下面的脚本包含一个无穷循环,不断地将最新时间写入文件latest_time.txt:

将该脚本放在后台执行:

每隔几秒执行ls -l latest_time.txt查看它的字节数,或者执行tail -f latest_time.txt(按〈Ctrl+C〉键可停止tail-f命令的显示),可以看到该文件的内容在不断增加:

运行disown加作业号可从作业表中移除该作业(不指定作业号时,表示移除当前作业)。移除后,用jobs命令查不到它了:

用ps命令可以查到它:(www.xing528.com)

可见,它还在运行,进程ID为1953。执行命令tail -f latest_time.txt可以明显知道脚本还在运行。需要尽快终止1953,否则,文件latest_time.txt会越来越大,把硬盘空间占满。

这时,再执行tail -flatest_time.txt,可以看到文件内容不再变化,说明进程确实停止了。

在不指定作业号时,disown命令的选项-a的作用是移除当前shell里的所有(all)作业。disown命令的选项-r的作用是移除当前shell里处在Running状态的作业。

disown命令的选项-h的作用是使作业忽略SIGHUP信号。就是说,如果希望某作业在shell收到SIGHUP信号时仍能继续运行,可以使用命令:disown-h〈作业号〉。

命令disown -ah的作业是使所有的作业忽略SIGHUP信号;命令disown -rh的作业是使状态为Running的作业忽略SIGHUP信号。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈