Print this page
12071 clarify implementation of single_instance in SMF services
Reviewed by: Robert Mustacchi <rm@fingolfin.org>
Split |
Close |
Expand all |
Collapse all |
--- old/usr/src/man/man1m/svc.startd.1m
+++ new/usr/src/man/man1m/svc.startd.1m
1 1 '\" te
2 2 .\" Copyright (c) 2008, Sun Microsystems, Inc. All Rights Reserved.
3 -.\" Copyright 2012, Joyent, Inc. All Rights Reserved.
3 +.\" Copyright 2019 Joyent, Inc.
4 4 .\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
5 5 .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
6 6 .\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
7 -.TH SVC.STARTD 1M "Mar 18, 2011"
7 +.TH SVC.STARTD 1M "Dec 11, 2019"
8 8 .SH NAME
9 9 svc.startd \- Service Management Facility master restarter
10 10 .SH SYNOPSIS
11 -.LP
12 11 .nf
13 12 \fB/lib/svc/bin/svc.startd\fR
14 13 .fi
15 14
16 15 .LP
17 16 .nf
18 17 \fBsvc:/system/svc/restarter:default\fR
19 18 .fi
20 19
21 20 .SH DESCRIPTION
22 -.sp
23 -.LP
24 21 \fBsvc.startd\fR is the master restarter daemon for Service Management Facility
25 22 (SMF) and the default restarter for all services. \fBsvc.startd\fR starts,
26 23 stops, and restarts services based on administrative requests, system failures,
27 24 or application failures.
28 25 .sp
29 26 .LP
30 27 \fBsvc.startd\fR maintains service state, as well as being responsible for
31 28 managing faults in accordance with the dependencies of each service.
32 29 .sp
33 30 .LP
34 31 \fBsvc.startd\fR is invoked automatically during system startup. It is
35 32 restarted if any failures occur. \fBsvc.startd\fR should never be invoked
36 33 directly.
↓ open down ↓ |
3 lines elided |
↑ open up ↑ |
37 34 .sp
38 35 .LP
39 36 See \fBsmf_restarter\fR(5) for information on configuration and behavior common
40 37 to all restarters.
41 38 .sp
42 39 .LP
43 40 \fBsvcs\fR(1) reports status for all services managed by the Service
44 41 Configuration Facility. \fBsvcadm\fR(1M) allows manipulation of service
45 42 instances with respect to the service's restarter.
46 43 .SS "Environment Variables"
47 -.sp
48 -.LP
49 44 Environment variables with the "SMF_" prefix are reserved and may be
50 45 overwritten.
51 46 .sp
52 47 .LP
53 48 \fBsvc.startd\fR supplies the "SMF_" environment variables specified in
54 49 \fBsmf_method\fR(5) to the method. PATH is set to "\fB/usr/sbin:/usr/bin\fR" by
55 50 default. By default, all other environment variables supplied to
56 51 \fBsvc.startd\fR are those inherited from \fBinit\fR(1M).
57 52 .sp
58 53 .LP
59 54 Duplicate entries are reduced to a single entry. The value used is undefined.
60 55 Environment entries that are not prefixed with "<\fIname\fR>=" are ignored.
61 56 .SS "Restarter Options"
62 -.sp
63 -.LP
64 57 \fBsvc.startd\fR is not configured by command line options. Instead,
65 58 configuration is read from the service configuration repository. You can use
66 59 \fBsvccfg\fR(1M) to set all options and properties.
67 60 .sp
68 61 .LP
69 62 The following configuration variables in the \fBoptions\fR property group are
70 63 available to developers and administrators:
71 64 .sp
72 65 .ne 2
73 66 .na
74 67 \fB\fBboot_messages\fR\fR
75 68 .ad
76 69 .sp .6
77 70 .RS 4n
78 71 An \fIastring\fR (as defined in \fBscf_value_is_type\fR; see
79 72 \fBscf_value_is_type\fR(3SCF)) that describes the default level of messages to
80 73 print to the console during boot. The supported message options include
81 74 \fBquiet\fR and \fBverbose\fR. The \fBquiet\fR option prints minimal messages
82 75 to console during boot. The \fBverbose\fR option prints a single message per
83 76 service started to indicate success or failure. You can use the \fBboot\fR
84 77 \fB-m\fR option to override the \fBboot_messages\fR setting at boot time. See
85 78 \fBkernel\fR(1M).
86 79 .RE
87 80
88 81 .sp
89 82 .ne 2
90 83 .na
91 84 \fB\fBlogging\fR\fR
92 85 .ad
93 86 .sp .6
94 87 .RS 4n
95 88 Control the level of global service logging for \fBsvc.startd\fR. An
96 89 \fIastring\fR (as defined in \fBscf_value_is_type\fR; see
97 90 \fBscf_value_is_type\fR(3SCF)) that describes the default level of messages to
98 91 log to \fBsyslog\fR (see \fBsyslog\fR(3C) and \fBsvc.startd\fR's global
99 92 logfile, \fB/var/svc/log/svc.startd.log\fR. The supported message options
100 93 include \fBquiet\fR, \fBverbose\fR, and \fBdebug\fR. The \fBquiet\fR option
101 94 sends error messages requiring administrative intervention to the console,
102 95 \fBsyslog\fR and \fBsvc.startd\fR's global logfile. The \fBverbose\fR option
103 96 sends error messages requiring administrative intervention to the console,
104 97 \fBsyslog\fR and \fBsvc.startd\fR's global logfile, and information about
105 98 errors which do not require administrative intervention to \fBsvc.startd\fR's
106 99 global logfile. A single message per service started is also sent to the
107 100 console. The \fBdebug\fR option sends \fBsvc.startd\fR debug messages to
108 101 \fBsvc.startd\fR's global logfile, error messages requiring
109 102 administrative intervention to the console, \fBsyslog\fR and \fBsvc.startd\fR's
110 103 global logfile, and a single message per service started to the console.
111 104 .RE
112 105
113 106 .sp
114 107 .ne 2
115 108 .na
116 109 \fB\fBmilestone\fR\fR
117 110 .ad
118 111 .sp .6
119 112 .RS 4n
120 113 An FMRI which determines the milestone used as the default boot level.
121 114 Acceptable options include only the major milestones:
122 115 .sp
123 116 .in +2
124 117 .nf
125 118 svc:/milestone/single-user:default
126 119 svc:/milestone/multi-user:default
127 120 svc:/milestone/multi-user-server:default
128 121 .fi
129 122 .in -2
130 123 .sp
131 124
132 125 or the special values \fBall\fR or \fBnone\fR. \fBall\fR represents an
133 126 idealized milestone that depends on every service. \fBnone\fR is a special
134 127 milestone where no services are running apart from the master
135 128 \fBsvc:/system/svc/restarter:default\fR. By default, \fBsvc.startd\fR uses
136 129 \fBall\fR, a synthetic milestone that depends on every service. If this
137 130 property is specified, it overrides any \fBinitdefault\fR setting in
138 131 \fBinittab\fR(4).
139 132 .RE
140 133
141 134 .sp
142 135 .ne 2
143 136 .na
144 137 \fB\fBsystem/reconfigure\fR\fR
145 138 .ad
146 139 .sp .6
147 140 .RS 4n
148 141 Indicates that a reconfiguration reboot has been requested. Services with
149 142 actions that must key off of a reconfiguration reboot may check that this
150 143 property exists and is set to 1 to confirm a reconfiguration boot has been
151 144 requested.
↓ open down ↓ |
78 lines elided |
↑ open up ↑ |
152 145 .sp
153 146 This property is managed by \fBsvc.startd\fR and should not be modified by the
154 147 administrator.
155 148 .RE
156 149
157 150 .sp
158 151 .LP
159 152 Configuration errors, such as disabling \fBsvc.startd\fR are logged by
160 153 \fBsyslog\fR, but ignored.
161 154 .SS "SERVICE STATES"
162 -.sp
163 -.LP
164 155 Services managed by \fBsvc.startd\fR can appear in any of the states described
165 156 in \fBsmf\fR(5). The state definitions are unmodified by this restarter.
166 157 .SS "SERVICE REPORTING"
167 -.sp
168 -.LP
169 158 In addition to any logging done by the managed service, \fBsvc.startd\fR
170 159 provides a common set of service reporting and logging mechanisms.
171 160 .sp
172 161 .LP
173 162 Reporting properties \fBsvc.startd\fR updates a common set of properties on all
174 163 services it manages. These properties are a common interface that can be used
175 164 to take action based on service instance health. The \fBsvcs\fR(1) command can
176 165 be used to easily display these properties.
177 166 .sp
178 167 .ne 2
179 168 .na
180 169 \fB\fBrestarter/state\fR\fR
181 170 .ad
182 171 .br
183 172 .na
184 173 \fB\fBrestarter/next_state\fR\fR
185 174 .ad
186 175 .sp .6
187 176 .RS 4n
188 177 The current and next (if currently in transition) state for an instance.
189 178 .RE
190 179
191 180 .sp
192 181 .ne 2
193 182 .na
194 183 \fB\fBrestarter/auxiliary_state\fR\fR
195 184 .ad
196 185 .sp .6
197 186 .RS 4n
198 187 A caption detailing additional information about the current instance state.
199 188 The auxiliary state available for services managed by \fBsvc.startd\fR is:
200 189 .sp
201 190 .ne 2
202 191 .na
203 192 \fBmaintenance\fR
204 193 .ad
205 194 .RS 15n
206 195 .sp
207 196 .in +2
208 197 .nf
209 198 fault_threshold_reached
210 199 stop_method_failed
211 200 administrative_request
212 201 .fi
213 202 .in -2
214 203 .sp
215 204
216 205 .RE
217 206
218 207 .RE
219 208
220 209 .sp
221 210 .ne 2
222 211 .na
223 212 \fB\fBrestarter/state_timestamp\fR\fR
224 213 .ad
225 214 .sp .6
226 215 .RS 4n
227 216 The time when the current state was reached.
228 217 .RE
229 218
230 219 .sp
231 220 .ne 2
232 221 .na
233 222 \fB\fBrestarter/contract\fR\fR
234 223 .ad
235 224 .sp .6
236 225 .RS 4n
237 226 The primary process contract ID, if any, that under which the service instance
238 227 is executing.
239 228 .RE
240 229
241 230 .sp
↓ open down ↓ |
63 lines elided |
↑ open up ↑ |
242 231 .LP
243 232 \fBLogs\fR
244 233 .sp
245 234 .LP
246 235 By default, \fBsvc.startd\fR provides logging of significant restarter actions
247 236 for the service as well as method standard output and standard error file
248 237 descriptors to \fB/var/svc/log/\fIservice\fR:\fIinstance\fR.log\fR. The level
249 238 of logging to system global locations like \fB/var/svc/log/svc.startd.log\fR
250 239 and \fBsyslog\fR is controlled by the \fBoptions/logging\fR property.
251 240 .SS "SERVICE DEFINITION"
252 -.sp
253 -.LP
254 241 When developing or configuring a service managed by \fBsvc.startd\fR, a common
255 242 set of properties are used to affect the interaction between the service
256 243 instance and the restarter.
257 244 .sp
258 245 .LP
259 246 \fBMethods\fR
260 247 .sp
261 248 .LP
262 249 The general form of methods for the fork/exec model provided by
263 250 \fBsvc.startd\fR are presented in \fBsmf_method\fR(5). The following methods
264 251 are supported as required or optional by services managed by \fBsvc.startd\fR.
265 252 .sp
266 253 .ne 2
267 254 .na
268 255 \fB\fBrefresh\fR\fR
269 256 .ad
270 257 .RS 11n
271 258 Reload any appropriate configuration parameters from the repository or
272 259 \fBconfig\fR file, without interrupting service. This is often implemented
273 260 using \fBSIGHUP\fR for system daemons. If the service is unable to recognize
274 261 configuration changes without a restart, no refresh method is provided.
275 262 .sp
276 263 This method is optional.
277 264 .RE
278 265
279 266 .sp
280 267 .ne 2
281 268 .na
282 269 \fB\fBstart\fR\fR
283 270 .ad
284 271 .RS 11n
285 272 Start the service. Return success only after the application is available to
286 273 consumers. Fail if a conflicting instance is already running, or if the service
287 274 is unable to start.
288 275 .sp
289 276 This method is required.
290 277 .RE
291 278
292 279 .sp
293 280 .ne 2
294 281 .na
295 282 \fB\fBstop\fR\fR
296 283 .ad
297 284 .RS 11n
298 285 Stop the service. In some cases, the stop method can be invoked when some or
299 286 all of the service has already been stopped. Only return an error if the
300 287 service is not entirely stopped on method return.
301 288 .sp
302 289 This method is required.
303 290 .RE
304 291
305 292 .sp
306 293 .LP
307 294 If the service does not need to take any action in a required method, it must
308 295 specify the \fB:true\fR token for that method.
309 296 .sp
310 297 .LP
311 298 \fBsvc.startd\fR honors any method context specified for the service or any
312 299 specific method. The method expansion tokens described in \fBsmf_method\fR(5)
313 300 are available for use in all methods invoked by \fBsvc.startd\fR.
314 301 .sp
315 302 .LP
316 303 \fBProperties\fR
317 304 .sp
318 305 .LP
319 306 An overview of the general properties is available in \fBsmf\fR(5). The
320 307 specific way in which these general properties interacts with \fBsvc.startd\fR
321 308 follows:
322 309 .sp
323 310 .ne 2
324 311 .na
325 312 \fB\fBgeneral/enabled\fR\fR
326 313 .ad
327 314 .sp .6
328 315 .RS 4n
329 316 If enabled is set to true, the restarter attempts to start the service once all
330 317 its dependencies are satisfied. If set to false, the service remains in the
331 318 disabled state, not running.
332 319 .RE
333 320
334 321 .sp
335 322 .ne 2
336 323 .na
337 324 \fB\fBgeneral/restarter\fR\fR
338 325 .ad
339 326 .sp .6
340 327 .RS 4n
341 328 If this FMRI property is empty or set to
342 329 \fBsvc:/system/svc/restarter:default\fR, the service is managed by
343 330 \fBsvc.startd\fR. Otherwise, the restarter specified is responsible (once it is
↓ open down ↓ |
80 lines elided |
↑ open up ↑ |
344 331 available) for managing the service.
345 332 .RE
346 333
347 334 .sp
348 335 .ne 2
349 336 .na
350 337 \fB\fBgeneral/single_instance\fR\fR
351 338 .ad
352 339 .sp .6
353 340 .RS 4n
354 -If \fBsingle_instance\fR is set to true, \fBsvc.startd\fR only allows one
355 -instance of this service to transition to online or degraded at any time.
341 +This was originally supposed to ensure that only one service instance could be
342 +in online or degraded state at once; however, it was never implemented, and is
343 +often incorrectly specified in multi-instance manifests. As such, it should be
344 +considered obsolete and not specified in new manifests.
356 345 .RE
357 346
358 347 .sp
359 348 .LP
360 349 Additionally, \fBsvc.startd\fR managed services can define the optional
361 350 properties listed below in the \fBstartd\fR property group.
362 351 .sp
363 352 .ne 2
364 353 .na
365 354 \fB\fBstartd/critical_failure_count\fR
366 355 .ad
367 356 .br
368 357 .na
369 358 \fBstartd/critical_failure_period\fR\fR
370 359 .ad
371 360 .sp .6
372 361 .RS 4n
373 362 The \fBcritical_failure_count\fR and \fBcritical_failure_period\fR properties
374 363 together specify the maximum number of service failures allowed in a given
375 364 time interval before \fBsvc.startd\fR transitions the service to maintenance.
376 365 If the number of failures exceeds \fBcritical_failure_count\fR in any period of
377 366 \fBcritical_failure_period\fR seconds, \fBsvc.startd\fR will transition the
378 367 service to maintenance.
379 368 .RE
380 369
381 370 .sp
382 371 .ne 2
383 372 .na
384 373 \fB\fBstartd/duration\fR\fR
385 374 .ad
386 375 .sp .6
387 376 .RS 4n
388 377 The \fBduration\fR property defines the service's model. It can be set to
389 378 \fBtransient\fR, \fBchild\fR also known as "\fBwait\fR" model services, or
390 379 \fBcontract\fR (the default).
391 380 .RE
392 381
393 382 .sp
394 383 .ne 2
395 384 .na
396 385 \fB\fBstartd/ignore_error\fR\fR
397 386 .ad
398 387 .sp .6
399 388 .RS 4n
400 389 The \fBignore_error\fR property, if set, specifies a comma-separated list of
401 390 ignored events. Legitimate string values in that list are \fBcore\fR and
402 391 \fBsignal\fR. The default is to restart on all errors.
403 392 .RE
404 393
405 394 .sp
406 395 .ne 2
407 396 .na
408 397 \fB\fBstartd/need_session\fR\fR
409 398 .ad
410 399 .sp .6
411 400 .RS 4n
412 401 The \fBneed_session\fR property, if set to true, indicates that the instance
413 402 should be launched in its own session. The default is not to do so.
414 403 .RE
415 404
416 405 .sp
417 406 .ne 2
418 407 .na
↓ open down ↓ |
53 lines elided |
↑ open up ↑ |
419 408 \fB\fBstartd/utmpx_prefix\fR\fR
420 409 .ad
421 410 .sp .6
422 411 .RS 4n
423 412 The \fButmpx_prefix\fR string property defines that the instance requires a
424 413 valid \fButmpx\fR entry prior to start method execution. The default is not to
425 414 create a \fButmpx\fR entry.
426 415 .RE
427 416
428 417 .SS "SERVICE FAILURE"
429 -.sp
430 -.LP
431 418 \fBsvc.startd\fR assumes that a method has failed if it returns a non-zero exit
432 419 code or if fails to complete before the timeout specified expires. If
433 420 \fB$SMF_EXIT_ERR_CONFIG\fR or \fB$SMF_EXIT_ERR_FATAL\fR is returned,
434 421 \fBsvc.startd\fR immediately places the service in the maintenance state. For
435 422 all other failures, \fBsvc.startd\fR places the service in the offline state.
436 423 If a service is offline and its dependencies are satisfied, \fBsvc.startd\fR
437 424 tries again to start the service (see \fBsmf\fR(5)).
438 425 .sp
439 426 .LP
440 427 If a contract or transient service does not return from its start method before
441 428 its defined timeout elapses, \fBsvc.startd\fR sends a \fBSIGKILL\fR to the
442 429 method, and returns the service to the offline state.
443 430 .sp
444 431 .LP
445 432 If three failures happen in a row, or if the service is restarting more than
446 433 once a second, \fBsvc.startd\fR places the service in the maintenance state.
447 434 .sp
448 435 .LP
449 436 The conditions of service failure are defined by a combination of the service
450 437 model (defined by the \fBstartd/duration\fR property) and the value of the
451 438 \fBstartd/ignore_error\fR property.
452 439 .sp
453 440 .LP
454 441 A contract model service fails if any of the following conditions occur:
455 442 .RS +4
456 443 .TP
457 444 .ie t \(bu
458 445 .el o
459 446 all processes in the service exit
460 447 .RE
461 448 .RS +4
462 449 .TP
463 450 .ie t \(bu
464 451 .el o
465 452 any processes in the service produce a core dump
466 453 .RE
467 454 .RS +4
468 455 .TP
469 456 .ie t \(bu
470 457 .el o
471 458 a process outside the service sends a service process a fatal signal (for
472 459 example, an administrator terminates a service process with the \fBpkill\fR
473 460 command)
474 461 .RE
475 462 .sp
476 463 .LP
477 464 The last two conditions may be ignored by the service by specifying core and/or
478 465 signal in \fBstartd/ignore_error\fR.
479 466 .sp
480 467 .LP
481 468 Defining a service as transient means that \fBsvc.startd\fR does not track
482 469 processes for that service. Thus, the potential faults described for contract
483 470 model services are not considered failures for transient services. A transient
484 471 service only enters the maintenance state if one of the method failure
↓ open down ↓ |
44 lines elided |
↑ open up ↑ |
485 472 conditions occurs.
486 473 .sp
487 474 .LP
488 475 "\fBWait\fR" model services are restarted whenever the child process associated
489 476 with the service exits. A child process that exits is not considered an error
490 477 for "\fBwait\fR" model services, and repeated failures do not lead to a
491 478 transition to maintenance state. However, a wait service which is repeatedly
492 479 exiting with an error that exceeds the default rate (5 failures/second) will be
493 480 throttled back so that the service only restarts once per second.
494 481 .SS "LEGACY SERVICES"
495 -.sp
496 -.LP
497 482 \fBsvc.startd\fR continues to provide support for services invoked during the
498 483 startup run level transitions. Each \fB/etc/rc?.d\fR directory is processed
499 484 after all managed services which constitute the equivalent run level milestone
500 485 have transitioned to the online state. Standard \fBinit\fR scripts placed in
501 486 the \fB/etc/rc?.d\fR directories are run in the order of their sequence
502 487 numbers.
503 488 .sp
504 489 .LP
505 490 The milestone to run-level mapping is:
506 491 .sp
507 492 .ne 2
508 493 .na
509 494 \fB\fBmilestone/single-user\fR\fR
510 495 .ad
511 496 .sp .6
512 497 .RS 4n
513 498 Single-user (\fBS\fR)
514 499 .RE
515 500
516 501 .sp
517 502 .ne 2
518 503 .na
519 504 \fB\fBmilestone/multi-user\fR\fR
520 505 .ad
521 506 .sp .6
522 507 .RS 4n
523 508 Multi-user (\fB2\fR)
524 509 .RE
525 510
526 511 .sp
527 512 .ne 2
528 513 .na
529 514 \fB\fBmilestone/multi-user-server\fR\fR
530 515 .ad
531 516 .sp .6
532 517 .RS 4n
533 518 Multi-user with network services (\fB3\fR)
534 519 .RE
↓ open down ↓ |
28 lines elided |
↑ open up ↑ |
535 520
536 521 .sp
537 522 .LP
538 523 Additionally, \fBsvc.startd\fR gives these legacy services visibility in SMF by
539 524 inserting an instance per script into the repository. These legacy instances
540 525 are visible using standard SMF interfaces such as \fBsvcs\fR(1), always appear
541 526 in the \fBLEGACY-RUN\fR state, cannot be modified, and can not be specified as
542 527 dependencies of other services. The initial start time of the legacy service is
543 528 captured as a convenience for the administrator.
544 529 .SH FILES
545 -.sp
546 530 .ne 2
547 531 .na
548 532 \fB\fB/var/svc/log\fR\fR
549 533 .ad
550 534 .RS 21n
551 535 Directory where \fBsvc.startd\fR stores log files.
552 536 .RE
553 537
554 538 .sp
555 539 .ne 2
556 540 .na
557 541 \fB\fB/etc/svc/volatile\fR\fR
558 542 .ad
559 543 .RS 21n
560 544 Directory where \fBsvc.startd\fR stores log files in early stages of boot,
561 545 before \fB/var\fR is mounted read-write.
562 546 .RE
563 547
564 548 .SH EXAMPLE
565 -.LP
566 549 \fBExample 1 \fRTurning on Verbose Logging
567 550 .sp
568 551 .LP
569 552 To turn on verbose logging, type the following:
570 553
571 554 .sp
572 555 .in +2
573 556 .nf
574 557 # /usr/sbin/svccfg -s system/svc/restarter:default
575 558 svc:/system/svc/restarter:default> addpg options application
576 559 svc:/system/svc/restarter:default> setprop options/logging = \e
577 560 astring: verbose
↓ open down ↓ |
2 lines elided |
↑ open up ↑ |
578 561 svc:/system/svc/restarter:default> exit
579 562 .fi
580 563 .in -2
581 564 .sp
582 565
583 566 .sp
584 567 .LP
585 568 This request will take effect on the next restart of \fBsvc.startd\fR.
586 569
587 570 .SH SEE ALSO
588 -.sp
589 -.LP
590 571 \fBsvcs\fR(1), \fBsvcprop\fR(1), \fBkernel\fR(1M), \fBinit\fR(1M),
591 572 \fBsvcadm\fR(1M), \fBsvccfg\fR(1M), \fBsvc.configd\fR(1M), \fBsetsid\fR(2),
592 573 \fBsyslog\fR(3C), \fBlibscf\fR(3LIB), \fBscf_value_is_type\fR(3SCF),
593 574 \fBcontract\fR(4), \fBinit.d\fR(4), \fBprocess\fR(4), \fBinittab\fR(4),
594 575 \fBattributes\fR(5), \fBsmf\fR(5), \fBsmf_method\fR(5)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX