blob: d0078e4ed2cda7fef08d077376c01990d91a22b5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
#!/bin/sh
#
# $FreeBSD$
#
# PROVIDE: svscan
# REQUIRE: %%SVSCAN_REQUIRE%%
# BEFORE: %%SVSCAN_BEFORE%%
# KEYWORD: shutdown
# Define these svscan_* variables in one of these files:
# /etc/rc.conf
# /etc/rc.conf.local
# /etc/rc.conf.d/svscan
#
# svscan_enable Set to "YES" to run svscan.
# svscan_servicedir The directory containing the various service.
# directories to be monitored. Professor Daniel J.
# Bernstein recommends "/service", but the FreeBSD
# port has a default of "/var/service" instead, which
# is consistent with the FreeBSD filesystem hierarchy
# guidelines as described in the hier(7) manual page.
# svscan_logdir If set, then svscan will not log its output through
# readproctitle, but through multilog instead, and
# the logs will be placed in the specified directory.
# The FreeBSD port default is to run svscan through
# readproctitle.
# svscan_lognum The number of logfiles that multilog will keep if
# svscan_logdir is set; the multilog default is 10.
# svscan_logmax The maximum logfile size for multilog if svscan_logdir
# is set; the multilog default is 99999.
# It would really, really be a Good Thing(tm) for you to enable some
# of the below control variables and the apropriate ulimit.
# These are only examples.
# Furthermore, you should think about additional limits you might need.
# Or, check login.conf(5) for a suitable alternative.
# If you want to use these examples, please place into /etc/rc.conf.d/svscan.
#
# I really do suggest you use /var/service as your service spool directory.
# Check hier(7) for reasons.
# 10 Mb
#MINSEGMENT=10240
# 20 Mb
#MAXSEGMENT=20480
# 10 Mb
#MAXFILESIZE=10240
# 100
#MAXFD=100
# 40
#MAXCHILD=40
# ulimits
#ulimit -d ${MINSEGMENT}
#ulimit -f ${MAXFILESIZE}
#ulimit -m ${MAXSEGMENT}
#ulimit -n ${MAXFD}
#ulimit -s ${MINSEGMENT}
#ulimit -u ${MAXCHILD}
. /etc/rc.subr
name="svscan"
rcvar=svscan_enable
command="%%PREFIX%%/bin/svscan"
#
# DO NOT CHANGE THESE DEFAULT VALUES HERE
#
svscan_enable=${svscan_enable-"NO"}
svscan_servicedir=${svscan_servicedir-"/var/service"}
start_cmd="svscan_start"
stop_postcmd="svscan_stop_post"
load_rc_config $name
required_dirs="${svscan_servicedir}"
if [ -n "${svscan_logdir}" ]; then
required_dirs="${required_dirs} ${svscan_logdir}"
fi
svscan_start () {
echo "Starting svscan."
EP="/usr/bin/env \
PATH=%%PREFIX%%/sbin:%%PREFIX%%/bin:/usr/sbin:/usr/bin:/sbin:/bin"
if [ -z "${svscan_logdir}" ]; then
${EP} /usr/sbin/daemon -f /bin/sh -c "$command $svscan_servicedir 2>&1 | %%PREFIX%%/bin/readproctitle service errors: ................................................................................................................................................................................................................................................................................................................................................................................................................ &"
else
logmax=${svscan_logmax+s$svscan_logmax}
lognum=${svscan_lognum+n$svscan_lognum}
${EP} /usr/sbin/daemon -f /bin/sh -c "$command $svscan_servicedir 2>&1 \
| %%PREFIX%%/bin/multilog t $logmax $lognum '${svscan_logdir}' &"
fi
}
svscan_stop_post () {
find -L "$svscan_servicedir" -mindepth 1 -maxdepth 2 -type d -name '[^.]*' \( \! -path "$svscan_servicedir/*/*" -or -name 'log' \) -print0 | xargs -0 %%PREFIX%%/bin/svc -dx
}
run_rc_command "$1"
|