本文为 2024年3月工作生活总结。
研发编码
linux查看进程启动时间
场景:某机器运行的程序,需查看其测试期间有无重启。可从日志中知晓,也可由命令得知。
可用如下2条命令:
ps -p $(pidof foobar) -o lstart=,etime=
ps -p $(ps -e | grep foobar | awk '{print $1}') -o lstart=,etime=
说明:
- 使用pidof foobar查看foobar进程的pid,如无,则要用awk解析出进程pid。
- 使用ps -p查询信息,其中lstart=,etime=分别是输出进程启动时间和运行时长。
go线程数超最大值
某go工程,在windows运行出现线程数耗尽的问题,但在linux运行却正常。出错信息如下:
runtime: program exceeds 10000-thread limit
fatal error: thread exhaustion
目前尚未解决,后续计划用pprof跟踪排查。
使用容器编译的一种便捷方法
因工作原故,需在虚拟机上编译arm版本的程序,由于一些原因,不采用交叉编译的方式,而是直接用容器编译。
核心命令语句如下,可以其制作成脚本,方便使用。
echo "building for arm in docker"
docker run --rm --privileged multiarch/qemu-user-static:register 2> /dev/zero
docker run -itd --rm --name mybuild -v /etc/localtime:/etc/localtime -v /home/:/home \
-v /mnt/hgfs/E/project/:/project -v /usr/bin/qemu-aarch64-static:/usr/bin/qemu-aarch64-static \
-w /project/webproject/ \
registry.cn-shenzhen.aliyuncs.com/hxr/armbuild bash
docker exec -it mybuild make clean
docker exec -it mybuild make -j4
docker exec -it mybuild make clean
docker stop mybuild
说明:
- 假定工程为C++语言,使用Makefile编译。
- 先运行qemu,模拟arm平台指令。
- 再运行专用于arm平台编译的容器(该容器是自制),在运行命令中挂载磁盘和时区文件(以保证编译日期时间正确),同时指定qemu可执行文件,还需指定工作目录(-w)。
- 指定工作目录后,直接用
docker exec
会自动进入到该目录,用make即可编译。 - 由于是arm平台编译,因为在编译结束后会清除文件。
docker出现OCI runtime create failed错误
docker: Error response from daemon: OCI runtime create failed: /data/docker/overlay2/52f53ce0b2b74deb9db81c54f0298ad466c4e3d0c37bd25ed19846b154fff9e3/merged is not an absolute path or is a symlink: unknown.
ERRO[0001] error waiting for container: context canceled
解决办法:
将容器镜像删除干净,再重启docker服务,命令如下:
docker system prune -a
sudo systemctl start docker
执行记录:
$ docker system prune -a
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all images without at least one container associated to them
- all build cache
Are you sure you want to continue? [y/N] y ## 此处需手动确认
Deleted Containers:
3fba68d6d3e0a3666265545ed6d77cdee6c2e7ce2c14b0971de925824ef3b9d8
开源项目xz-utils后门
月底在网上看到帖子,开源项目xz-utils被植入后门,影响特定版本(5.6)的xz命令和liblzma库。有人做了分析,涉及到m4文件和cmake脚本,以仅有的一点正规表达式知识,已经看不懂了。回查了虚拟机,版本是几年前的,没被波及到。网络这个大千世界,真是防不胜防。很久前,有台虚拟机通过云主机开了远程访问,因为密码简单被种了木马,去年年底内网的服务器因密码简单也被攻破,虽然没有找到木马,为安全起见,机房管理人员要求重装系统,现在我不太想管安装系统的事了,所以拖到现在也没行动。但是万一真被有心人攻击或植入后门,以我水平,也是搞不定的。
生活记录
个税退税
去年大锤由幼儿园上小学,专项扣除忘记填了小学部分,所以个税APP上能退的钱少了。还好自己算了一次,发现了缺口,询问外包公司财务,回复说可以自行补填,于是退回申请再补填。经过半个月的审核,期间提交了房贷合同等信息,钱最终到手了。
我一直有记账的习惯,从收入上看,大锤出生至大妞出生这期间,是低谷期。当前已经从不用交税到退税额逐年小幅上涨,这少不了房贷、养老、2个小孩教育的贡献,但总的来看,向往美好生活的态势慢慢突现。当然,如果能有公积金、年金什么的,美好生活就更快到来了。
目前,我的生活中基本不会有诗和远方,出门工作房贷信用卡,进门柴米油盐酱醋茶。至于诗词,上班路上偶尔会读几句。
换地方上班
月底换了个地方上班,比之前的路程少了一点。不过还是按之前的作息时间。估计能提前20分钟到公司。
休养一段时间
搬东西那天,在朋友圈里写了几句话,其中借用了汪兆铭的词:我亦添头白。虽然有夸张成分,但肉眼可见的白头发多了起来,现在也不想去拔掉了,就让它们长着。年后至今,就有过几次熬夜超过1点钟的,一般在12点前已经上床了。如果一来,工作效率就低了,领导也批评了几次。但身体好了一些,白天不会感到胸闷,血压也降了一点,中旬有天献血,左手血压140,右手最高128。过几天收到短信,检查合格,过一周收到短信被医院使用了。效率挺高的。
育儿记录
自买了天文望远镜后,和大锤就看了2次星空,一次是看木星,一次是看月亮。大锤作业慢慢多了,阅读、朗读、背诵、写字打卡、看图说话。每天还有作业,月底有好几天都是写到晚上10点多。周末作业多,我又带着大锤去了博物馆、科技馆,还看了一次夕阳。少不了争吵,听到最多的话是,周末2天时间,2个人,作业还错了那么多。大锤作业退步了一些,我的拼音倒长进不少。本来是鸡娃,变成鸡自己了。
这个月分别参加了大锤和大妞的家长会,他们妈妈在学校发通知的第一时间就以命令式语气要求我参加。去年也是我参加,但没做笔记。今年吸取教训,写了重点拿回去交差。我对家长会不排斥,目前的教育形势是加强家校合作共育。这块是深切体会到了,目前的作业有2大类,一是课本练习,二是各小程序打卡,暂时不论过节要做的手工和社会劳动。
看到帖子说,家长对孩子的学习不能投入大深,影响孩子的自驱力,但低年级不管又不行。针对大锤的作业,目前的行动和计划是,对于课本作业,不要求全部都对(因为有答案,家长完全可以仔细看、改);对于朗读背诵,由于是程序打分,只能过得去就行,比如某周末的朗读打卡,大锤读一篇文章,很多次都是在40分以内,以我的听力水平,听不到哪里的问题,某次得到90分,就提交,而不是要求100分;对于练字,不要求多好,但时不时写几行即可。
至于让大锤背诵的诗词,他妈妈已经强烈反对,并把最近退步的原因归于此,认为我提前教让大锤产生厌学情绪。因此,只能在去外面玩的时间,背上一些而已,并要求大锤不能对任何人提到。关于此事,我坚持自己的看法和做法,并且不接受任何人或好或坏的意见和看法。虽然我读的书不多,看的儿童心理学知识不多,但还是坚持自我。