免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 10390 | 回复: 17
打印 上一主题 下一主题

disown的作用 [复制链接]

论坛徽章:
1
15-16赛季CBA联赛之吉林
日期:2016-07-02 18:10:16
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-30 13:27 |只看该作者 |倒序浏览
用disown -h jobspec 来使某个作业忽略HUP信号。


但是我执行
cp -r testLargeFile largeFile &
之后,断开我的网线之后,发现进程还在运行,但是这个时候用disown有什么作用?

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
2 [报告]
发表于 2008-06-30 14:38 |只看该作者
你断的是哪条网线?和cp所在的终端有没有联系?你的cp是不是在终端上运行?

论坛徽章:
1
15-16赛季CBA联赛之吉林
日期:2016-07-02 18:10:16
3 [报告]
发表于 2008-06-30 15:14 |只看该作者
原帖由 waker 于 2008-6-30 14:38 发表
你断的是哪条网线?和cp所在的终端有没有联系?你的cp是不是在终端上运行?


我是在自己的笔记本上用SSH连接服务器开了1个窗口来执行这个脚本的,运行后直接把笔记本的网线断开1分钟的,发现这个语句对应的作业还在运行

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
4 [报告]
发表于 2008-06-30 15:51 |只看该作者
disown -h是保证程序不收到HUP信号,没有机制保证你拔网线程序就一定收到HUP,也没规定一个程序收到了HUP信号就作出什么反应,也没规定一个程序收到了HUP在什么时候反应

论坛徽章:
1
15-16赛季CBA联赛之吉林
日期:2016-07-02 18:10:16
5 [报告]
发表于 2008-06-30 16:29 |只看该作者
原帖由 waker 于 2008-6-30 15:51 发表
disown -h是保证程序不收到HUP信号,没有机制保证你拔网线程序就一定收到HUP,也没规定一个程序收到了HUP信号就作出什么反应,也没规定一个程序收到了HUP在什么时候反应


    我的意思是,本来disown就是让程序不收到HUP信号,比如说如果网络断掉,就不给CLINET端发这个信息,这样保证脚本继续执行

   但是我不明白,我执行
   cp -r testLargeFile largeFile &

    这个用&已经放到后台,为什么还要使用disown来屏蔽HUP信号(可能这个屏蔽用的不是很恰当)

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
6 [报告]
发表于 2008-06-30 16:49 |只看该作者

论坛徽章:
1
15-16赛季CBA联赛之吉林
日期:2016-07-02 18:10:16
7 [报告]
发表于 2008-06-30 19:53 |只看该作者
原帖由 waker 于 2008-6-30 16:49 发表
http://bbs.chinaunix.net/viewthr ... 5%C4%AF%C1%D2%BB%F0


  谢谢,我今天的例子就是看了这篇文章才想起来的,连参数都没有变

文章中有这么一句

disown 示例1(如果提交命令时已经用“&”将命令放入后台运行,则可以直接使用“disown”)
               
[root@pvcent107 build]# cp -r testLargeFile largeFile &
[1] 4825
[root@pvcent107 build]# jobs
[1]+  Running                 cp -i -r testLargeFile largeFile &
[root@pvcent107 build]# disown -h %1


    我就是不明白,为什么都放到后台了,还用disown来屏蔽?

论坛徽章:
0
8 [报告]
发表于 2008-06-30 20:05 |只看该作者
disown用途是去掉脚本的所有者的概念,让你不能再用fg来放到前台,不能用jobs看到,不能kill %1来kill掉,和是不是放入后台没有关系。
man bash
disown [-ar] [-h] [jobspec ...]
       Without options, each jobspec is removed from the table of active  jobs.   If  the  -h  option  is
       given, each jobspec is not removed from the table, but is marked so that SIGHUP is not sent to the
       job if the shell receives a SIGHUP.  If no jobspec is present, and  neither  the  -a  nor  the  -r
       option  is  supplied,  the current job is used.  If no jobspec is supplied, the -a option means to
       remove or mark all jobs; the -r option without a jobspec argument restricts operation  to  running
       jobs.  The return value is 0 unless a jobspec does not specify a valid job.

论坛徽章:
1
15-16赛季CBA联赛之吉林
日期:2016-07-02 18:10:16
9 [报告]
发表于 2008-06-30 20:18 |只看该作者
原帖由 walkerxk 于 2008-6-30 20:05 发表
disown用途是去掉脚本的所有者的概念,让你不能再用fg来放到前台,不能用jobs看到,不能kill %1来kill掉,和是不是放入后台没有关系。
man bash
disown [-ar] [-h] [jobspec ...]
       Without options, e ...


呵呵,也就是说用了DISOWN就不能FG,不能用JOBS按,不能KILL掉,好,下面就是我自己的测试部分

sh test4.sh &
[1] 29537
$ jobs
[1]+  Running                 sh test4.sh &
$ disown -h 1
-bash: disown: 1: no such job
$ disown -h %1
$ fg
sh test4.sh

[1]+  Stopped                 sh test4.sh
$ bg
[1]+ sh test4.sh &
$ jobs
[1]+  Running                 sh test4.sh &
$ kill -9 %1
$ ps -ef | grep test4.sh
db       29583 25496  0 20:38 pts/8    00:00:00 grep test4.sh
[1]+  Killed                  sh test4.sh


一个进程,我用了DISOWN后,发现能JOBS,能FG,能KILL,

论坛徽章:
0
10 [报告]
发表于 2008-06-30 20:29 |只看该作者
你的shell是什么环境?什么版本的?
我的:
GNU bash, version 3.00.16(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2004 Free Software Foundation, Inc.
你看看你的man bash,看看disown部分是不是和我一样。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP