debug记录

楼主: involution (内卷是好文明)   2024-08-07 04:16:26
之前遇到 log 档意外被删掉了 但 process 还在跑的情况
我就好奇那他现在是能写到哪
灵机一动跑到 /proc/<PID>/fd 底下看
发现长成下面这样
  1 -> '原路径 (deleted)'
然后我用 vim 去开、竟然也开的起来
还能看到一直有东西正被写进去
觉得奇怪 symbolic link 不是只存路径吗
这样 (deleted) 也行喔
查了一下是 procfs 的特异功能
这下旧 log 是看得到了 可是 process 还在跑
是能一直 cp 搬出来但感觉挺蠢的
停 process 的话也很可能会漏最后一段 log
所以我就想  既然都摸的到了
那我 hard link 他一下不就复活了吗
试下去之后失败了
再查发现 Linux 有特意禁止这件事
fs: Don't allow to create hardlink for deleted file
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
commit/?id=aae8a97d3ec30788790d1720b71d76fd8eb44b73
所以删光了就不能创 hard link 了
好像跟权限管理有关不过我没研究具体原因
最后就还是重开了
虽然有想过可能可以用 ptrace 搞点事
不过漏 log 事小 要是写烂搞到 process 发疯就糟了

Links booklink

Contact Us: admin [ a t ] ucptt.com