14.2.启动服务

许多用户在 FreeBSD 上安装了来自 ports 的第三方软件,并要求在系统初始化时启动所安装的服务。诸如 mail/postfixopen in new windowwww/apache24open in new window 等服务只是众多可能在系统初始化时被启动的软件包中的两个。本节将解释如何自启动第三方软件。

在 FreeBSD 中,大多数包含的服务,例如 cron(8)open in new window,都是通过系统启动脚本启动的。

14.2.1.扩展应用配置

在现在 FreeBSD 包含了 rc.d,使得应用程序的启动配置变得更加容易,并提供了更多的功能。通过使用本手册在管理 FreeBSD 中的服务open in new window中包含的命令,应用程序可以被设置为在启动某些其他服务之后再启动,并且可以通过 /etc/rc.conf 传递额外的标志,以取代启动脚本中的硬编码标志。一个基本的启动脚本可能类似于以下内容:

#!/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 中添加如下一行:

utility_enable="YES"

这种方法允许更容易地操作命令行参数,包含 /etc/rc.subr 中默认提供的函数,与 rcorder(8)open in new window 兼容,并通过 rc.conf 提供更容易的配置。

14.2.2.使用服务来启动服务

其他服务可以使用 inetd(8)open in new window 来启动。使用 inetd(8)open in new window 及其配置在 inetd 超级服务器open in new window中有深入描述。

在某些情况下,使用 cron(8)open in new window 来启动系统服务可能更有意义,这种方法有很多优点,因为 cron(8)open in new window 作为 crontab(5)open in new window 的所有者运行这些进程,这使得普通用户可以启动和维护他们自己的应用程序。

可以用 cron(8)open in new window@reboot 功能来代替时间规范,这可以使任务在 cron(8)open in new window 启动时运行,通常是在系统初始化期间。