From: "William Hubbs" <williamh@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/openrc:master commit in: /
Date: Wed, 10 Jan 2018 19:29:58 +0000 (UTC) [thread overview]
Message-ID: <1515612313.14e3359a9e4174da3e422957d9de56907f025875.williamh@OpenRC> (raw)
commit: 14e3359a9e4174da3e422957d9de56907f025875
Author: William Hubbs <w.d.hubbs <AT> gmail <DOT> com>
AuthorDate: Wed Jan 10 19:25:13 2018 +0000
Commit: William Hubbs <williamh <AT> gentoo <DOT> org>
CommitDate: Wed Jan 10 19:25:13 2018 +0000
URL: https://gitweb.gentoo.org/proj/openrc.git/commit/?id=14e3359a
move developer documentation from guide.md to service-script-guide.md
guide.md | 125 ++++--------------------------------------------
service-script-guide.md | 109 +++++++++++++++++++++++++++++++++++++++++
2 files changed, 117 insertions(+), 117 deletions(-)
diff --git a/guide.md b/guide.md
index f8c23194..80c8a7d3 100644
--- a/guide.md
+++ b/guide.md
@@ -27,8 +27,8 @@ openrc scans the runlevels (default: `/etc/runlevels`) and builds a dependency
graph, then starts the needed service scripts, either serialized (default) or in
parallel.
-When all the init scripts are started openrc terminates. There is no persistent
-daemon. (Integration with tools like monit, runit or s6 can be done)
+When all the service scripts are started openrc terminates. There is no
+persistent daemon. (Integration with tools like monit, runit or s6 can be done)
# Shutdown
@@ -63,7 +63,7 @@ own if needed. This allows, for example, to have a default runlevel with
disabled.
The `rc-status` helper will print all currently active runlevels and the state
-of init scripts in them:
+of services in them:
```
# rc-status
@@ -74,7 +74,7 @@ Runlevel: default
```
All runlevels are represented as folders in `/etc/runlevels/` with symlinks to
-the actual init scripts.
+the actual service scripts.
Calling openrc with an argument (`openrc default`) will switch to that
runlevel; this will start and stop services as needed.
@@ -83,122 +83,13 @@ Managing runlevels is usually done through the `rc-update` helper, but could of
course be done by hand if desired.
e.g. `rc-update add nginx default` - add nginx to the default runlevel
Note: This will not auto-start nginx! You'd still have to trigger `rc` or run
-the initscript by hand.
+the service script by hand.
FIXME: Document stacked runlevels
The default startup uses the runlevels `boot`, `sysinit` and `default`, in that
order. Shutdown uses the `shutdown` runlevel.
-
-# Syntax of Service Scripts
-
-Service scripts are shell scripts. OpenRC aims at using only the standardized
-POSIX sh subset for portability reasons. The default interpreter (build-time
-toggle) is `/bin/sh`, so using for example mksh is not a problem.
-
-OpenRC has been tested with busybox sh, ash, dash, bash, mksh, zsh and possibly
-others. Using busybox sh has been difficult as it replaces commands with
-builtins that don't offer the expected features.
-
-The interpreter for initscripts is `#!/sbin/openrc-run`.
-Not using this interpreter will break the use of dependencies and is not
-supported. (iow: if you insist on using `#!/bin/sh` you're on your own)
-
-A `depend` function declares the dependencies of this service script.
-All scripts must have start/stop/status functions, but defaults are provided.
-Extra functions can be added easily:
-
-```
-extra_commands="checkconfig"
-checkconfig() {
- doSomething
-}
-```
-
-This exports the checkconfig function so that `/etc/init.d/someservice
-checkconfig` will be available, and it "just" runs this function.
-
-While commands defined in `extra_commands` are always available, commands
-defined in `extra_started_commands` will only work when the service is started
-and those defined in `extra_stopped_commands` will only work when the service is
-stopped. This can be used for implementing graceful reload and similar
-behaviour.
-
-Adding a restart function will not work, this is a design decision within
-OpenRC. Since there may be dependencies involved (e.g. network -> apache) a
-restart function is in general not going to work.
-restart is internally mapped to `stop()` + `start()` (plus handling dependencies).
-If a service needs to behave differently when it is being restarted vs
-started or stopped, it should test the `$RC_CMD` variable, for example:
-
-```
-[ "$RC_CMD" = restart ] && do_something
-```
-
-# The Depend Function
-
-This function declares the dependencies for a service script. This
-determines the order the service scripts start.
-
-```
-depend() {
- need net
- use dns logger netmount
- want coolservice
-}
-```
-
-`need` declares a hard dependency - net always needs to be started before this
- service does
-
-`use` is a soft dependency - if dns, logger or netmount is in this runlevel
- start it before, but we don't care if it's not in this runlevel.
- `want` is between need and use - try to start coolservice if it is
- installed on the system, regardless of whether it is in the
- runlevel, but we don't care if it starts.
-
-`before` declares that we need to be started before another service
-
-`after` declares that we need to be started after another service, without
- creating a dependency (so on calling stop the two are independent)
-
-`provide` allows multiple implementations to provide one service type, e.g.:
- `provide cron` is set in all cron-daemons, so any one of them started
- satisfies a cron dependency
-
-`keyword` allows platform-specific overrides, e.g. `keyword -lxc` makes this
- service script a noop in lxc containers. Useful for things like keymaps,
- module loading etc. that are either platform-specific or not available
- in containers/virtualization/...
-
-FIXME: Anything missing in this list?
-
-# The Default Functions
-
-All service scripts are assumed to have the following functions:
-
-```
-start()
-stop()
-status()
-```
-
-There are default implementations in `lib/rc/sh/openrc-run.sh` - this allows very
-compact service scripts. These functions can be overridden per service script as
-needed.
-
-The default functions assume the following variables to be set in the service
-script:
-
-```
-command=
-command_args=
-pidfile=
-```
-
-Thus the 'smallest' service scripts can be half a dozen lines long
-
# The Magic of `conf.d`
Most service scripts need default values. It would be fragile to
@@ -217,7 +108,7 @@ start() {
}
```
-The big advantage of this split is that most of the time editing of the init
+The big advantage of this split is that most of the time editing of the service
script can be avoided.
# Start-Stop-Daemon
@@ -271,7 +162,7 @@ happen automatically when the service is stopped.
# Caching
-For performance reasons OpenRC keeps a cache of pre-parsed initscript metadata
+For performance reasons OpenRC keeps a cache of pre-parsed service metadata
(e.g. `depend`). The default location for this is `/${RC_SVCDIR}/cache`.
The cache uses `mtime` to check for file staleness. Should any service script
@@ -281,5 +172,5 @@ change it'll re-source the relevant files and update the cache
OpenRC has wrappers for many common output tasks in libeinfo.
This allows to print colour-coded status notices and other things.
-To make the output consistent the bundled initscripts all use ebegin/eend to
+To make the output consistent the bundled service scripts all use ebegin/eend to
print nice messages.
diff --git a/service-script-guide.md b/service-script-guide.md
index 668d05d4..4839e1b4 100644
--- a/service-script-guide.md
+++ b/service-script-guide.md
@@ -13,6 +13,115 @@ don't consider anything exotic, and assume that you will use
start-stop-daemon to manage a fairly typical long-running UNIX
process.
+## Syntax of Service Scripts
+
+Service scripts are shell scripts. OpenRC aims at using only the standardized
+POSIX sh subset for portability reasons. The default interpreter (build-time
+toggle) is `/bin/sh`, so using for example mksh is not a problem.
+
+OpenRC has been tested with busybox sh, ash, dash, bash, mksh, zsh and possibly
+others. Using busybox sh has been difficult as it replaces commands with
+builtins that don't offer the expected features.
+
+The interpreter for service scripts is `#!/sbin/openrc-run`.
+Not using this interpreter will break the use of dependencies and is not
+supported. (iow: if you insist on using `#!/bin/sh` you're on your own)
+
+A `depend` function declares the dependencies of this service script.
+All scripts must have start/stop/status functions, but defaults are provided and should be used unless you have a very strong reason not to use them.
+
+Extra functions can be added easily:
+
+```
+extra_commands="checkconfig"
+checkconfig() {
+ doSomething
+}
+```
+
+This exports the checkconfig function so that `/etc/init.d/someservice
+checkconfig` will be available, and it "just" runs this function.
+
+While commands defined in `extra_commands` are always available, commands
+defined in `extra_started_commands` will only work when the service is started
+and those defined in `extra_stopped_commands` will only work when the service is
+stopped. This can be used for implementing graceful reload and similar
+behaviour.
+
+Adding a restart function will not work, this is a design decision within
+OpenRC. Since there may be dependencies involved (e.g. network -> apache) a
+restart function is in general not going to work.
+restart is internally mapped to `stop()` + `start()` (plus handling dependencies).
+If a service needs to behave differently when it is being restarted vs
+started or stopped, it should test the `$RC_CMD` variable, for example:
+
+```
+[ "$RC_CMD" = restart ] && do_something
+```
+
+## The Depend Function
+
+This function declares the dependencies for a service script. This
+determines the order the service scripts start.
+
+```
+depend() {
+ need net
+ use dns logger netmount
+ want coolservice
+}
+```
+
+`need` declares a hard dependency - net always needs to be started before this
+ service does
+
+`use` is a soft dependency - if dns, logger or netmount is in this runlevel
+ start it before, but we don't care if it's not in this runlevel.
+ `want` is between need and use - try to start coolservice if it is
+ installed on the system, regardless of whether it is in the
+ runlevel, but we don't care if it starts.
+
+`before` declares that we need to be started before another service
+
+`after` declares that we need to be started after another service, without
+ creating a dependency (so on calling stop the two are independent)
+
+`provide` allows multiple implementations to provide one service type, e.g.:
+ `provide cron` is set in all cron-daemons, so any one of them started
+ satisfies a cron dependency
+
+`keyword` allows platform-specific overrides, e.g. `keyword -lxc` makes this
+ service script a noop in lxc containers. Useful for things like keymaps,
+ module loading etc. that are either platform-specific or not available
+ in containers/virtualization/...
+
+FIXME: Anything missing in this list?
+
+## The Default Functions
+
+All service scripts are assumed to have the following functions:
+
+```
+start()
+stop()
+status()
+```
+
+There are default implementations in `lib/rc/sh/openrc-run.sh` - this allows very
+compact service scripts. These functions can be overridden per service script as
+needed.
+
+The default functions assume the following variables to be set in the service
+script:
+
+```
+command=
+command_args=
+pidfile=
+```
+
+Thus the 'smallest' service scripts can be half a dozen lines long
+
## Don't write your own start/stop functions
OpenRC is capable of stopping and starting most daemons based on the
next reply other threads:[~2018-01-10 19:30 UTC|newest]
Thread overview: 150+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-10 19:29 William Hubbs [this message]
-- strict thread matches above, loose matches on Subject: below --
2018-11-02 23:24 [gentoo-commits] proj/openrc:master commit in: / William Hubbs
2018-10-23 22:14 William Hubbs
2018-10-23 22:00 William Hubbs
2018-10-23 22:00 William Hubbs
2018-10-22 23:09 William Hubbs
2018-06-28 18:33 William Hubbs
2018-06-28 18:03 William Hubbs
2018-06-17 17:46 William Hubbs
2018-06-15 23:07 William Hubbs
2018-06-15 18:01 William Hubbs
2018-06-05 22:38 William Hubbs
2018-06-05 22:38 William Hubbs
2018-06-05 21:28 William Hubbs
2018-05-31 21:54 William Hubbs
2018-03-12 2:43 William Hubbs
2018-02-28 22:32 William Hubbs
2018-01-24 23:44 William Hubbs
2018-01-11 16:59 William Hubbs
2018-01-08 21:34 William Hubbs
2018-01-08 20:07 William Hubbs
2017-12-07 18:53 William Hubbs
2017-10-25 20:10 William Hubbs
2017-10-24 15:43 William Hubbs
2017-10-13 21:11 William Hubbs
2017-10-13 16:38 William Hubbs
2017-10-12 23:55 William Hubbs
2017-10-02 21:59 William Hubbs
2017-10-02 16:22 William Hubbs
2017-09-16 18:27 William Hubbs
2017-09-16 18:27 William Hubbs
2017-09-15 20:32 William Hubbs
2017-09-14 15:57 William Hubbs
2017-09-07 17:25 William Hubbs
2017-09-06 22:33 William Hubbs
2017-08-24 16:45 William Hubbs
2017-08-16 17:16 William Hubbs
2017-07-24 22:29 William Hubbs
2017-07-13 22:51 William Hubbs
2017-07-13 22:51 William Hubbs
2017-07-11 20:13 William Hubbs
2017-07-11 19:57 William Hubbs
2017-06-12 15:41 William Hubbs
2017-06-07 17:15 William Hubbs
2017-05-16 0:00 William Hubbs
2017-05-12 3:01 William Hubbs
2017-04-19 22:38 William Hubbs
2017-04-17 17:49 William Hubbs
2017-03-31 15:37 William Hubbs
2017-03-15 22:31 William Hubbs
2017-03-12 18:56 William Hubbs
2017-03-10 19:33 William Hubbs
2017-01-26 23:07 William Hubbs
2016-12-21 17:51 William Hubbs
2016-12-20 18:34 William Hubbs
2016-09-28 0:40 William Hubbs
2016-09-27 17:26 William Hubbs
2016-09-09 0:28 William Hubbs
2016-08-30 14:16 William Hubbs
2016-08-30 14:16 William Hubbs
2016-08-25 22:35 William Hubbs
2016-07-25 18:54 William Hubbs
2016-06-10 21:12 William Hubbs
2016-05-24 19:10 William Hubbs
2016-05-24 18:14 William Hubbs
2016-05-24 18:05 William Hubbs
2016-05-19 18:37 William Hubbs
2016-02-09 21:42 William Hubbs
2016-01-19 22:33 William Hubbs
2016-01-14 17:37 William Hubbs
2016-01-13 17:04 William Hubbs
2015-12-11 22:49 William Hubbs
2015-12-09 23:58 William Hubbs
2015-12-08 19:12 William Hubbs
2015-12-08 19:12 William Hubbs
2015-12-06 0:14 William Hubbs
2015-12-04 19:52 William Hubbs
2015-10-08 21:15 William Hubbs
2015-10-08 18:34 William Hubbs
2015-07-10 18:26 William Hubbs
2015-06-19 14:56 William Hubbs
2015-05-29 6:11 Mike Frysinger
2015-05-13 21:07 William Hubbs
2015-05-11 23:46 William Hubbs
2015-05-02 0:03 William Hubbs
2015-05-01 21:19 William Hubbs
2015-04-26 15:31 William Hubbs
2015-04-25 23:36 William Hubbs
2015-04-25 1:01 William Hubbs
2015-04-25 0:41 William Hubbs
2015-04-22 22:43 William Hubbs
2015-04-22 22:14 William Hubbs
2015-04-22 22:05 William Hubbs
2015-04-22 21:17 William Hubbs
2015-04-22 20:55 William Hubbs
2015-04-22 20:40 William Hubbs
2015-04-22 20:09 William Hubbs
2015-04-22 20:09 William Hubbs
2015-01-23 18:57 William Hubbs
2014-10-20 20:59 William Hubbs
2014-10-20 20:59 William Hubbs
2014-08-22 19:10 William Hubbs
2014-08-17 5:14 ` William Hubbs
2014-08-17 21:07 William Hubbs
2014-08-22 19:10 ` William Hubbs
2014-08-16 22:18 William Hubbs
2014-08-22 19:10 ` William Hubbs
2014-08-11 18:18 William Hubbs
2014-08-22 19:10 ` William Hubbs
2014-07-10 14:05 William Hubbs
2014-07-01 12:33 William Hubbs
2014-06-24 1:54 William Hubbs
2014-04-10 0:58 William Hubbs
2014-01-23 18:04 William Hubbs
2013-08-24 23:00 William Hubbs
2013-08-14 6:08 William Hubbs
2013-08-14 5:17 William Hubbs
2013-07-16 18:56 William Hubbs
2013-07-16 18:56 William Hubbs
2013-06-24 21:31 Robin H. Johnson
2013-05-07 22:08 William Hubbs
2013-05-07 19:40 William Hubbs
2012-11-02 21:41 William Hubbs
2012-10-18 15:14 William Hubbs
2012-09-23 16:12 William Hubbs
2012-07-09 2:05 William Hubbs
2012-05-22 15:14 William Hubbs
2012-03-02 19:55 Robin H. Johnson
2012-02-12 19:38 Christian Ruppert
2012-01-25 19:04 Robin H. Johnson
2012-01-14 20:11 William Hubbs
2012-01-07 0:02 William Hubbs
2011-12-09 23:49 William Hubbs
2011-11-25 21:40 William Hubbs
2011-11-23 14:38 William Hubbs
2011-10-16 15:36 Christian Ruppert
2011-09-08 20:13 William Hubbs
2011-09-08 18:31 William Hubbs
2011-09-02 20:26 William Hubbs
2011-09-01 22:21 William Hubbs
2011-09-01 15:35 William Hubbs
2011-07-13 22:54 William Hubbs
2011-06-24 17:47 William Hubbs
2011-06-20 2:39 William Hubbs
2011-05-16 22:05 Mike Frysinger
2011-04-19 17:19 Robin H. Johnson
2011-04-16 1:02 William Hubbs
2011-04-12 13:49 William Hubbs
2011-03-22 5:49 William Hubbs
2011-02-22 2:59 Robin H. Johnson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1515612313.14e3359a9e4174da3e422957d9de56907f025875.williamh@OpenRC \
--to=williamh@gentoo.org \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox