mseSTA 版 (精华区)
发信人: draziwest (eval & apply), 信区: mseSTA
标 题: Re: 写了一个自动kill Idle的程序
发信站: BBS 听涛站 (Wed Sep 15 23:10:52 2004), 站内
这个很简单啦,就是拿它给的ftpwho的源代码改改就行了:))))
本来想写脚本的,但是实在觉得分析ftpwho的输出真是麻烦,不如直接改ftpwho了。
从我现在对ftpd的理解来看,每个独立服务一个客户端的进程是不能自己判断idle时间
并退出的,肯定是在一个共享存储区存一个开始idle的时间,客户端每做一次操作就重
置时间变量,然后有另外一个进程定时
检查,用现在的时间减去idle开始的时间,就得到idle的时间了。然后对超出时间的进程
采取某种手段,可能应该不是用kill这么暴力的手段的,可以是发一个特定的中断信号,
然后还应该要清理分配给它的共享存储区,状态置零。
现在我知道的是,在当前的配置下,有120单位的存储区来做这件事,保存各个进程的
进程号,开始时间等等信息,我现在初步估计它是在这120个单位存储区中分配的,可能
是在进程超时退出的时候把进程号置零,以后分配的时候就可以知道那些slot是空闲
的,可以重新分配,我现在因为搞不清楚这个机制,所以是直接kill的,不知道,它
会不会自动回收。回收的方案无非也是两种,服务进程退出的时候发一个中断,然后
核心进程去清理,(当然核心进程是不知道刚刚退出的进程用的是那个slot的,除非
用较复杂的通讯手段,这里没有这个必要,但不排除这种可能);或者是核心进程定期
检查整个表,发现有项对应的进程不存在时就清理(如果是酱紫我现在的程序就够用了)
,是这样的可能性比较大,因为我经常看到实际上不存在但是ftpwho仍然可以看到的进
程。否则就要弄清楚清理的机制了,我倾向于认为是清零的,我明天去试试看。
【 在 dupidog (可爱的杜皮狗) 的大作中提到: 】
: 牛人啊
: 这也可以写出来?
--
任何足够强的一阶系统,它的非逻辑公理(G`odel数)的集是递归的,它又是相容的,
则该系统是不完全的。
G`odel 不完全定理
※ 来源:·BBS 听涛站 tingtao.net·[FROM: 211.150.232.220]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:225.798毫秒