我一直在阅读/听到这/etc
是针对系统配置文件的。有人可以解释/给我一些直觉,为什么这些启动/停止/重新启动各种程序的脚本通常是/etc
而不是/var
或/usr
类似的东西?
答案1
早期(无论是历史上还是在启动过程中......)是(第一个安装的文件系统)/etc
的一部分,而不是(直到磁盘变大)。 持有/
/usr
/var
暂时的数据,而这些脚本不是临时的。
事情没那么简单,但它就是这样开始的,没有理由重新设计整个目录布局。
答案2
启动脚本实际上是系统配置的重要组成部分。
尽管启动过程的定制程度比 15-30 年前要少得多,并且大多数启动配置已经自动化,但所有那些决定启动顺序的管理选择仍然存在于/etc
.
这代表了一种非常集中的方式来维护和备份系统配置。在大多数系统上,备份/etc
足以轻松重新安装整个系统。您只需完全重新安装所需的程序,然后恢复备份即可/etc
。
答案3
M. Dickey 和 M. Pelletier 都认同这个问题的前提。但前提是错误的。
如果您读过“/etc
适用于系统配置文件”,那么您读到的内容并不能为您描绘全貌。看名字。这是“等等”。人们曾经把除厨房水槽之外的所有东西都放在那里。
/etc/rc
曾经(并且在某些系统上仍然是)运行程序来启动一切。- 第一个用户进程的程序映像文件
/etc/init
曾经存在过(例如,在 XENIX 中,早在 upstart 成为一个想法之前)。 /etc/profile
、/etc/zprofile
、 以及所有其余的绝对是脚本。- OpenBSD
/etc/netstart
是一个程序;就像 FreeBSD 的/etc/ipfw.rules
. - FreeBSD
/etc/rc.suspend
和/etc/rc.resume
;也是如此。确实/etc/rc.sendmail
,/etc/rc.bsdextended
, 和/etc/rc.firewall
.
同样,如果您读过“启动/停止/重新启动各种程序的脚本通常是/etc
代替/var
或/usr
或类似的内容”,那么您读过的其他内容并不能为您描绘全貌。
- FreeBSD/PC-BSD 约定是
/usr/local/etc/rc.d/
为非操作系统rc
脚本提供一个目录。rc
各种事情的脚本都在那里而不是在下面/etc
。 - 您会发现 daemontools 系列人员将一些服务管理内容放入
/var/sv
、/var/service
和类似的位置。 (例如,我的 nosh工具集在/var/sv
./etc/service-bundles
/usr
/usr
- systemd 操作系统约定有一些东西存在于
/etc/systemd
,一些东西在/run/systemd
,一些东西在/usr/lib/systemd
和 (即使由于不适用的原因没有记录)中的一些东西/usr/local/lib/systemd
。同样,大多数“启动/停止服务的内容”都可以在 下找到,/usr
而不是在 下找到/etc
。
答案4
Digital UNIX 非常明智地将脚本放在/sbin/init.d
目录下。还有HP-UX,根据罗塞塔石碑。