14.2.启动服务¶
许多用户在 FreeBSD 上安装了来自 ports 的第三方软件,并要求在系统初始化时启动所安装的服务。诸如 mail/postfix 或 www/apache24 等服务只是众多可能在系统初始化时被启动的软件包中的两个。本节将解释如何自启动第三方软件。
在 FreeBSD 中,大多数包含的服务,例如 cron(8),都是通过系统启动脚本启动的。
14.2.1.扩展应用配置¶
在现在 FreeBSD 包含了 rc.d,使得应用程序的启动配置变得更加容易,并提供了更多的功能。通过使用本手册在管理 FreeBSD 中的服务中包含的命令,应用程序可以被设置为在启动某些其他服务之后再启动,并且可以通过 /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) 兼容,并通过 rc.conf 提供更容易的配置。
14.2.2.使用服务来启动服务¶
其他服务可以使用 inetd(8) 来启动。使用 inetd(8) 及其配置在 inetd 超级服务器中有深入描述。
在某些情况下,使用 cron(8) 来启动系统服务可能更有意义,这种方法有很多优点,因为 cron(8) 作为 crontab(5) 的所有者运行这些进程,这使得普通用户可以启动和维护他们自己的应用程序。
可以用 cron(8) 的 @reboot
功能来代替时间规范,这可以使任务在 cron(8) 启动时运行,通常是在系统初始化期间。