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