林夏的机械键盘敲出第一串字符时,凌晨三点的服务器机房正发出蜂鸣般的嗡鸣。他盯着屏幕上滚动的报错代码,指尖在“F12”键上悬了半秒——这个键位的键帽边缘已经磨得发亮,是三年来无数次调试程序磨出的痕迹。监控屏上,某省分公司的网络负载曲线像条垂死的蛇,在红色警戒线下微弱起伏,最后定格在“断开连接”的灰色提示上。
“林哥,交换机日志刷爆了。”实习生小孟的声音从耳机里钻出来,带着熬夜后的沙哑。小姑娘的摄像头角度总对着天花板,能看见她扎着丸子头的发顶,此刻正随着敲击键盘的动作轻轻晃动,“报错信息全是‘认证失败’,像是被什么东西攻击了。”
林夏调出防火墙记录,密密麻麻的Ip地址像蝗虫过境的田垄。他快速筛选出重复访问的异常地址,地理位置显示来自境外的三个节点,攻击频率稳定在每秒300次,带着明显的自动化脚本特征。
“不是黑客。”他把过滤后的日志截图发给小孟,“看时间戳,凌晨两点十五分准时开始,三点零七分停止——像个定时任务。”
机房的空调突然抽风似的响了一声,冷风卷着灰尘扑在显示器上。林夏扯了扯领口,印着公司logo的工牌硌在锁骨上,有点疼。这是他在“云启科技”做技术支持的第三年,值过的夜班能凑满五个月,最忙的时候连续48小时没合眼,最后在服务器机柜旁睡着了,醒来时发现袖口沾着块融化的散热硅脂。
“那是……分公司自己的运维在搞测试?”小孟的鼠标点击声噼里啪啦响,“可他们没走变更流程啊!上周刚强调过‘非授权操作一律按事故处理’。”
林夏的目光落在屏幕角落的日历提醒上——今天是某省分公司系统升级后的第七天,按惯例要做压力测试。他想起上周对接的王工,电话里总说“我们这边有自己的流程”,提交的测试方案里连最基本的回滚机制都没写。
“给王工打电话。”林夏抓起桌上的保温杯,里面的枸杞茶凉透了,“开免提,我要听着。”
电话响了八声才被接起,背景音里有麻将牌的碰撞声。王工的声音带着宿醉的含糊:“谁啊?大半夜的……”
“王工,我是总部技术支持的林夏。”林夏的指尖在键盘上敲出回滚指令,“你们是不是在做压力测试?现在全省的终端都连不上服务器了。”
“测试?没……没有啊。”王工的声音突然清醒了,“我们运维小张今天休息,没人动服务器啊!”
林夏的心沉了沉。他切换到数据库界面,发现核心表的索引被恶意删除了,日志里留着条伪装成系统进程的操作记录。这不是测试失误,是人为破坏。
“小孟,查小张的登录记录。”他的声音稳得像服务器的运行灯,“看看今天凌晨有没有异地登录。”
机房的时钟指向三点四十分,窗外的天开始泛白。小孟突然惊呼一声:“林哥!小张的账号在凌晨两点登录过,Ip地址是……他老家的网吧!”
林夏想起王工提过,小张的父亲上周突发脑溢血,他请假回了老家。这时候在网吧登录工作账号,太反常了。
“联系小张。”他点开加密通讯软件,“用紧急通道,问他账号是不是被盗了。”
等待回复的间隙,林夏开始重建索引。代码在屏幕上流淌,像条修复破损堤坝的河流。他想起刚入职那年,也是这样的凌晨,自己负责的系统被勒索病毒攻击,老主管带着他通宵重搭环境,天亮时递过来半块凉透的月饼:“做技术的,手里得有两把刷子,心里得有三分热。”
四点十七分,小张的回复终于过来,是段带着哭腔的语音:“林哥……我的账号被网吧的人盗了……他们说不把服务器搞瘫痪,就不给我爸做手术……”
林夏的指尖顿在回车键上。他点开小张发来的照片,网吧角落里,几个纹身的男人正围着台电脑,屏幕上赫然是分公司的服务器后台。
“稳住,”他对着麦克风说,“把定位发给我,别挂电话,我现在报警。”
处理完警情,重建好索引,已经是早上七点。分公司的终端陆续恢复连接,监控屏上的负载曲线重新爬回安全区,像条缓过气的鱼。小孟趴在桌上睡着了,丸子头歪在一边,键盘上还沾着她没吃完的薯片渣。
林夏给她盖上自己的外套,走到茶水间冲了杯速溶咖啡。咖啡机的嗡鸣里,他听见手机在口袋里震动,是母亲发来的视频请求。
“小夏,又熬夜了?”母亲的脸出现在屏幕上,背景是早点摊的蒸汽,“你爸让我问问,这周能不能回家吃顿晚饭?”
林夏的喉结动了动:“妈,这周有个重要的上线,可能……”
“又是上线。”母亲的声音低了下去,“你爸昨天去菜市场,看见你最爱吃的排骨,非说要给你留着。”
他看着屏幕里母亲鬓角的白发,突然想起上次回家还是三个月前,父亲在饭桌上反复说“别总对着电脑,对眼睛不好”,自己却盯着手机里的告警信息,没好好听。
“下周末,”林夏吸了口咖啡,苦味呛得他眼眶发热,“下周末我一定回。”
上午九点零三分,部门主管李姐踩着高跟鞋走进办公室,香风裹着份打印好的通报。她把通报拍在林夏桌上,红色的“嘉奖令”三个字晃得人眼晕:“小林,昨晚的事立大功了!分公司老总亲自打电话来道谢,说你挽回了至少两百万损失。”
林夏的目光扫过通报,发现里面写着“技术支持团队反应迅速,主管林夏指挥得当”——明明是小孟先发现的异常登录,明明是小张冒着风险发来的证据。
“这是团队的功劳。”他把通报推给李姐,“小孟熬夜排查,小张提供了关键线索,应该给他们嘉奖。”
李姐的笑容僵了一下,又很快舒展开:“你这孩子,就是太实在。晚上部门聚餐,我请客,算是给你庆功。”
林夏想拒绝,手机却突然响起,是个陌生号码发来的短信:“林工,我是社区医院的王医生,上次你帮我们修的挂号系统又出问题了,能不能麻烦你来看看?”
他想起这家社区医院,硬件还是十年前的老旧设备,系统是 volunteer 开发的开源项目,总出各种小毛病。上次去修系统,看见走廊里挤满了等着挂号的老人,颤巍巍的手捏着皱巴巴的病历本。
“晚上的聚餐我去不了。”林夏抓起工具包,“社区医院的系统坏了,老人挂不了号。”
李姐的脸沉了沉:“那种小医院的破系统,让他们自己找外包修!你昨晚熬了通宵,今天该休息!”
“他们请不起外包。”林夏的指尖划过工具包上的磨损处,这是上次帮养老院修打印机时磕的,“我去去就回。”
社区医院的挂号处已经排起了长队。王医生搓着手,白大褂上沾着碘伏的痕迹:“林工,真是不好意思,知道你忙……”
“先看看系统。”林夏蹲在主机旁,开机键已经陷了进去,得用牙签戳才能启动。屏幕上跳出满屏的乱码,像是数据库崩溃了。
“早上保洁阿姨擦桌子,不小心碰掉了电源线。”王医生的声音带着歉意,“再开机就这样了,里面还有三百多个老人的预约信息呢……”
林夏拆开主机箱,灰尘呛得他直咳嗽。硬盘的指示灯不亮了,是物理损坏。他的心凉了半截——这种老硬盘,数据恢复的成功率不到三成。
“王医生,有备份吗?”
王医生的脸瞬间白了:“备……备份盘上周摔坏了,还没来得及买新的……”
排队的老人里传来叹气声,个拄拐杖的大爷颤巍巍地说:“小伙子,修不好就算了,我们明天再来吧,别耽误你上班。”
林夏没说话,从工具包里掏出备用硬盘和数据线。他记得这系统的架构,核心数据都存在本地文件里,或许能通过日志恢复一部分。
“大家稍等,”他的声音透过人群传出去,“我尽量把预约信息找回来。”
中午十二点,林夏终于恢复了大部分数据。挂号系统重新启动时,老人的欢呼声差点掀翻屋顶。王医生非要塞给他个保温桶:“这是我妈熬的小米粥,你垫垫肚子,千万别嫌弃。”
粥是温的,带着股淡淡的姜味。林夏蹲在医院的台阶上喝着粥,看着老人们拿着崭新的挂号单走进诊室,突然觉得比拿到嘉奖令还踏实。
下午两点十七分,林夏回到公司,刚坐下就被李姐叫进办公室。她指着电脑屏幕上的邮件,脸色比乌云还沉:“总部审计组发来的,说你擅自给外部单位提供技术支持,违反了员工手册第37条。”
林夏看着那封措辞严厉的邮件,心里像被塞进块冰凉的硬盘:“社区医院的系统关系到老人挂号,我……”
“关系再大,也不能违反规定!”李姐把员工手册拍在桌上,“审计组说要扣你这个月的绩效,还要给你记过处分!”
林夏的指尖抠着掌心。他想起自己的工资条,扣除房贷和给父母的生活费,这个月的绩效扣掉,可能连水电费都不够。但他不后悔——早上那个拄拐杖的大爷,挂号时颤巍巍地说“要是挂不上号,我这腿就只能拖着了”,那眼神里的期盼,比任何规定都重。
“我接受处分。”他转身往外走,“但下次遇到这种事,我还会去。”
回到工位,小孟递过来杯热奶茶,吸管上沾着个笑脸贴纸:“林哥,我把昨晚的排查记录发给审计组了,说你是为了处理紧急故障才没参加培训,他们说……可能不扣绩效了。”
林夏的心里暖了一下。他看着小姑娘电脑屏幕上的代码,写得有点乱,却充满了生命力。这让他想起自己刚学编程时,老主管说的:“代码是死的,人是活的。做技术的,不能只盯着屏幕上的报错,得看看屏幕外的人。”
下午四点,林夏接到小张的电话。小伙子的声音带着劫后余生的哽咽:“林哥,警察把那些人抓了……我爸的手术费凑齐了,谢谢你……”
“好好照顾你爸。”林夏看着窗外,阳光穿过玻璃照在服务器上,机箱的金属外壳泛着温暖的光,“账号记得换密码,用大小写加特殊符号。”
挂了电话,他开始写事件复盘报告。在“经验教训”那栏,他写下:“建立异地登录告警机制,给基层运维人员做安全培训。”想了想,又加了句,“关注员工异常状态,及时提供帮助。”
六点半,同事们收拾东西准备下班,讨论着晚上聚餐的地点。林夏打开加密文件夹,里面是他利用业余时间开发的小程序——个适用于老旧设备的轻量挂号系统,体积小,易操作,专门给社区医院和养老院用的。
他把程序压缩包发给王医生,附言:“这个系统稳定些,有问题随时找我。”
王医生很快回复了个哭脸表情,后面跟着句:“林工,你真是个好人。”
林夏笑了笑,关掉电脑。窗外的晚霞染红了半边天,服务器机房的嗡鸣似乎也温柔了些。他想起老主管退休前说的:“技术这东西,就像水,能载舟,也能覆舟,关键看用的人心里装着什么。”
走出公司大楼,晚风带着点凉意。林夏摸出手机,给母亲回了个电话:“妈,下周末我一定回家,想吃爸做的排骨。”
“真的?”母亲的声音亮起来,“我让你爸现在就去买,冻在冰箱里,等你回来正好新鲜。”
挂了电话,林夏抬头看了看写字楼的灯火。无数个窗口亮着灯,像无数双注视着世界的眼睛。他知道,自己只是其中最普通的一盏,但只要这束光能照亮某个角落,能帮到某个人,就不算白亮。
地铁进站了,林夏随着人流走进去。车厢里,有人在用手机挂号,有人在远程办公,有人在和家人视频。他们或许不知道,某个服务器的角落里,某个代码的缝隙里,藏着像他这样的技术人员,用一行行字符,守护着这些平凡的日常。
林夏掏出耳机戴上,里面播放着他最喜欢的纯音乐。旋律流淌间,他仿佛看见自己写的代码变成了一条条路,连接着那些需要帮助的人,通向那些被遗忘的角落。明天早上九点,他还会准时坐在电脑前,处理告警,调试程序,像个沉默的摆渡人,在数据的河流上,撑着技术的船,把每个人送到想去的地方。
他的机械键盘还在工位上等着他,“F12”键的磨损处,明天会再多一道微光。