首页  /  Reading Notes

随笔小记

读完的东西,写下来才算真的读过。这里放读书笔记、看完的片子,以及几条自己反复要查的运维命令。

全部 读书 Linux 运维

共 10 篇  ·  最近更新 10.24

Reading   读书笔记

读过的几本

都是书单页里贴过的那几本,读完把想到的写下来。

Reading · 读书笔记

泡茶馆、跑警报:汪曾祺写的不是传奇

这本书最打动我的地方,是它写战争的方式。全书几乎没有一句宏大的口号,满篇都是茶馆、书摊、曲会、昆明的雨。警报响了就跑,跑完回来接着上课;疟疾发了就躺着,躺完接着吃米线。苦难没有被抹掉,但也没有被写成悲壮。

汪曾祺写老师尤其好。沈从文、闻一多、金岳霖,在他笔下不是教科书里的名字,是有声音、有脾气的人。他写金岳霖讲课时会突然停下来问"这个问题很有意思,你们想想",写闻一多上课抽烟,写吴宓走路的样子——几笔就把一个人的气质勾出来。

他在序里那句话我读了很多遍:"我要不是读了西南联大,也许不会成为一个作家,至少不会成为一个像现在这样的作家。"一所大学给一个人的,不只是课程和师承,更是一种自由、开阔而不失质朴的气息。这种气息后来全进了他的小说和散文里,变成了那种温润、疏朗、有人间气的文字。

读完最大的感受是:真正的从容不是没见过苦难,而是见过之后还能把日子过出滋味来。

Reading · 读书笔记

"德"与"刀":唐宋之间那两百六十年

安史之乱之后到赵匡胤黄袍加身,中间这两百六十多年,课本上往往一笔带过。渤海小吏把它拆成了十二场仗,一场一场讲:藩镇怎么坐大、宦官为什么必须掌神策军、黄巢怎么把门阀烧成灰、石敬瑭为什么肯割幽云十六州。

全书的骨架是"德"与"刀"的关系——手里握刀的人始终在书写规则,而秩序的重建往往靠的是另一批人对刀的重新分配。这个视角不算新鲜,但作者把它放在具体的战争和人事里讲,就不显得空了。

几个读完还记得的点

  • 仆固怀恩从平叛功臣变成叛将,中间只隔着几次朝廷的猜忌;
  • 郭子仪手握重兵却不做司马懿,靠的不是忠诚,是持续把自己变得"无害";
  • 杯酒释兵权真正的意义,是终结了武人专权这个持续两百年的痼疾。

作者的语言很口语,偶尔会跳出来说几句人生感悟,读快了会觉得啰嗦,但放在通勤路上听,反而合适。

Reading · 读书笔记

一骑红尘妃子笑:一个小吏的五千余里

故事很小:贵妃要吃鲜荔枝,岭南到长安五千余里,谁去运?落到九品小吏李善德头上,就成了个死局。马伯庸的厉害之处是把这个死局拆成了可以计算的步骤——路线、保鲜、运力、钱粮、通关文书,一项项试,一项项崩。

读的时候很难不代入。李善德算得越精细,越显得荒诞:整件事从头到尾没有一个人关心荔枝好不好吃,所有人只关心"上面要"。而最后运到了,贵妃也没尝出什么特别。

书的篇幅很短,一个下午能读完。结尾那句"流程那种东西,是弱者才要遵循的规矩",我合上书想了很久。

Reading · 读书笔记

从档案里打捞普通人:显微镜下的大明

六个明代基层事件,材料全来自档案和民间文书。没有帝王将相,主角是算错税的账房、争祖坟的宗族、被征发的匠户。马伯庸的本事在于,他能从一份干巴巴的黄册里,把一个人的处境还原出来。

我最喜欢的一篇是《天下透明》,讲明代的户籍与赋役制度怎么在纸面上严丝合缝、在实操中层层走样。制度设计的精巧和执行的溃烂放在一起看,有种很强的黑色幽默。

读完之后再看"历史是人民创造的"这句话,会有点不一样的感觉——不是口号,是你真的在档案的夹缝里看见了那些人的名字。

Reading · 读书笔记

记住,是一种责任:《南京大屠杀》读后

这本书很难读,难读不在于文字,而在于内容本身。张纯如从日本人、中国受难者、在场欧美人士三个视角交叉叙述,把 1937 年冬天那六个星期一层层摊开。她没有煽情,大量的篇幅是在做考证:数字从哪来、证词怎么比对、为什么西方主流史书对此长期沉默。

序言里有一段我一直记得:她估算如果让所有死难者手牵手,队伍能从南京绵延到杭州;他们身上的血液重达一千两百吨。这些数字不是为了比惨,她在书里说得很清楚——"我的目的并不在于以数字证明它是人类历史上最邪恶的行径之一,而是要洞悉事件本身,从而吸取教训,以警世人。"

读完之后我很久没有再翻开它。但我觉得这类书就该存在:不是为了让人一直愤怒,是为了让人无法假装不知道。

Reading · 读书笔记

二手时间:理想崩塌之后的日子

苏联解体后的 1991 到 2012 年,阿列克谢耶维奇采访了大量普通人:清洁工、学者、士兵、商贩。书里几乎没有作者自己的声音,全是被访者的独白,一段一段叠起来,像一首很长的挽歌。

最难受的不是贫穷,是"意义的真空"。很多人一辈子相信的东西,在几年内被宣布为错误;他们不是愤怒,是不知道该拿什么替代。有人把勋章留着,有人把党证烧了,有人每天还是去原来的广场站着。

书名"二手时间"取自一位受访者的话:他们活在一个别人用过的时间里面。读的时候我一直在想,一个人要多少年才能确认自己相信的东西是真的。

Reading · 读书笔记

人间好玩,是一件需要练习的事

蔡澜的短文适合在心情不好的傍晚翻。一篇两三百字,讲吃、讲玩、讲女人、讲旅行,通篇就一个字:好玩。他写"人生的乐趣,说到底也就是吃吃喝喝",看似轻浮,其实是一种很硬的生活态度——既然日子多半不由自己安排,那就至少把能安排的那部分安排得舒服些。

我不完全同意他的一些观点,但他有个说法我很受用:把生活过好是一种能力,不是运气,是要练的。会挑一家好吃的面馆、会拒绝一场不想去的饭局、会在加班后给自己煮一碗面,这些都是练习。

书很薄,读完不用做笔记。它本来就不是用来记的,是用来翻的。

Linux   命令与运维

运维备忘

小机器也要好好维护。以下都是我自己反复要查、索性记下来的。

Linux · 命令

常用的 Linux 命令,按场景记

按字母背命令是最低效的方式。我按"我要干什么"来记,反而记得住。

找东西

# 按名字找文件
find /var -name "*.log" -mtime -7

# 在文件内容里找(比 grep -r 快很多)
rg "TimeoutException" /srv/app -n

# 找谁占了端口
ss -lntp | grep :8080
lsof -i :8080

看资源

# 整体负载
uptime
htop                       # 没有就 top

# 磁盘
df -h
du -sh /var/log/* | sort -h | tail

# 内存到底被谁吃了
free -h
ps aux --sort=-%mem | head

看日志

# 实时跟
journalctl -u nginx -f

# 只看今天的、只看错误
journalctl -u app --since today
journalctl -u app -p err --since "2 hours ago"

# 取某个时间窗口
sed -n '/2026-10-08 09:00/,/2026-10-08 10:00/p' app.log

权限与归档

chmod 600 ~/.ssh/id_rsa
chown -R www-data:www-data /srv/site

tar czf backup-$(date +%F).tar.gz /srv/site
rsync -av --delete /srv/site/ user@host:/backup/site/

这些都是每天会用到的,剩下不常用的,等用到再查也不迟。

Ops · 排查

线上出问题的十分钟:一个固定的排查顺序

机器挂了最忌讳的是凭直觉乱改。我给自己定了一个固定顺序,照着走至少不会越弄越糟。

第一步:确认影响面

是全部请求失败,还是部分?是突然还是缓慢恶化?先看监控和错误率曲线,不要一上来就重启。

第二步:按顺序排除

  • 负载:uptime 看 load,htop 看是哪个进程;
  • 磁盘:df -h,我遇到过三次都是日志把盘写满;
  • 内存 / OOM:dmesg | grep -i oom;
  • 连接数:ss -s 看是否打满;
  • 依赖:数据库、Redis、外部接口是否超时。

第三步:先看日志再动手

journalctl -u app --since "10 min ago" | tail -100

八成的问题在这一步就能定位。剩下两成才是真的需要改代码。

第四步:先恢复,后根治

能回滚就回滚,能重启就先重启。把服务恢复了再慢慢查根因,事后补一篇记录——这篇记录比当时的修复更重要。

Ops · 日常

一台 1 核 1G 机器的运维日常

这个站跑在一台很小的机器上。资源有限,所以每一件事都要做得轻一点。

日志一定要切割

# /etc/logrotate.d/site
/srv/site/logs/*.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
    copytruncate
}

不切日志,磁盘早晚是它的。

Nginx 的几个小设置

# 开启压缩,省带宽
gzip on;
gzip_types text/css application/javascript text/plain;

# 静态资源长缓存
location /assets/ {
    expires 7d;
    add_header Cache-Control "public";
}

备份

我没有做复杂的备份系统,就是一块移动硬盘,每周日晚上跑一次同步。脚本很短,但它救过我一次:

#!/bin/sh
DATE=$(date +%F)
tar czf /backup/site-$DATE.tar.gz /srv/site
rsync -av /backup/ /mnt/disk/backup/
find /backup -name "site-*.tar.gz" -mtime +30 -delete

运维这件事,做对了没人知道,做错了人人都知道。所以宁可把动作做得笨一点、稳一点。