我想知道我是否尝试过这个:
$ sudo -i # root user
# cd / # system folder
# find . -xtype l -delete # delete all broken link in system
删除所有损坏的符号链接是否安全?
答案1
您不应尝试删除系统上所有损坏的符号链接,尤其是使用find . -xtype l -delete
任何此类静默机制。
不加区别地删除损坏的符号链接(按我选择的方式计算)有三个主要的不良影响:
它会删除正确的损坏的符号链接,从而导致原本不存在的问题。尽管有“损坏”一词,但存在目标不存在(或无法遍历到)的符号链接并不一定是错误或失误,有时甚至会依赖这一点。
当目标当目标故意存在某些时间但并非一直存在时,以及在各种其他情况下,需要创建它,在没有有意义的目标的情况下,使用损坏的符号链接进行锁定(即跨进程同步),这看似奇怪但合理。
它删除了不应该存在的损坏的符号链接,这听起来可能是件好事——但它这样做并没有调查或解决导致它们损坏的原因。
例如,也许您使用了一些卸载程序,其中留下了一些应该删除的文件。在这种情况下,仅删除损坏的链接不会清除其他任何内容。
它会删除错误的损坏的符号链接,但问题应该通过删除它们以外的其他操作来解决问题。
例如,可能应该创建或重命名符号链接的目标,或者可能应该替换或移动符号链接(对于具有相对路径的符号链接)。
有关所有场景以及上面未涵盖的一些场景的详细信息,请参阅Gilles 的回答到删除系统中的所有损坏的符号链接有什么坏处吗?(在Unix操作系统)。
在您描述的以 root 身份运行该命令的用例中find
,符号链接实际上没有损坏但您只是没有权限遍历其目标的可能性当然要低得多。但 Gilles 的回答中的其他所有观点都完全适用。
合理find . -xtype l
使用查出关于损坏的符号链接。但您不应该尝试删除所有符号链接。