我编写了几个通过 Unix 域套接字(原始套接字)进行通信的守护进程,现在我想在生产服务器上找到它们最合适的位置。哪些文件应该放在哪里?
这是我到目前为止所得到的(请随时建议更好的位置):
- 守护进程二进制文件/可执行文件: 没有线索...
/usr/sbin/<subdir>/
?/usr/bin/<subdir>/
?别的地方? - 插座:
/var/run/<subdir>/
(不知道为什么,但我感觉不舒服/tmp/
) - 日志文件:
/var/log/<subdir>/
- 配置文件:
/etc/<subdir>/
目标操作系统是 Ubuntu 服务器 16.04+。
答案1
关于标准有很多优秀的资源,包括https://refspecs.linuxfoundation.org/FHS_3.0/fhs-3.0.html
我会建议:
- 插座:
/run/<subdir>/
。那是因为它只是目前 Ubuntu 上的/var/run
一个符号链接。是此类事物的新标准场所。/run
/run
- 日志文件:
/var/log/<subdir>/
正确的。虽然单个日志实际上并不需要目录。不要忘记添加一个/etc/logrotate.d
条目 - 配置文件:
/etc/<subdir>/
正确的。同样,单个配置文件不需要目录,但也没有什么坏处。
二进制文件:
这些都很棘手;它们可以存在的地方有很多。一般bin
用于用户命令,sbin 用于服务器守护进程。有人说sbin
是只由 root 执行的二进制文件。看这里:https://askubuntu.com/questions/308045/differences- Between-bin-sbin-usr-bin-usr-sbin-usr-local-bin-usr-local
- 不要使用
/bin
或/sbin
。为启动系统所需的二进制文件保留这些。 - 请使用
/usr/bin
和/usr/sbin
。尽管也有例外,但邦图上的大多数事物都住在这里。如果您正确地将软件打包(到 .dpkg 或类似文件中),那么一定要使用/usr/bin
和/usr/sbin
。 - 如果您不打算正确打包它,而只想以系统管理员身份手动复制它,那么
/usr/local/bin
和/usr/local/sbin
更合适。但如果您要将代码分发给其他人,通常不应该使用此方法。 - 如果您的某些二进制文件是只曾经由您的其他二进制文件使用,请考虑将它们放在
/usr/lib
或下/usr/local/lib
。二进制文件被视为库的情况并不罕见
简而言之,/usr/sbin
并且/usr/bin
很可能是正确的。