![为什么将程序代码存储在/var/cache中?](https://linux22.com/image/52155/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%B0%86%E7%A8%8B%E5%BA%8F%E4%BB%A3%E7%A0%81%E5%AD%98%E5%82%A8%E5%9C%A8%2Fvar%2Fcache%E4%B8%AD%EF%BC%9F.png)
我继承了 Java / Tomcat 堆栈,在 Ubuntu 上运行。它崩溃了,我正在尝试重新启动它。程序代码似乎使用了我在文件系统上找到的配置文件。
问题是我在交接中发现了这个注释:
the app code is in /var/lib/tomcat6/webapps/PCRTiler
config and helping files are in /var/cache/tomcat6/work/PCRTiler
/work/PCRTiler is a symlink for /var/cache/tomcat6/work/PCRTiler
/var/cache下没有tomcat6目录。我也找不到 / 中名为 work 的符号链接。如果删除底层目录,链接会被破坏吗?
将程序特定的代码保存在 /var/cache 中是否是标准做法,并且该目录是否永久存在?
编辑
发现一个 install.sh 脚本似乎正在复制到 /var/cache 和 /var/lib
#!/bin/bash
rm -rf /var/lib/tomcat6/webapps/PCRTiler
rm -rf /var/cache/tomcat6/work/PCRTiler
mkdir -p /var/lib/tomcat6/webapps/PCRTiler
mkdir -p /var/cache/tomcat6/work/PCRTiler
cp -r * /var/lib/tomcat6/webapps/PCRTiler
cp -r /var/lib/tomcat6/webapps/PCRTiler/cache_skel/* /var/cache/tomcat6/work/PCRTiler
chown -R tomcat:tomcat /var/cache/tomcat6/work/PCRTiler
chown -R root:root /var/lib/tomcat6/webapps/PCRTiler
service tomcat6 restart
答案1
根据该指南的指导Linux 文件系统层次结构:
/var/缓存
适用于应用程序的缓存数据。此类数据是由于耗时的 I/O 或计算而在本地生成的。该数据通常可以重新生成或恢复。与 /var/spool 不同,这里的文件可以被删除而不会丢失数据。该数据在应用程序调用和系统重新启动之间保持有效。缓存数据的单独目录的存在允许系统管理员设置与 /var 中其他目录不同的磁盘和备份策略。
我认为最后一句话可能提供了一个理由,尽管在这种情况下,它听起来与主要描述相反:“此类数据是由于耗时的 I/O 或计算而在本地生成的。”
这可能只是个人的古怪或无知的选择。创建应用程序特定的目录并不罕见,/var/cache
并且它们是持久的,但我认为将源文件或配置文件放在那里有点不寻常。如果您想要应用程序代码的路径外目录树,则更规范的位置是/opt
.
然而,像 apache 这样的网络服务器将一些模块化应用程序代码保存在 的自定义子目录中是很正常的/var
,所以这是一个先例。