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 |