我编写了几个通过 Unix 域套接字(原始套接字)进行通信的守护进程,现在我想在生产服务器上为它们找到最合适的位置。哪些文件放在哪里?
这是我到目前为止所得到的(随时建议更好的位置):
- 守护进程二进制文件/可执行文件:没有线索......
/usr/sbin/<subdir>/
?/usr/bin/<subdir>/
? 别的地方? - 套接字:(
/var/run/<subdir>/
不知道为什么,但我觉得不舒服/tmp/
) - 日志文件:
/var/log/<subdir>/
- 配置文件:
/etc/<subdir>/
目标操作系统是 Ubuntu 服务器 16.04+。
有很多关于标准的优秀资源,包括https://refspecs.linuxfoundation.org/FHS_3.0/fhs-3.0.html
我会建议:
/run/<subdir>/
. 那是因为这/var/run
只是/run
Ubuntu 上这些天的符号链接。/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
。尽管有例外,但 unbuntu 上的大多数东西都住在这里。如果您正确打包您的软件(到 .dpkg 或类似文件中),那么一定要使用/usr/bin
and/usr/sbin
./usr/local/bin
更/usr/local/sbin
合适。但是,如果您要将代码分发给其他人,则通常不应使用此方法。/usr/lib
or下/usr/local/lib
。将二进制文件视为库并不少见简而言之,
/usr/sbin
并且/usr/bin
很可能是正确的。