x108.html
Run Control
Each package may have a run control file that is used to:
Start, Stop, Restart, and reload the package.
Get the status of the package (running, not configured, ...).
Set the environment required by the package.
Run monthly, weekly, daily, hourly, and quarterly (15 minutes) cron jobs.
Run control under OpenPKG is very similar to the SYSV style scripts with a little FreeBSD thrown in for good measure. Each package may have a %{l_prefix}/etc/rc.d/rc.$packagename file which is a plain ascii file with sections to handle the various functions (start, stop, status, environment, %{l_prefix}/etc/rc.conf file. All run control is done by the %%l_prefix}/etc/rc script.
%{l_prefix}/etc/rc ($package|all) command [command..]
|
Where command may be env, stop, start, restart, reload, status, hourly, daily, weekly, etc.
The apache run control file is probably a good example with all the sections:
#!/home/csoft/freebsd48/lib/openpkg/bash /home/csoft/freebsd48/etc/rc
##
## rc.apache -- Run-Commands
##
%config
apache_enable="$openpkg_rc_def"
apache_log_files="/home/csoft/freebsd48/var/apache/log/access.log"
apache_log_prolog="true"
apache_log_epilog="true"
apache_log_numfiles="10"
apache_log_minsize="1M"
apache_log_complevel="9"
apache_err_files="/home/csoft/freebsd48/var/apache/log/error.log"
apache_err_prolog="true"
apache_err_epilog="true"
apache_err_numfiles="10"
apache_err_minsize="1M"
apache_err_complevel="9"
%status -u root -o
apache_usable="no"
apache_active="no"
/home/csoft/freebsd48/sbin/apachectl configtest 2>/dev/null && apache_usable="yes"
( eval `grep "^PIDFILE=" /home/csoft/freebsd48/sbin/apachectl`
[ ".$PIDFILE" != . -a -f "$PIDFILE" ] && kill -0 `cat $PIDFILE`
) && apache_active="yes"
echo "apache_enable=\"$apache_enable\""
echo "apache_usable=\"$apache_usable\""
echo "apache_active=\"$apache_active\""
%start -u root
rcService apache enable yes || exit 0
rcService apache active yes && exit 0
/home/csoft/freebsd48/sbin/apachectl start
%stop -u root
rcService apache enable yes || exit 0
rcService apache active no && exit 0
/home/csoft/freebsd48/sbin/apachectl stop
sleep 2
%restart -u root
rcService apache enable yes || exit 0
rcService apache active no && exit 0
/home/csoft/freebsd48/sbin/apachectl restart
%daily -u root
rcService apache enable yes || exit 0
if [ ".$apache_log_files" != . ]; then
# rotate logfile
shtool rotate -f \
-n ${apache_log_numfiles} -s ${apache_log_minsize} -d \
-z ${apache_log_complevel} -m 644 -o root -g csoftmgr \
-P "${apache_log_prolog}" \
-E "${apache_log_epilog} && rc apache restart" \
$apache_log_files
fi
if [ ".$apache_err_files" != . ]; then
# rotate errfile
shtool rotate -f \
-n ${apache_err_numfiles} -s ${apache_err_minsize} -d \
-z ${apache_err_complevel} -m 644 -o root -g csoftmgr \
-P "${apache_err_prolog}" \
-E "${apache_err_epilog} && rc apache restart" \
$apache_err_files
fi
|
| <<< Previous | Home | Next >>> |
| Building Packages with OpenPKG | Changes in Celestial's System Installations |