Many users choose to install third party software on FreeBSD from the Ports Collection. In many of these situations it may be necessary to configure the software in a manner which will allow it to be started upon system initialization. Services, such as mail/postfix or www/apache13 are just two of the many software packages which may be started during system initialization. This section explains the procedures available for starting third party software.
In FreeBSD, most included services, such as cron(8), are started through the system start up scripts. These scripts may differ depending on FreeBSD or vendor version; however, the most important aspect to consider is that their start up configuration can be handled through simple startup scripts.
Before the advent of rc.d
, applications would drop a
simple start up script into the
/usr/local/etc/rc.d
directory which would be read by the system initialization
scripts. These scripts would then be executed during the latter
stages of system start up.
While many individuals have spent hours trying to merge the
old configuration style into the new system, the fact remains
that some third party utilities still require a script simply
dropped into the aforementioned directory. The subtle differences
in the scripts depend whether or not rc.d
is being used. Prior
to FreeBSD 5.1 the old configuration style is used and in
almost all cases a new style script would do just fine.
While every script must meet some minimal requirements, most
of the time these requirements are FreeBSD version
agnostic. Each script must have a .sh
extension appended to the end and every script must be
executable by the system. The latter may be achieved by using
the chmod
command and setting the unique permissions
of 755
. There should also be, at minimal,
an option to start
the application and an
option to stop
the application.
The simplest start up script would probably look a little bit like this one:
#!/bin/sh echo -n ' utility' case "$1" in start) /usr/local/bin/utility ;; stop) kill -9 `cat /var/run/utility.pid` ;; *) echo "Usage: `basename $0` {start|stop}" >&2 exit 64 ;; esac exit 0
This script provides for a stop
and
start
option for
the application hereto referred simply as
utility
.
Could be started manually with:
#
/usr/local/etc/rc.d/utility.sh start
While not all third party software requires the line in
rc.conf
, almost every day a new port will
be modified to accept this configuration. Check the final output
of the installation for more information on a specific
application. Some third party software will provide start up
scripts which permit the application to be used with
rc.d
; although, this will be discussed in the next section.
Now that FreeBSD includes rc.d
, configuration
of application startup has become easier, and more
featureful. Using the key words discussed in the
rc.d section,
applications may now be set to start after certain other
services for example DNS; may permit extra
flags to be passed through rc.conf
in
place of hard coded flags in the start up script, etc. A
basic script may look similar to the following:
#!/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"
This script will ensure that the provided
utility will be started after the
daemon
service. It also provides a method
for setting and tracking the PID, or process
ID file.
This application could then have the following line placed
in /etc/rc.conf
:
utility_enable="YES"
This new method also allows for easier manipulation of the
command line arguments, inclusion of the default functions
provided in /etc/rc.subr
, compatibility
with the rcorder(8) utility and provides for easier
configuration via the rc.conf
file.
Other services, such as POP3 server
daemons, IMAP, etc. could be started using
the inetd(8). This involves installing the service
utility from the Ports Collection with a configuration line
appended to the /etc/inetd.conf
file,
or uncommenting one of the current configuration lines. Working
with inetd and its configuration is
described in depth in the
inetd section.
In some cases, it may be more plausible to use the
cron(8) daemon to start system services. This approach
has a number of advantages because cron
runs
these processes as the crontab
's file
owner. This allows regular users to start and maintain some
applications.
The cron
utility provides a unique
feature, @reboot
, which may be used in place
of the time specification. This will cause the job to be run
when cron(8) is started, normally during system
initialization.
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.