service 是被 systemd 启动的,可是在 servrice 进入 loop 的时候,被 /lib/systemd/systemd kill 了。我为什么知道是被 systemd kill 了呢?因为我用 strace 命令追踪了它的系统调用。发现它向 service 发送了 SIGTERM 信号。如果用 systemctl start 重启,又会被杀。可是我如果手动键入命令行重启,就正常了。
老实说,以前只是粗浅了解过 systemd. 难道 systemd 发现了什么异常情况然后想杀掉 service?比如内存使用过多?因为我看启动 log 提示代码中有 calloc()函数分配失败的情况。不过由于代码过于庞大,目前还没有找到是哪里调用的 calloc () 。网上搜索了一下,发现 systemd 限制内存似乎要看 /sys/fs/cgroup/memory/system.slice/。可是我系统上连 /sys/fs/cgroup/memory 都不存在。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.