我想要创建一个系统范围的目录,其中包含特定于应用程序的(读-写)数据(比如日志文件、配置和其他应用程序特定的元数据)。
在阅读了更多关于Linux文件系统的内容之后,我考虑了使用/var/app_name/,但是后来我发现,有些子目录是临时的(在重启过程中不是持久的,比如run、log、tmp)。
这有多重要?我的意思是,我应该使用另一个目录(如/home/app_name/)还是使用/var/app_name/是可以的?
发布于 2017-05-02 14:15:45
来自文件系统层次标准:
应用程序一般不能将目录添加到/var的顶层。这样的目录应该添加,只有当他们有一些系统范围的含义,并咨询FHS邮件列表。
您应该使用/etc/app_name/来为您的程序存储配置文件和其他内容,使用/var/log/app_name/来存储其日志文件。
对于应用程序使用的数据,可以存储:
/var/lib/app_name/中,持久性数据和元数据/var/cache/app_name/中,任何可以安全删除的应用程序缓存/var/spool/app_name/中等待处理的数据绝对不要使用/home/app_name/,它是为用户app_name的主页保留的。如果您的程序需要创建一个特定的用户来运行,这将是它的位置。
关于您在评论中的问题: Linux不删除,也不对您在/var/log/中放置的任何内容自动旋转日志。事实上,系统管理员通常会遇到相反的问题:日志填满了所有的空间.因此,删除或旋转日志文件是由您自己决定的;这是通过logrotate或自定义cron作业完成的。
发布于 2017-05-02 13:37:00
使用/var/app_name为名为app_name的应用程序存储持久数据应该是安全的。
例如,在我目前使用的系统上,PostgreSQL和MySQL (MariaDB)的默认数据库目录是/var/postgresql和/var/mysql。
/var/tmp只应用于临时文件,但系统不太可能清除该目录(例如,在重新启动时,与/tmp不同)。/var/run最常用于存储PID文件和命名套接字。
我将避免使用/home/app_name,因为/home最常与个人帐户目录相关联。
另见:https://en.wikipedia.org/wiki/Filesystem_层次结构_标准
应用程序可以选择将其配置文件存储在/etc中,将其日志文件存储在/var/log下,将数据存储在/var/app_name中。在我上面用作示例的PostgreSQL和MariaDB的例子中,它们将除系统启动钩子以外的所有东西存储在/var中。
https://unix.stackexchange.com/questions/362614
复制相似问题