机场广播催第三遍的时候,我排在队伍最后面。
前面八个人有说有笑,一个接一个过了闸机。
轮到我了,身份证贴上去,绿灯没亮,机器发出长长一声鸣响。
沈经理站在闸机另一头看着我,笑了笑,说老张,名额超了,您的票没买成,要不先回去?
后面排队的人开始催,几个同事回过头来看我。
我没说话,拖着行李箱让到一边,看着他们走进登机口。
回到家,我把工牌摘了放在茶几上,倒头就睡。
半夜两点四十分,电话炸了。
沈俊驰的声音从听筒里挤出来,嘶哑得几乎听不出人声:“张建强,系统全瘫了,客户那边全堵死了,你回来行不行?”
![]()
01
我在这家物流公司干了二十三年。
公司总部在城东,六层灰楼,门口挂着一块褪色的铜牌。我在三楼技术保障部上班,办公室靠窗最里面那张桌子,坐了半辈子。
技术保障部一共十个人,经理沈俊驰,三十五岁,来公司不到两年。
副经理董浩,五十二岁,跟我同期进的公司。
剩下七八个年轻人,流动性大,走走来来,我记不太全。
我管的事情很简单:公司那套物流调度系统。
客户下单、车辆派单、仓库进出、数据对账,全走这套系统。
系统是我年轻时候一行一行写出来的,从服务器选型到灾备方案,全是我的签字。
那时候公司刚起步,只有一台旧服务器,放在楼梯间改的小机房里。
夏天没空调,我光着膀子蹲在里面调试,汗珠子滴在键盘上。
现在那台服务器早退役了,搁在机房角落里落灰,但系统还在跑。
这套系统跑得太稳了。稳到这个公司都快忘了机房角落里那台旧设备还在喘气。
后来沈俊驰来了。
他是总部从外面招进来的,说是物流信息化的专家。
来了三个月,开了两次会,提了一个方案:换新系统。
他找了一家外包公司,叫云讯科技,负责人叫于广泽,四十来岁,寸头,西装革履。
沈俊驰在会上说,老张那套系统技术太旧了,维护成本高,市面上都找不到会写这种语言的年轻人了。得换,往新平台迁移,往云上走。
我当时没吭声。
散会后我跟到他办公室,把一沓报表放他桌上。
我说,这套系统里存了十三年账目数据、六万多家客户的合同记录。
换可以,但不能急。
数据迁移不是搬文件,格式、字段、关联关系,一个对不上,全乱。
沈俊驰笑着说,老张,您年纪大了,新东西学起来确实吃力,这个我理解。但公司要发展,不能守着一套老古董过一辈子。
我看了他一眼,没再多说。
那天晚上回到家,张晓雨打视频过来,问我最近怎么样。
她是我闺女,在外地读研。
我说挺好的。
她看了看我脸色,说爸你是不是又加班了。
我说没有。
挂了视频,我把我那台旧笔记本电脑打开,翻出十几年前写的系统设计文档,从头翻到尾。
我承认沈俊驰说得对,语言是旧了,我的年纪也大了。
但系统里那些数据,每一行都是我自己梳理的。
谁改了哪张表,动了哪个字段,我扫一眼就知道。
那个季度,技术保障部拿了个优秀团队奖。
沈俊驰在会上宣布:季度奖公司给了一笔团建经费,经我申请,全组去南方旅游。五天四晚,机票酒店都订好了,后天出发。
办公室一片欢呼。我坐在角落里没说话。
孙子安凑过来,是沈俊驰安排给我带的徒弟,二十七八岁,跟着我学了三年技术。
他压低声音问,师傅,您怎么不去?
我说我还没收到通知。
他说应该有的吧,您可是咱们部门的元老。
散会后,同事们围在一起查攻略聊吃的。我坐在工位上等了一会儿,行政那边没发消息给我。郑乐语过来了。
郑乐语今年二十四岁,实习生,刚来三个月。她跟我说话时声音很小,张工,你也没收到行程单吧?
我说嗯。
她犹豫了一下,把手机屏幕转过来给我看。行政后台的出票记录里,一共八张票,七个同事加上沈俊驰。没有我的名字。
我说,可能遗漏了,明天找沈经理说一声就行。
郑乐语看了我一眼,说张工,我帮您查过了。她说得很轻,出票时间是上星期五上午,那时候大家都还没讨论过旅游的事。
02
当天晚上我没睡好。
不是生气,说不上生气。就是心里堵得慌,像吃了什么不消化的东西。
我在这公司待了二十三年,从来没想过会被这样无声无息地剔除。
没吵架、没犯错误、没被谈话,就是这么安安静静地把你从名单里摘出去。
比辞退还难受。
第二天一早,我去了沈俊驰办公室。
他正在看手机,见我进来,把手机扣在桌上,笑着招呼我:“老张,坐。”
我在他对面坐下。他桌上摆着一份文件,封面上印着云讯科技的标志:系统迁移方案书。
我说,沈经理,明天出发的事,我没收到机票信息,想来问问。
沈俊驰愣了一下,露出满脸歉意:“我没跟您说?名额超了,您那个票行政那边没订上。我让行政想办法补,但那边说航空公司没舱位了,要不您这次就先不去?回头项目发了,我单独给您补个近的。”
我说,什么时候开始定名额的?
他避开了这个问题,说老张,咱们来日方长。
我看着他,从兜里掏出一张折好的纸放在他桌上。
那是早上出门前我打印的:权限变更提醒通知。
上面写着我的管理员密码有效期,修改日期是昨天下午。
沈俊驰扫了一眼,笑了笑:“系统安全升级嘛,外包那边提出的建议,说旧权限策略太老了。”
我说系统是我写的,我比任何人都知道它哪里老、哪里不老。权限可以改,但请提前通知我本人。他说好好好,下次提前说。
我从他办公室出来,在走廊上碰到于广泽。他手里也拿着一份方案书,见到我,愣了一下,笑了笑:“张工,还在忙呢。”
我说,你们什么时候进场?
他含糊地说,快了快了,得等新系统那边适配完接口再说。
我回到工位上坐了一下午,把系统里的日志调出来看了一遍。
我的管理员权限被降级了,从系统管理员降成了普通运维。
改动时间:昨天下午四点半。
操作人:孙子安。
我盯着那个名字看了很久,没有找他问。
下班后孙子安主动过来了。他站在我工位旁,张了几次嘴,声音低低的:“师傅,昨天沈经理让我改您的权限。”
我说我知道。
他说,我说改不了,必须有您本人的短信授权。沈经理说这是信息安全流程,您那边他去知会。他没知会您,他没跟您打招呼吧?
我没回答,反问他:你改了吗?
他摇头,说我没改,我给沈经理回了邮件,说不合规。
我看了他一眼,他的眼神有点发虚。
我说,后面如果再叫你改,你先别动手,你来找我。
他说好。
他迟疑了一会儿,又说,“师傅,沈经理还安排我整理老系统的数据字典,说要移交给外包方。”
我说,还有呢?
他说,他给的期限是后天,也就是旅游出发那天晚上。
我点了点头,让他坐下来。
我写了三张纸条交给他。我说你回去把这几张纸条背熟记牢,然后烧掉。
我说,数据字典可以交,但你把最后两百张表的字段结构给我做个替换,映射名称换个方式命名,字段含义不变,但外包方拿去对不上原系统。
他说师傅我不太懂。
我说你不用懂。
你只需要做一件事:把接口文档里最后两百张表的名称列改成别名。
新系统和老系统对不上号,他们自然不能乱动数据。
你做完之后,跟我说一声就行。
他抱着纸条走了。
我关掉电脑下班,在楼下看到郑乐语。她说,张工,您真的要让他们换吗?
我说,不换也拦不住,但那个系统里存的东西,我自己得有个数。
她没听懂,我也没解释。
![]()
03
出发那天早上,我提了一个电脑包到机场。
几个同事看到我两手空空,问怎么没带行李。我说,第二天可能来不了了,回来处理点事。
大家也没多问。
办理登记手续的时候,我排在最后一个。
前面八个人有说有笑地递身份证,领登机牌。
轮到我的时候,柜台的工作人员查了一下系统,抬起头说,您好,您没有预订信息。
我说,麻烦您再查一下,我叫张建强。
她敲了几下键盘,摇了摇头:“确实没有。”
我还没说话,身后传来脚步声。沈俊驰走过来,提着一个登机箱,看到我,愣了一下才开口:“老张,我不是说了名额超了吗?您怎么还是来了?”
我看了看他的眼睛,他眼神没在看我。
我说我确认一下。他笑着说,不用确认了,真没您的票。先去边上坐着歇会儿,回头我请你吃饭。
他转身走回排队的人群里。
我没走到边上去坐,站在原地看着他们一个个过了安检。
郑乐语排在倒数第二个,过安检前回头看了我一眼,那眼神里有不好意思,也有愧疚。
孙子安排在最后。他过闸机前迟钝了一下,站在安检口回头,被我眼神一碰,又慌慌张张转回去了。
我看着他们走完。
广播开始在催登机,我站在安检口旁边的落地窗前,看着那架飞机滑向跑道,升空,消失。我背着一个电脑包,从航站楼走回地铁站。
一路上我都没想明白,一个人要有多大的理由,才能这样笑着把另一个人从名单上划掉。
我没得罪过沈俊驰。
如果硬要说得罪,可能就是我还在用一套他不想用的系统。
回到小区,我在楼下小卖部买了一包烟。
十多年没抽了。
坐在小区长椅上抽了一根,呛得眼泪直流。
回到家,我给张晓雨发了条消息,说出差取消了,提前回来。
她没回,可能在忙。
我把电脑包放下,把工牌摘下来放在茶几上。工牌上贴着一张旧照片,还是我刚进来那年拍的,头发还很黑。
我拉开窗帘看了一眼外面,天已经暗了。想了想,又把窗帘拉上了。
晚饭随便吃了碗面。
吃完,我把家里收拾了一遍。
把阳台上几盆花的枯叶子剪了,把冰箱里的剩菜倒掉,擦了厨房的台面。
然后从衣柜最底层翻出一个旧信封。
信封里有一张纸,二十年前写的,还是因为单位统一要求,每年都要做一次数据灾备计划。
别人做计划都是写文档交上去就完事,我把那份文档写完之后,自己留了一张纸压在箱底:冷备服务器离线备份的完整目录清单和启动流程。
人说不上为什么做这些。
可能是习惯。
我写系统写了二十三年,所有担心的场景都在脑子里想过一遍:服务器断电、硬盘损坏、机房漏水、数据被误删。
我从来没想过,最坏的情况,是写这套系统的人被拦在闸机外面。
那天晚上十点,郑乐语发来一条消息:张工,您睡了吗?
我没有回。
十一点,她又发了一条:“系统好像不太对,测试环境连不上了,您要不要看一眼?”
我盯着手机屏幕看了很久,还是没回。
后来我把手机调成静音,扣在床头柜上,躺了下拉。
04
那晚断断续续做了很多梦,都是以前的事。
年轻的自己蹲在楼梯间那个临时机房里,面前是一台嗡嗡作响的旧服务器,屏幕上全是代码。
那时候公司刚起步,就一台机器。
客户打电话来问单号,都是我人工去系统里查。
后来公司越来越大,服务器一台一台地增加。
我从写代码一路干到搭架构。
机房从楼梯间搬到了地下一层,装了空调、消防设备和防静电地板。
一切都正规的时候,我的青春也花得差不多了。
梦里张晓雨还小,扎着两个辫子,站在机房门口喊我回家吃饭。她那时候五六岁,现在已经是研究生了。
醒来的时候四周一片漆黑。
我摸索着看了一眼手机,半夜一点五十。
未接电话四十八个,全是公司同事。
最新的消息来自董浩,副经理。
他说:“老张,你回个电话,出事了。”
我把手机放回床头柜上,翻了个身。过了一会儿还是睡不着,坐起来穿了件衣服,在客厅里坐了一会儿。
电话又响了。
这回我接起来了。
电话那头沉默了两秒,才传来声音。
不是沈俊驰,是董浩。
他声音有点发抖:“老张,系统全瘫了,客户所有的单子全部卡住。公司总部的电话已经被打爆了。”
我说,沈俊驰呢?
董浩说,他在机场那边,刚下飞机,还在往回赶。停了一会儿,他说:“老张,外包那边的人搞不定,沈经理说……想请你回来看一眼。”
我说我不是被移出名单了吗,让他们自己修。
董浩急了:“老张,这不是怄气的时候……”
我说我还是那句话,不是怄气。我的权限已经被移交了,理论上我没有访问权,我去了也是违规操作。
电话那头换了一个人。
沈俊驰的声音传过来,带着风声,应该是在机场大厅:“张哥,今天确实是我做得不对,回头我负荆请罪。但系统上全是公司的数据,客户等着出货,仓库那边已经乱成一锅粥了,您先来救一下,行吗?”
我没说话,听了他几秒钟,他又开口:“求你了。”
挂了电话,我在客厅里站了一会儿。
窗外的城市亮着灯,远处一座写字楼上有一排红点闪烁。凌晨两点多,主干道上没什么车。
我去卧室打开衣柜,翻出了那个旧信封。穿外套的时候,我停了一下。把茶几上那张工牌拿了起来,揣进兜里,出了门。
打车去公司路上,司机师傅从后视镜看了我两眼:“师傅,半夜加班啊?”
他说不容易,你们这个岁数了还要熬夜。
我看着窗外掠过的路灯,没说话。
到了公司楼下,地下一层机房的灯全亮着。董浩站在门口等我,看到我,松了口气:“老张,你可算来了。”
我说,于广泽的人呢?
他说在里面,已经忙活两个小时了,说是数据映射有问题,修不了,这会儿在会议室打电话找总部支援。
我没进会议室。我直接去了机房。
![]()
05
机房的门半开着,冷气从门缝里透出来,带着一股金属和灰尘的味道。我推门进去,里面的场景让我愣了几秒。
三个机柜的门全部敞开着,线缆乱成一团,几条线缠绕在一起。贴着我工位的那个旧机柜上,插着一根跳线,盘在柜顶。
最要命的是,冷备服务器屏幕上的状态灯全变红了。
我走过去,接了一个终端,敲了两行命令。屏幕跳动了一会儿,显示出一行提示:系统完整性校验失败。恢复时间点不可用。
董浩站在我身后问:“怎么样?”
我说,备份链断了。冷备服务器上的最后一次完整校验是前天中午,从那以后的所有增量备份全部失败。
董浩脸色变了:“那怎么办?”
我没回答他。我心里有数。
前天中午,正是孙子安把替换过的数据字典打包发给外包方的时候。
外包方拿到的字段名对不上,一旦按照那个映射关系去跑增量备份,必然会失败。
我坐到终端前,接上我带来的移动硬盘。
那是一块旧硬盘,USB口都有点松了,得扶着一个角度才读得出来。
那里面存着我二十年来每一次手动校验的完整快照。
我扶着一个歪斜的角度,看着硬盘指示灯闪了一下,屏幕上的进度条开始跳动。那一瞬间,我的手有点抖。
不是激动。是确认——我知道会出事,但我没想到他们会在我走之后第一个晚上就动系统。
我坐在凳子上,开始一条条恢复数据。
机房的空调嗡嗡响着,墙面上的钟指向凌晨三点。
我不知道时间过去了多久,只记得每隔一段时间,玻璃门外面就透着人影晃动。
郑乐语站在门外看了我好几趟。
凌晨四点二十分左右,系统开始慢慢恢复了。核心交易表一条条地重新上线,数据从旧镜像里重新加载。
我靠在椅子上,抹了一把脸上的汗。
然后我干了一件让董浩看不懂的事。我打开终端窗口输入了一行命令,把系统日志导出一份,直接传到了我的私人邮箱里。
董浩看到那个操作,问我:“老张,你导这个干嘛?”
我说做个记录。
他说,你怀疑谁?
我没有正面回答,问他:“沈经理和于广泽的人什么时候到?”
董浩看了看手机:“沈经理已经下飞机了,正在往回赶。于广泽那边说,技术人员还在排查问题。”
我说,他们来了也查不出来。这个系统不是他们的。
我说完这句话,又打开了一个文件夹。
那个文件夹的位置很隐蔽,藏在一堆系统文件的中间。
那是多年前我自己留的一个记录文件,只记一件事:谁在什么时候对我的系统做过什么操作。
我打开记录文件,把昨晚的变化逐条看了过去。
看完了,我把文件关掉,沉默了很长时间。
董浩问我,发现了什么?
我说,董哥,昨天晚上九点十三分,有人用沈俊驰的账号登录过系统,把主库的备份计划停掉了。
九点四十分,有人把管理员权限移交给外包商。
十点一刻,外包方开始执行切换。
董浩愣住:“你是说……他们早就计划好了?”
我说备份是前天晚上停的,系统切换是昨天凌晨执行的。只是他们没想到切换会失败。数据格式不兼容,字段名对不上。
董浩的脸色变了又变。
他最后问了一句:“那你现在……还帮他们恢复?”
我看着屏幕上一直跳动的进度条,没说话。
系统在响着轻微的电流声,机房里那股灼热的气息像被什么东西搅动了一下。过了很久,我站起来,把键盘推进去。
我说备份一直在恢复。系统是我写的。
就算他们把我剔除了名单,这台服务器还在用我写的代码跑业务。我也没法看着它死了不管。
06
凌晨五点多,系统的核心模块恢复得差不多了。
我站起来,腰酸得厉害。站了一会儿才觉得两条腿发麻,扶着机柜缓了缓。屏幕上的数字在跳,各表开始恢复同步。
董浩去外面接了个电话,回来跟我说:“沈经理落地了,在往公司赶。”
我没接话,蹲下身子检查机柜底部的线缆。
从刚才进门我就隐约觉得哪儿不对。
机柜下面,贴着地面那层,有一根线缆的接口松了。
不是自然松动的那种松,是被人拔下来过、又插回去了一半的松。
接口端有一道浅浅的刮痕。
我把那根线缆抽出来,看到接口处的针脚弯了一根。
董浩凑过来问:“这是什么线?”
我告诉他这也是我自己布的线。
十年前做的冷备服务器异机备份链路,平时不跑业务,只有每周做一次全量校验的时候,会自动握手启动。
如果这根线松了,冷备服务器接收不到心跳信号,就算本地备份数据是好的,异机也起不来。
董浩脸色不太好:“你的意思是,有人动了这根线?”
我没接话,把那根线缆接口重新插紧,拧好螺丝。站起来之后,环视了一圈机房。
机房里有监控。我抬头看了一眼角落,那个摄像头是的,平时一直亮着红灯,现在灭了。
我说监控什么时候坏的?
董浩也看了一眼:“这个我还真没注意。”
我拿出手机把那根弯曲的针脚拍了一张照片,又把镜头转到监控摄像头上,拍了一张黑暗的镜头画面。
董浩沉默了一会儿,开口:“老张,这事……”
我说,先干活吧。系统还没全好。
我坐回终端前继续恢复数据。到六点半左右,核心的订单模块已经恢复了大概八成。我揉了揉眼睛,站起来活动肩膀。
孙子安的电话打进来了。
他声音有点发抖:“师傅,我听说系统出事了,我……我刚下飞机就听说了。”
我说,你已经落地了?他说刚到。我说,走之前,外包方找你拿数据字典的时候,有没有让你做一些其他操作?
电话那边沉默了两三秒。
“沈经理给我打电话,让我把最后一版数据字典发给他。”孙子安说,“我就发给了他。”
我问,他有没有让你动其他东西?
他说他没有操作系统的权限。沈经理让外包方直接用他自己的账号。他的账号权限是最高级管理员,也是技术保障部的经理权限。
我说我知道了。
孙子安在电话那头迟疑着问我:“师傅,情况严重吗?”
我说没事,能修好。
挂了电话,我继续坐在屏幕前,把最后一批数据表的校验过程跑完。进度条走得比刚才慢,机房里的空气像是凝住的。
七点多快八点的时候,系统恢复了九成业务。我退出登录,把终端窗口关掉,把自己的移动硬盘拔下来放进包里。
董浩在外面喊了一声:“老张,沈经理到了。”
我背起包走出机房上楼。
沈俊驰站在技术部办公室门口,身上的衣服还是昨天出发时那件休闲外套,头发有点乱。他看见我,表情很复杂,像是努力挤出一个笑。
“张哥,辛苦了。”
我说系统已经恢复了八成。剩下两成是历史报表和归档数据,慢慢跑就行。
他说好,好,这次多亏了你。他顿了一下,又说,“回头我写报告,一定把你的功劳写进去。”
我看着他,问他:“你准备怎么写?”
他说就写你临危受命,救了系统。
我说我本来就在应急名单里,还是说我这个被移出旅游名单的人,正好留在了本地,刚好赶上了事故。
沈俊驰愣住了。脸上的笑容有些僵硬,说:“老张,这哪的话……”
我没接话,直接走回了自己工位,坐下来打开电脑,开始写情况说明。
孙悟空的玩笑话在脑子里转。
我知道他心虚。
他心虚的根源在于系统崩溃的时间点太巧,巧到让人不得不怀疑。
但他大概不知道,那根被拔掉一半的线,在系统日志里留下的心跳断档记录是能查到时间的。
我写完了情况说明,保存,没有马上发出去。
![]()
07
上午十点,公司总部召开电话复盘会。
会议室里坐了七八个人。
董浩坐在我旁边,低着头翻手机。
沈俊驰坐在长会议桌另一头,面前摆着一台笔记本电脑。
孙子安和郑乐语没列席,坐在外面的工位上。
会议是总部的副总裁钱总主持的,通过视频连线。
会议开始后,沈俊驰第一个发言,讲了五分钟。内容先是道歉,说作为部门负责人,对本次重大事故负管理责任。
后半段语气转了,说他本人对系统风险早有预判,曾经多次提出替换系统的建议,但部门内部没有形成统一共识。
他说“个别老同志”对系统换代有抵触情绪,导致行政指令和技术实施之间出现了断层。
他没有点名,但会议室里所有人都知道他说的是谁。
钱总在视频那头听完,转头问:“张建强在吗?”
我说,在。
钱总说:“你是系统的主要维护人,你来分析一下,技术层面上,这次故障的核心原因是什么?”
我站起来走到投影仪前,把自己的电脑接上去。屏幕上弹出一个窗口,会议室里的人安静下来。
我点开一张截图,是人电脑桌面上的一张权限变更记录。
“前天下午四点二十分,我的系统管理员权限被降级为普通运维员。原因注明,岗位调整。审批人是沈俊驰。”我话音刚落,会议室里一阵低语声。
我翻开第二张截图:备份计划停用记录。“昨天晚上九点十三分,系统自动备份计划被停用。操作账号……也是沈俊驰的。”
沈俊驰坐在椅子上,脸色苍白,嘴唇绷成一条线。
我没停下来,继续点开第三张截图:一条权限移交清单。
外包公司云讯科技的账号,被授权为临时系统管理员。
执行时间是昨天晚上九点四十分,审批人一栏还是沈俊驰。
我退出系统窗口,调出监控摄像头的拍摄记录,屏幕上显示着黑色画面。
我说:“这是机房摄像头昨晚的记录。从昨晚八点到今天早上六点,监控画面是无信号状态。”
我把手机连上投影仪,放出那张接口针脚弯曲的照片:“冷备服务器的心跳线接口处,有人为拔插过的痕迹。时间大约在昨晚八点到九点之间。”
会议室陷入一片死寂。
沈俊驰终于开口了,声音发干:“我没有进过机房。”顿了顿又说:“权限是我签的,但具体操作不在我手上。晚上九点多我还在机场,准备登机。同行的同事都能作证。”
我看着他:“你的意思是,你的账号被别人用了?”
他说:“我不知道。”
我不疾不徐地切到第四张截图,屏幕上弹出后台操作日志:晚上九点十三分,一个来自总部长途电话地址的账号登录。登录IP,是机场WiFi。
沈俊驰看见了那行IP地址,没有马上说话。过了一会儿,他开口说:“我自己在机场用手机登录过系统,查看邮件,这有什么问题?”
我说:“查看邮件不需要停备份计划,也不需要修改备份策略。”
会议室里的沉默更长了。还是钱总先说话:“张建强,你反映的这些内容我会让信息安全那边核实。今天这个会先到这里。”
会议结束后,我回工位上坐了一会儿。沈俊驰从我身边走过,脚步停顿了一下,没有低头看我,低声说了一句:“张建强,你够狠的。”
我抬头看他:“我说的是不是事实,你心里有数。”
他没有回答,走过去了。
下午两点多,公司的信息安全主管和法务的人来了。
他们查了后台操作日志,确认昨晚九点十三分到十点一刻之间的操作,全部通过沈俊驰的账号完成。
但那个时间点,沈俊驰的手机确实在机场,他的航班是九点五十分起飞。
由于手机飞行模式,操作时间可能存在偏差。
机场WiFi的记录在后台能调取,但沈俊驰的手机如果使用了代理或远程连接方式,“远程登录”这一条的指向就变得模糊不清了。
也就是说,可能是他本人操作,也可能是他授权给于广泽那边的人,用他的账号远程执行。
我不清楚内部怎么查的。当天晚上,沈俊驰被停职了。
临走前他把自己的东西装进一个纸箱,抱着走出办公室。
我没有抬头看他。
他走到门口时,停了一下,声音不高不低:“张建强,你以为我会走多远?走了我这个,你以为就不会有下一个?”
我没接话。他走了。办公室安静下来。同事们都在工位上沉默地坐着,我看到郑乐语低着头,眼眶泛红。我不知道她在哭什么。
但那一刻,我心里没有一丝一毫的痛快,反而有一种说不出的疲惫。
08
沈俊驰被停职后的第三天,公司联合调查组出了初步结果:外包项目合同签订、人员调动及系统切换操作上的违规行为与沈俊驰有关。
云讯科技的相关合作暂停。
董浩私下跟我抱怨:“老张,你说你这又是何必。”他在茶水间里,“他走了,对公司来说再招一个经理就是一份招聘启事的事。你不一样。你还要在这个办公室继续待下去的。得罪了什么人,你自己心里清楚。”
我没吭声。热水杯握在手里,烫得掌心发热。
其实我也不是没想过这个结局。做这种事之前我就知道,站出来说话的人往往没有好下场。
但我有什么办法?
沈俊驰签了自己的名字下去。
备份停用的是他的账号,权限移交的是他审批的。
而那根松掉的心跳线,监控记录为什么是空白的?
沈俊驰后来说他不在机房。
这世上有几个人能进机房?
这套系统是我写的,机房是我管的。
我要是那天半夜不回来,整条业务线彻底瘫痪,损失少说几百万。
到时候责任算在谁头上?
算我张建强头上——因为我“离岗”了“不留心”。
而沈俊驰早在几天前就拿到了签字审批。
他甚至可能在很多场合说过一句话:老张毕竟年纪大了,交接的关键节点确实容易出错。
孙子安后来告诉我,沈俊驰出发前一天找他聊过一次。
孙子安说,沈经理问他,如果你师傅不在公司,系统的自动恢复能不能在一个小时内完成。
那时候孙子安不懂这句话背后的意思,但我知道。
沈俊驰关心的从来不是旅游。
他需要的是一个窗口期,一个整个研发部和保障部门都在飞机上、联系不上的空档。
而这个计划唯一的障碍,是我。
因为只有我在,才能在三分钟内看出心跳线断了,才能用一个移动硬盘在两个小时内把备份拉回来。
他必须把我从那个名单上摘出去。
我没法证实这个推测。
也没有证据证明那根线是沈俊驰指使人去拔的。
他比我聪明得多。
从头到尾,他只做一个动作:签字。
剩下的细节,留给外包商去执行。
签字留下痕迹,但他的解释永远是“行政决策”。
他把我的机票摘掉的时候,是不是也想过这种后果?
也许想过。
也许他觉得,一个五十五岁的老头子,能翻出什么浪来。
星期一上午,新来的技术保障部经理到岗了。
姓薛,四十出头,戴着金丝眼镜。
他和我握手时扶了一下镜框:“张工,久仰。系统是你写的,我刚来,很多地方要跟你学。”
我点头,简单说了句客气。他笑了笑,没再多说。
薛经理跟我不一样。
他是正规军出身,做了十年大厂架构师,PPT讲得漂亮,表格做得极其规整。
他来了以后,每周一二都会开个站会,用白板画架构图,领着一帮年轻人做复盘。
我的位置在工位最里面。他来的头一周没找我单独谈什么,倒是经常在孙子的工位旁边停留,问他数据字典和接口文档的事。
孙子安每次都老老实实把自己写的文档给他看,连带着我让他替换过的那些别名表,已经全部找回来改了新版本,标注清晰,逻辑完整。
薛经理看了几页,眉毛微微挑了一下:“做得挺细。”
孙子安说,是师傅教的。
薛经理没接这句话。
有一次下班后在走廊碰到薛经理,他递我一支烟,说自己以前在大厂带团队时也遇到过类似情况,老系统换新系统,一线建设的老骨干对新平台天然警惕,担心数据不稳、数据迁移不够安全。
他说:“张工,我理解你的顾虑。但这个时代不往前走不行,系统也一样。”
我没接。他自己点上烟,笑笑走了。我站在原地吸了一口二手烟,觉得有点刺鼻。
隔了几天,薛经理在例会上宣布要重新做一次全量数据迁移。
他让我负责数据源校验,孙子安做主数据映射,郑乐语配新系统的接口适配。
他的态度倒是温和,把分工讲完,还专门看了我一眼:“张工这边有没有困难?”
我说没有。他又问:“你的意思是,可以做?还是说,这活能交出去就行?”
我说这个我可以做。
他沉默了一会儿,最后拍板,让我把校验结果按周报的形式发给他备份。
那天下班后,我抱着一叠打印出来的表结构图回家。张晓雨发来视频邀请,我说不看,正忙。
她把视频改成语音通话,问:“爸,你脸色不好,是不是工作累了?”
我说没什么,就是换了新领导,适应中。
她在电话那头沉默了一会儿:“那个……上次你们不是去旅游了吗?你怎么说没去?”
我怔住了。我和她说的是出差取消,没有提旅游。想了片刻,我告诉她,公司的事别乱打听,她又不在那。
视频挂断后,我一个人把几张表结构图摊在餐桌上。脑子有点乱,心里也烦,但这活儿还是必须干。
正因为这系统是我写的,正因为那些人看得起它又看不起我。我才更不能让它倒在自己的手里。
![]()
09
系统迁移的第一轮联调安排在周四晚上。
薛经理的项目计划表向来漂亮,每个步骤都有时间节点、负责人和风险预案。我负责的数据源校验部分,他在周三下午就发了邮件确认。
周四下午五点多,他来到我工位:“张工,今晚的联调你把握好时间就好,不用太晚。”他看了一眼手表,“我约了客户吃饭,如果结果出来了,你直接在群里发就行。”
我说行。
他和客户吃饭去了。郑乐语站在我身后看着他的背影消失,压低声音说:“薛经理心可真大。”
我笑了笑没接话。
晚上七点,我带着电脑包走进机房。
机房新装了几台服务器,和原来那套旧架构并排摆着。
墙上贴着薛经理做的新拓扑图,底下用黑笔注了几个地方。
联调开始后,我在终端里发了第一批测试指令,数据源表像溪水一样流向新系统的数据库。
匹配状况比预期好很多。
孙子安把数据字典整理得极为细致,每一个字段的映射关系都标注了来源和换算逻辑,几乎看不到历史数据风格的痕迹。
我看到他标注的第一行就认出,那是从我二十年前的文档里继承过来的命名方式。
孙子安后来跟我解释,他重新把老文档翻了一遍,按字段逐条核对。
在他觉得含糊的地方,他就直接跑过来问我。
如果我当时开会没空,他就翻开我做文档时留下的注释备注,比对历史库样本,按逻辑推演“可能应该对应哪个关系”。
他做足了功课。
新库和前几百张表的匹配度很高,眼看着要收尾了。
联调跑到第三个模块的时候,系统报了一个异常。
我切进界面瞧了一眼,是老系统里一张十几年前的旧表,已经很久没有用过,连信息库里的备注都是“弃用状态”。
但那张表里存着的数据仍然在设计上被标记为“不可删除”。
新系统不知道这张表的优先级状态,在迁移到一半时把它当成了普通表,触发了约束冲突。
屏幕上的进度条停住了。我试了几种绕过方式都不行,新系统有自己的逻辑结构,绕过这个冲突,后面还得报错。
孙子安发来消息:“师傅,那个表怎么处理?”
我盯着屏幕想了很久。
那张表是当年公司刚上线客户时用的原始台账,也是这套系统最早的十八张表之一。
在业务上早就没有任何价值,我犹豫的是它的历史含义。
它毕竟是我写的第一版建表语句。
那时候用的还是老三板工具栏,连桌面键盘都要靠半角切换。
二十多年了,改它的成本很低,直接跳过就行。
但跳过那一行的时候,手还是停顿了一下。
我让我回忆起我当时为什么要留一张不可删除的表。不为了什么。就是留着,当一个路标。
深夜十点多,我做出决定,把它清空并标记为“历史归档”,不参与后续业务。
但单独导出一份离线备份,拷进我自己的硬盘留存,跟当年那张纸放在一起。
联调继续跑通了。凌晨一点半左右,全量校验结束。新系统上的数据与旧系统完全对齐,偏差为零。
我靠在椅子上,望着屏幕上的数字。机房的空调嗡嗡作响。新服务器和旧机柜并排站在那里,屏幕灯一闪一闪的。
孙子安还没走,坐在外面的工位上等我。我走出去时,他站起来,有点紧张地问:“师傅,成了吗?”
我说成了。
他咧开嘴笑了,又有点不好意思:“师傅,接口文档我重做了好几版。以前那套被你改掉别名的时候,我不明白为什么那么麻烦。现在我自己做映射时才发现,老系统的设计里有序号冗余和逻辑备份机制,如果当初不对照原版,永远不知道那两百张表的含义。”
我说,知道就好。
郑乐语也发来消息:“张工,刚看到群里结果了。你太厉害了。”
我回她一句:“早点睡。”
走出公司大门的时候,夜风有些凉。门口有几颗梧桐树,叶子黄了大半,被风一吹,簌簌落在我肩膀上。
我停了一下步子,回身看了一眼办公楼。三楼技术部办公室的灯还亮着,那是孙子安还在加班。
我走了几步,又停下来。兜里手机震了一下,是薛经理发来的消息:“张工,看到结果了,辛苦了。”
我没回。盯着手机屏幕看了一会儿,锁屏放回兜里。
回到家,我洗了个澡,在客厅里坐了一会儿。
电视柜上摆着那张旧照片:机房刚建成那年,我穿着工装站在新服务器的机柜前面,胸口别着工牌,一脸意气风发。
照片里的年轻人头发还是黑的。看着那张照片,我想起一件旧事。
那年的机房落成剪彩,老总跟我并肩站着,拍我的肩膀说,建强,公司这套系统就是你的孩子。
当时我笑着接下了这句话。如今明白,对于公司来说,再好的孩子,该退场的时候还是得退场。
没人会问一个孩子的意见,无论他为这个家干了多少年。
我站起来,走进卧室,把那张工牌从抽屉里翻出来,挂到了玄关挂钩上。我决定周一照常去上班。
系统是干活的,人也是。既然没到最后撒手的时候,就把该做的事做完。
10
天气开始转凉了。
新系统的第一次全量运行已经跑了一周多,数据平稳,各模块的响应速度比旧系统快了很多。
薛经理在周例会上通报了结果,语气平淡:“这段时间辛苦大家了。特别是张工在数据源校验上做了很多扎实的准备工作,对接进度比预期提前了半个月。”
他话音刚落,会议室里响起一阵掌声。
我坐在角落里,没怎么说话。
掌声是拍给我的,但我不知道该高兴还是该感到讽刺。
鼓掌的人里,有些人不久前的旅游还没带我。
走了也好。
机场的那一幕再也与我无关,我也没必要再留在那个团队里充当一个可有可无的角色了。
散会之后,薛经理叫住我:“张工,下个月有时间吗?南方那边有个科技展,公司安排了几个人过去学习。我给你报了名,你看要不要一起?”
我又想到了机场的那一幕。我沉默了有几秒钟。
他似乎察觉到什么,接着说:“票已经买好了,明天的。”
我说:“经理,不用了,你们去吧。”
他看着我,似乎想说什么,最后只是道:“行,那回头我把资料发你。”
我走回工位坐下。窗外,灰蒙蒙的天空下,城市线条一片模糊。远处有一架飞机穿过云层,拖着一条细长的白线往南飞去。
包里的手机响了。我拿出一看,是张晓雨发来的视频请求。
我站起来,走出办公区,站在走廊尽头的窗边接通了。屏幕里,张晓雨的脸出现在画面中,她眯着眼睛笑:“爸,周末打算干嘛呀?”
我说没什么大事,跟你说个事,我准备去一趟海边。
她愣了一下:“你自己去?”
我说我订了两张票。周末有时间吗?陪爸去看看吧。她眼睛一下亮起来了:“真的假的?您居然肯出门了?”
我说去不去?
她立刻回答:“去!必须去。”
又说:“您等我,我这就去查攻略。”
挂了视频,我把手机收起来。窗外的天空亮了一些,阳光从云层缝隙里斜射而出,落在不远处一座写字楼的玻璃幕墙上,折射出刺眼的光芒。
周末的机场,航站楼里到处都是出门旅行的人。
我拖着一个小行李箱,走到值机柜台前,递出身份证。
工作人员扫描了一下,礼貌地递还给我,说了句“张先生,您的机票已经出好了,祝您旅途愉快”。
我接过证件,往安检口走。走了几步,脚步不由得停住了。
那种感觉时隔不久,来得却比上次更深。上次我站在闸机门口,八个人从我身边走过去。
我攥紧身份证,大步走向安检口。整个过程很顺畅。过了安检,我在候机厅里找了个靠窗的位置坐下。
手机响了一声。薛经理发来消息,简短的一句:“张工,新系统已稳定运行,总部那边很满意。听说你请假了,回头还是请你吃个饭,以表谢意。”
我没有回复。关掉手机屏幕,看了看登机牌上打印着的两个名字。持机旅客张建强和张晓雨。
广播开始播报登机通知。
我站起来,拉着行李箱走向登机口。
队列一点一点往前挪动。
轮到我刷登机牌时,绿灯亮起,闸门打开,发出一声清脆的提示音。
我走过闸机口,沿着廊道走向飞机。阳光从廊道的玻璃窗外透进来,晒在肩上,有些暖和。
下了飞机,张晓雨在到达口等我。我们叫了一辆车,直接奔海边去。傍晚时到了,海风挺大,带着咸湿的水汽扑面而来。
我站在防波堤上,远望海面。天际线被暮色染成一片昏暗的金红色,浪声一声接一声,反复冲刷着堤岸下的砂石。
张晓雨并肩站在我旁边,看了我一眼:“爸,你在看什么呢?我笑了笑,随口道:“没看什么。就是觉得,出来一趟感觉也挺好。”
她没追问,也望向海面,享受海风。
我低头看了一眼自己的双手,指节粗大,掌心有常年敲键盘磨出的老茧。
这双手曾经一行行敲出那一套系统程序,后来又亲手把它完整迁移到新平台。
它按下的那些键盘,会渐渐被新的人们使用和替换。
天色越来越沉。海风凉了,我转头对张晓雨说,回酒店吧。她点点头,挽着我的胳膊往回走。
路过海边的停车场时,广播里又传来航班到达的播报声,从远处飘了过来。我没有回头。
那些旅游照片、机票,和那段时间的经历,早就组成了这个世界的一种常态。我可以翻篇,但决不会忘。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.