TGTGInsighttelegram intelligenceLIVE / telegram public index
Post content
帖子内容
unix domain socket 不会在关闭连接后自动清理掉文件系统中的 socket,这会导致下次无法 bind 到这个路径。我一直的做法都是确保在程序退出前 unlink 掉它,这依赖于程序可以 gracefully exit 的假设,但只要我不乱发 SIGKILL 并且不 OOM 就应该还好。 今天发现 ssh 如果用 LocalForward 在本地创建了 unix domain socket,退出时居然不会自动 unlink,会导致下次 LocalForward 无法工作。查解决方案的过程中发现应该 StreamLocalBindUnlink yes(并且这个选项完全可以全局一直设置为 yes): https://unix.stackexchange.com/questions/427189/how-to-cleanup-ssh-reverse-tunnel-socket-after-connection-closed 这个答案中提到,最好的做法似乎是 bind 前 unlink 旧的 socket,不用费心在退出时 unlink。这听起来不错。 (不过 ssh 的 control master 总会在退出前 unlink socket,除非是被 SIGKILL 的。)