14.2.启动服务 ============= 许多用户在 FreeBSD 上安装了来自 ports 的第三方软件,并要求在系统初始化时启动所安装的服务。诸如 `mail/postfix `__ 或 `www/apache24 `__ 等服务只是众多可能在系统初始化时被启动的软件包中的两个。本节将解释如何自启动第三方软件。 在 FreeBSD 中,大多数包含的服务,例如 `cron(8) `__\ ,都是通过系统启动脚本启动的。 14.2.1.扩展应用配置 ------------------- 在现在 FreeBSD 包含了 **rc.d**\ ,使得应用程序的启动配置变得更加容易,并提供了更多的功能。通过使用本手册在\ `管理 FreeBSD 中的服务 `__\ 中包含的命令,应用程序可以被设置为在启动某些其他服务之后再启动,并且可以通过 **/etc/rc.conf** 传递额外的标志,以取代启动脚本中的硬编码标志。一个基本的启动脚本可能类似于以下内容: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session #!/bin/sh # # PROVIDE: utility # REQUIRE: DAEMON # KEYWORD: shutdown . /etc/rc.subr name=utility rcvar=utility_enable command="/usr/local/sbin/utility" load_rc_config $name # # DO NOT CHANGE THESE DEFAULT VALUES HERE # SET THEM IN THE /etc/rc.conf FILE # utility_enable=${utility_enable-"NO"} pidfile=${utility_pidfile-"/var/run/utility.pid"} run_rc_command "$1" 这个脚本将确保所提供的 ``utility`` 将在 ``DAEMON`` 伪服务之后启动,同时还提供了一种设置和追踪进程 ID(PID)的方法。 然后,这个应用程序可以在 **/etc/rc.conf** 中添加如下一行: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session utility_enable="YES" 这种方法允许更容易地操作命令行参数,包含 **/etc/rc.subr** 中默认提供的函数,与 `rcorder(8) `__ 兼容,并通过 **rc.conf** 提供更容易的配置。 14.2.2.使用服务来启动服务 ------------------------- 其他服务可以使用 `inetd(8) `__ 来启动。使用 `inetd(8) `__ 及其配置在 `inetd 超级服务器 `__\ 中有深入描述。 在某些情况下,使用 `cron(8) `__ 来启动系统服务可能更有意义,这种方法有很多优点,因为 `cron(8) `__ 作为 `crontab(5) `__ 的所有者运行这些进程,这使得普通用户可以启动和维护他们自己的应用程序。 可以用 `cron(8) `__ 的 ``@reboot`` 功能来代替时间规范,这可以使任务在 `cron(8) `__ 启动时运行,通常是在系统初始化期间。