Compare commits
3 Commits
new-netmou
...
openrc-0.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
454e09d1d6 | ||
|
|
1969be04e5 | ||
|
|
ae60393561 |
144
ChangeLog
144
ChangeLog
@@ -1,142 +1,4 @@
|
|||||||
commit d2ce07e227ec95370e8aee5f1199edc6ad61aff9
|
commit 1969be04e54ad162329001d4b09ebfcf162a6808
|
||||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
|
||||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
|
||||||
|
|
||||||
Add rc-sstat script
|
|
||||||
|
|
||||||
The rc-sstat script is written to display status of s6 services and
|
|
||||||
run rc-status to display all services status.
|
|
||||||
|
|
||||||
This currently only works on Linux.
|
|
||||||
|
|
||||||
commit b209fe3859c05c286037843bb34058f849c54b15
|
|
||||||
Author: Mike Gilbert <floppym@gentoo.org>
|
|
||||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
|
||||||
|
|
||||||
bootmisc: Don't call dmesg in systemd-nspawn containers
|
|
||||||
|
|
||||||
This fixes #57.
|
|
||||||
|
|
||||||
commit c94c8288cd5217b01c24d6f048c64ebbc30bee02
|
|
||||||
Author: Mike Frysinger <vapier@gentoo.org>
|
|
||||||
Commit: Mike Frysinger <vapier@gentoo.org>
|
|
||||||
|
|
||||||
fix link to s6 website
|
|
||||||
|
|
||||||
commit bcb9c44e73ccf332c7c961a6f82520699c6e776d
|
|
||||||
Author: Mike Gilbert <floppym@gentoo.org>
|
|
||||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
|
||||||
|
|
||||||
man: Document the stopsig variable
|
|
||||||
|
|
||||||
This variable can be used to set the signal to send if the service is
|
|
||||||
using start-stop-daemon.
|
|
||||||
|
|
||||||
This fixes #56
|
|
||||||
|
|
||||||
commit bbabf546f9d72cbfc48bd839a6d01b402ee6cced
|
|
||||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
|
||||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
|
||||||
|
|
||||||
Document bash's handling of ulimit options
|
|
||||||
|
|
||||||
When bash is used in posix mode for the shell, the ulimit command uses
|
|
||||||
a block size of 512 bytes for the -c and -f options.
|
|
||||||
|
|
||||||
X-Gentoo-Bug: 549238
|
|
||||||
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=549238
|
|
||||||
|
|
||||||
commit a7fcc1e264b035177b4e524a40b27145baa86969
|
|
||||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
|
||||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
|
||||||
|
|
||||||
S6: kick the scanner and sleep 1.5 seconds to avoid a race condition
|
|
||||||
|
|
||||||
commit b79d058f162d8b49ccc968744e7cb1b7a7ba729c
|
|
||||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
|
||||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
|
||||||
|
|
||||||
s6: Use s6-svc -Dd to stop services
|
|
||||||
|
|
||||||
This allows us to get rid of the sleep call in the stop function. Also,
|
|
||||||
we set a configurable timeout value for stopping daemons.
|
|
||||||
|
|
||||||
commit ddce529c71c2e9f01d8e5666e27050b6ed6c6761
|
|
||||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
|
||||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
|
||||||
|
|
||||||
More s6 fixes
|
|
||||||
|
|
||||||
- When no service link is in the scan directory, show the default
|
|
||||||
stopped message.
|
|
||||||
- Do not remove the service link when stopping the service.
|
|
||||||
|
|
||||||
commit e372f97bebd4866633ad56aa5d5b1ae59fa88118
|
|
||||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
|
||||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
|
||||||
|
|
||||||
Fix the s6 handling
|
|
||||||
|
|
||||||
This changes the default s6 service directory to /var/svc.d, also
|
|
||||||
it changes the code to work with the individual services instead of
|
|
||||||
forcing a rescan when a service is started or stopped.
|
|
||||||
|
|
||||||
commit c2abf4b436b8cca8ebed395ff08f5fdc546eadac
|
|
||||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
|
||||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
|
||||||
|
|
||||||
Start work on 0.17
|
|
||||||
|
|
||||||
commit d247ac4cbbe0ab62564ef82a5940b4f1a03973b3
|
|
||||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
|
||||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
|
||||||
|
|
||||||
Update changelog
|
|
||||||
|
|
||||||
commit bb2d7becfd3008379f8f69b5d036922281aa211f
|
|
||||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
|
||||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
|
||||||
|
|
||||||
Add support for the s6 supervision suite
|
|
||||||
|
|
||||||
commit 0f9354becfbd54f9800c93092aa26be859dcf16a
|
|
||||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
|
||||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
|
||||||
|
|
||||||
man: Clarify the documentation for command_args
|
|
||||||
|
|
||||||
The command_args variable only works if using start-stop-daemon to start
|
|
||||||
the daemon.
|
|
||||||
|
|
||||||
commit a15fa1a3b12a5372c1b3c8d5df7e489648bef913
|
|
||||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
|
||||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
|
||||||
|
|
||||||
Rework supervisor integration framework
|
|
||||||
|
|
||||||
The original way of doing this allowed users to change the supervisor in
|
|
||||||
conf.d/*. This changes this so that the supervisor setup can be done in
|
|
||||||
the service script itself.
|
|
||||||
|
|
||||||
commit 0198affc742297b6e203bbcecc14436682119cc7
|
|
||||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
|
||||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
|
||||||
|
|
||||||
The rc_supervisor variable is a service configuration variable
|
|
||||||
|
|
||||||
This variable should not be changed globally unless you really know what
|
|
||||||
you are doing.
|
|
||||||
|
|
||||||
commit abef2fcb2dbcc277bb05f0d9c674d4b47826f17f
|
|
||||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
|
||||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
|
||||||
|
|
||||||
Make the default start, stop and status functions overridable
|
|
||||||
|
|
||||||
This will make it possible to add support for supervision suites such as
|
|
||||||
runit and s6.
|
|
||||||
|
|
||||||
commit 0b435ddd834bd18254c4d3341acdebf0829921f5
|
|
||||||
Author: Jakob Drexel <jake42@rommel.stw.uni-erlangen.de>
|
Author: Jakob Drexel <jake42@rommel.stw.uni-erlangen.de>
|
||||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
|
|
||||||
@@ -155,11 +17,11 @@ Commit: William Hubbs <w.d.hubbs@gmail.com>
|
|||||||
X-Gentoo-Bug: 537304
|
X-Gentoo-Bug: 537304
|
||||||
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=537304
|
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=537304
|
||||||
|
|
||||||
commit 9f6427ea57c6c950b4d1c356ad1bfb0aa8deb40b
|
commit ae6039356177a9030adc93b025f487e7a4df05aa
|
||||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
Commit: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
|
|
||||||
Start work on 0.16
|
Start work on 0.15.1
|
||||||
|
|
||||||
commit 60488069c08201cbfbc661a3e7bd1fafa31fceed
|
commit 60488069c08201cbfbc661a3e7bd1fafa31fceed
|
||||||
Author: William Hubbs <w.d.hubbs@gmail.com>
|
Author: William Hubbs <w.d.hubbs@gmail.com>
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
NAME= openrc
|
NAME= openrc
|
||||||
VERSION= 0.18
|
VERSION= 0.15.1
|
||||||
PKG= ${NAME}-${VERSION}
|
PKG= ${NAME}-${VERSION}
|
||||||
|
|||||||
@@ -116,9 +116,6 @@
|
|||||||
#SSD_NICELEVEL="-19"
|
#SSD_NICELEVEL="-19"
|
||||||
|
|
||||||
# Pass ulimit parameters
|
# Pass ulimit parameters
|
||||||
# If you are using bash in POSIX mode for your shell, note that the
|
|
||||||
# ulimit command uses a block size of 512 bytes for the -c and -f
|
|
||||||
# options
|
|
||||||
#rc_ulimit="-u 30"
|
#rc_ulimit="-u 30"
|
||||||
|
|
||||||
# It's possible to define extra dependencies for services like so
|
# It's possible to define extra dependencies for services like so
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ include ../mk/net.mk
|
|||||||
DIR= ${INITDIR}
|
DIR= ${INITDIR}
|
||||||
SRCS= bootmisc.in fsck.in hostname.in local.in localmount.in loopback.in \
|
SRCS= bootmisc.in fsck.in hostname.in local.in localmount.in loopback.in \
|
||||||
netmount.in osclock.in root.in savecache.in swap.in swapfiles.in \
|
netmount.in osclock.in root.in savecache.in swap.in swapfiles.in \
|
||||||
tmpfiles.setup.in swclock.in sysctl.in urandom.in s6-svscan.in ${SRCS-${OS}}
|
tmpfiles.setup.in swclock.in sysctl.in urandom.in ${SRCS-${OS}}
|
||||||
BIN= ${OBJS}
|
BIN= ${OBJS}
|
||||||
|
|
||||||
# Are we installing our network scripts?
|
# Are we installing our network scripts?
|
||||||
|
|||||||
@@ -214,13 +214,10 @@ start()
|
|||||||
if yesno $log_dmesg; then
|
if yesno $log_dmesg; then
|
||||||
if $logw || checkpath -W /var/log; then
|
if $logw || checkpath -W /var/log; then
|
||||||
# Create an 'after-boot' dmesg log
|
# Create an 'after-boot' dmesg log
|
||||||
case "$RC_SYS" in
|
if [ "$RC_SYS" != VSERVER -a "$RC_SYS" != OPENVZ -a "$RC_SYS" != LXC ]; then
|
||||||
VSERVER|OPENVZ|LXC|SYSTEMD-NSPAWN) ;;
|
dmesg > /var/log/dmesg
|
||||||
*)
|
chmod 640 /var/log/dmesg
|
||||||
dmesg > /var/log/dmesg
|
fi
|
||||||
chmod 640 /var/log/dmesg
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -4,24 +4,11 @@
|
|||||||
|
|
||||||
description="Mounts network shares according to /etc/fstab."
|
description="Mounts network shares according to /etc/fstab."
|
||||||
|
|
||||||
get_fs_services()
|
|
||||||
{
|
|
||||||
local fsclient fstype list=$(ls $RC_LIBEXECDIR/netfs/*) services
|
|
||||||
local x
|
|
||||||
for x in $list; do
|
|
||||||
fstype=${x##*/}
|
|
||||||
fstabinfo -q -t ${fstype} && services="${services} $(cat x)"
|
|
||||||
done
|
|
||||||
printf "%s\n" $services
|
|
||||||
}
|
|
||||||
|
|
||||||
depend()
|
depend()
|
||||||
{
|
{
|
||||||
config /etc/fstab
|
config /etc/fstab
|
||||||
use afc-client amd nfsclient autofs openvpn
|
use afc-client amd nfsclient autofs openvpn
|
||||||
use dns
|
use dns
|
||||||
local fs_services ="$(get_fs_services)"
|
|
||||||
[ -n "$fs_services" ] && use $fs_services
|
|
||||||
keyword -jail -prefix -systemd-nspawn -vserver -lxc
|
keyword -jail -prefix -systemd-nspawn -vserver -lxc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,31 +0,0 @@
|
|||||||
#!@SBINDIR@/openrc-run
|
|
||||||
# Copyright (C) 2015 William Hubbs <w.d.hubbs@gmail.com>
|
|
||||||
# Released under the 2-clause BSD license.
|
|
||||||
|
|
||||||
command=/bin/s6-svscan
|
|
||||||
command_args="${RC_SVCDIR}"/s6-scan
|
|
||||||
command_background=yes
|
|
||||||
pidfile=/var/run/s6-svscan.pid
|
|
||||||
|
|
||||||
depend()
|
|
||||||
{
|
|
||||||
need localmount
|
|
||||||
}
|
|
||||||
|
|
||||||
start_pre()
|
|
||||||
{
|
|
||||||
einfo "Creating s6 scan directory"
|
|
||||||
checkpath -d -m 0755 "$RC_SVCDIR"/s6-scan
|
|
||||||
return $?
|
|
||||||
}
|
|
||||||
|
|
||||||
stop_post()
|
|
||||||
{
|
|
||||||
ebegin "Stopping any remaining s6 services"
|
|
||||||
s6-svc -dx "${RC_SVCDIR}"/s6-scan/* 2>/dev/null || true
|
|
||||||
eend $?
|
|
||||||
|
|
||||||
ebegin "Stopping any remaining s6 service loggers"
|
|
||||||
s6-svc -dx "${RC_SVCDIR}"/s6-scan/*/log 2>/dev/null || true
|
|
||||||
eend $?
|
|
||||||
}
|
|
||||||
@@ -30,7 +30,7 @@ start()
|
|||||||
if yesno "${RC_GOINGDOWN}"; then
|
if yesno "${RC_GOINGDOWN}"; then
|
||||||
rc=0
|
rc=0
|
||||||
fi
|
fi
|
||||||
eend $rc "Unable to create $RC_LIBEXECDIR/cache"
|
eend $rc "Unable to create $RC_SVCDIR/cache"
|
||||||
return $rc
|
return $rc
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|||||||
10
man/Makefile
10
man/Makefile
@@ -1,17 +1,9 @@
|
|||||||
MK= ../mk
|
|
||||||
include ${MK}/sys.mk
|
|
||||||
include ${MK}/os.mk
|
|
||||||
|
|
||||||
MAN3= einfo.3 \
|
MAN3= einfo.3 \
|
||||||
rc_config.3 rc_deptree.3 rc_find_pids.3 rc_plugin_hook.3 \
|
rc_config.3 rc_deptree.3 rc_find_pids.3 rc_plugin_hook.3 \
|
||||||
rc_runlevel.3 rc_service.3 rc_stringlist.3
|
rc_runlevel.3 rc_service.3 rc_stringlist.3
|
||||||
MAN8= rc-service.8 rc-status.8 rc-update.8 openrc.8 openrc-run.8 \
|
MAN8= rc-service.8 rc-status.8 rc-update.8 openrc.8 openrc-run.8 \
|
||||||
service.8 start-stop-daemon.8
|
service.8 start-stop-daemon.8
|
||||||
|
|
||||||
ifeq (${OS},Linux)
|
|
||||||
MAN8 += rc-sstat.8
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Handy macro to create symlinks
|
# Handy macro to create symlinks
|
||||||
# This does rely on correctly formatting our manpages!
|
# This does rely on correctly formatting our manpages!
|
||||||
MAKE_LINKS= suffix=$${man\#*.}; \
|
MAKE_LINKS= suffix=$${man\#*.}; \
|
||||||
@@ -24,6 +16,8 @@ MAKE_LINKS= suffix=$${man\#*.}; \
|
|||||||
fi; \
|
fi; \
|
||||||
done;
|
done;
|
||||||
|
|
||||||
|
MK= ../mk
|
||||||
|
include ${MK}/sys.mk
|
||||||
include ${MK}/gitignore.mk
|
include ${MK}/gitignore.mk
|
||||||
|
|
||||||
all:
|
all:
|
||||||
|
|||||||
@@ -107,19 +107,6 @@ the service has already been stopped.
|
|||||||
String describing the service.
|
String describing the service.
|
||||||
.It Ar description_$command
|
.It Ar description_$command
|
||||||
String describing the extra command.
|
String describing the extra command.
|
||||||
.It Ar supervisor
|
|
||||||
Supervisor to use to monitor this daemon. If this is unset,
|
|
||||||
start-stop-daemon will be used. The only alternate supervisor we support
|
|
||||||
in this release is S6 from Skarnet software. To use this, set
|
|
||||||
supervisor=s6.
|
|
||||||
.It Ar s6_service_path
|
|
||||||
The path to the s6 service directory if you are monitoring this service
|
|
||||||
with S6. The default is /var/svc.d/${RC_SVCNAME}.
|
|
||||||
.It Ar s6_svwait_options_start
|
|
||||||
The options to pass to s6-svwait when starting the service via s6.
|
|
||||||
.It Ar s6_service_timeout_stop
|
|
||||||
The amount of time, in milliseconds, s6-svc should wait for the service
|
|
||||||
to go down when stopping the service. The default is 10000.
|
|
||||||
.It Ar start_stop_daemon_args
|
.It Ar start_stop_daemon_args
|
||||||
List of arguments passed to start-stop-daemon when starting the daemon.
|
List of arguments passed to start-stop-daemon when starting the daemon.
|
||||||
.It Ar command
|
.It Ar command
|
||||||
@@ -127,8 +114,7 @@ Daemon to start or stop via
|
|||||||
.Nm start-stop-daemon
|
.Nm start-stop-daemon
|
||||||
if no start or stop function is defined by the service.
|
if no start or stop function is defined by the service.
|
||||||
.It Ar command_args
|
.It Ar command_args
|
||||||
List of arguments to pass to the daemon when starting via
|
List of arguments to pass to the daemon when starting.
|
||||||
.Nm start-stop-daemon .
|
|
||||||
.It Ar command_background
|
.It Ar command_background
|
||||||
Set this to "true", "yes" or "1" (case-insensitive) to force the daemon into
|
Set this to "true", "yes" or "1" (case-insensitive) to force the daemon into
|
||||||
the background. This implies the "--make-pidfile" and "--pidfile" option of
|
the background. This implies the "--make-pidfile" and "--pidfile" option of
|
||||||
@@ -141,8 +127,6 @@ will chroot into this path before writing the pid file or starting the daemon.
|
|||||||
Pidfile to use for the above defined command.
|
Pidfile to use for the above defined command.
|
||||||
.It Ar name
|
.It Ar name
|
||||||
Display name used for the above defined command.
|
Display name used for the above defined command.
|
||||||
.It Ar stopsig
|
|
||||||
Signal to send when stopping the daemon.
|
|
||||||
.It Ar retry
|
.It Ar retry
|
||||||
Retry schedule to use when stopping the daemon. It can either be a
|
Retry schedule to use when stopping the daemon. It can either be a
|
||||||
timeout in seconds or multiple signal/timeout pairs (like SIGTERM/5).
|
timeout in seconds or multiple signal/timeout pairs (like SIGTERM/5).
|
||||||
|
|||||||
@@ -1,46 +0,0 @@
|
|||||||
.\" Copyright (c) 2015 William Hubbs
|
|
||||||
.\"
|
|
||||||
.\" Redistribution and use in source and binary forms, with or without
|
|
||||||
.\" modification, are permitted provided that the following conditions
|
|
||||||
.\" are met:
|
|
||||||
.\" 1. Redistributions of source code must retain the above copyright
|
|
||||||
.\" notice, this list of conditions and the following disclaimer.
|
|
||||||
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
.\" notice, this list of conditions and the following disclaimer in the
|
|
||||||
.\" documentation and/or other materials provided with the distribution.
|
|
||||||
.\"
|
|
||||||
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
|
||||||
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
|
||||||
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
||||||
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
||||||
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
||||||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
||||||
.\" SUCH DAMAGE.
|
|
||||||
.\"
|
|
||||||
.Dd April 24, 2008
|
|
||||||
.Dt RC-sstat 8 SMM
|
|
||||||
.Os OpenRC
|
|
||||||
.Sh NAME
|
|
||||||
.Nm rc-sstat
|
|
||||||
.Nd show status info about services supervised by s6 then rc-status
|
|
||||||
info
|
|
||||||
.Sh SYNOPSIS
|
|
||||||
.Nm
|
|
||||||
.Sh DESCRIPTION
|
|
||||||
.Nm
|
|
||||||
gathers and displays information about the status of services supervised
|
|
||||||
by s6 then runs rc-status to show info about nnormal OpenRC services.
|
|
||||||
.Pp
|
|
||||||
.Sh EXIT STATUS
|
|
||||||
.Nm
|
|
||||||
exits 1 if there is an internal error or exits with the same exit codes
|
|
||||||
as rc-status.
|
|
||||||
.Sh SEE ALSO
|
|
||||||
.Xr rc-status 8 ,
|
|
||||||
.Xr rc-update 8
|
|
||||||
.Sh AUTHORS
|
|
||||||
.An William Hubbs <w.d.hubbs@gmail.com>
|
|
||||||
48
s6-guide.md
48
s6-guide.md
@@ -1,48 +0,0 @@
|
|||||||
# Using S6 with OpenRC
|
|
||||||
|
|
||||||
Beginning with OpenRC-0.16, we support using the s6 supervision suite
|
|
||||||
from Skarmet Software in place of start-stop-daemon for monitoring
|
|
||||||
daemons [1].
|
|
||||||
|
|
||||||
## Setup
|
|
||||||
|
|
||||||
Documenting s6 in detail is beyond the scope of this guide. It will
|
|
||||||
document how to set up OpenRC services to communicate with s6.
|
|
||||||
|
|
||||||
### Use Default start, stop and status functions
|
|
||||||
|
|
||||||
If you write your own start, stop and status functions in your service
|
|
||||||
script, none of this will work. You must allow OpenRC to use the default
|
|
||||||
functions.
|
|
||||||
|
|
||||||
### Dependencies
|
|
||||||
|
|
||||||
All OpenRC service scripts that want their daemons monitored by s6
|
|
||||||
should have the following line added to their dependencies to make sure
|
|
||||||
the s6 scan directory is being monitored.
|
|
||||||
|
|
||||||
need s6-svscan
|
|
||||||
|
|
||||||
### Variable Settings
|
|
||||||
|
|
||||||
The most important setting is the supervisor variable. At the top of
|
|
||||||
your service script, you should set this variable as follows:
|
|
||||||
|
|
||||||
supervisor=s6
|
|
||||||
|
|
||||||
Several other variables affect s6 services. They are documented on the
|
|
||||||
openrc-run man page, but I will list them here for convenience:
|
|
||||||
|
|
||||||
s6_service_path - the path to the s6 service directory. The default is
|
|
||||||
/var/svc.d/$RC_SVCNAME.
|
|
||||||
|
|
||||||
s6_svwait_options_start - the options to pass to s6-svwait when starting
|
|
||||||
the service. If this is not set, s6-svwait will not be called.
|
|
||||||
|
|
||||||
s6_service_timeout_stop - the amount of time, in milliseconds, s6-svc
|
|
||||||
should wait for a service to go down when stopping.
|
|
||||||
|
|
||||||
This is very early support, so feel free to file bugs if you have
|
|
||||||
issues.
|
|
||||||
|
|
||||||
[1] http://www.skarnet.org/software/s6
|
|
||||||
1
scripts/.gitignore
vendored
1
scripts/.gitignore
vendored
@@ -1 +0,0 @@
|
|||||||
rc-sstat
|
|
||||||
@@ -1,19 +1,5 @@
|
|||||||
MK= ../mk
|
|
||||||
include ${MK}/os.mk
|
|
||||||
|
|
||||||
DIR= ${LIBEXECDIR}/bin
|
DIR= ${LIBEXECDIR}/bin
|
||||||
BIN= on_ac_power
|
BIN= on_ac_power
|
||||||
INSTALLAFTER = _installafter
|
|
||||||
|
|
||||||
ifeq (${OS},Linux)
|
|
||||||
SRCS+= rc-sstat.in
|
|
||||||
BIN+= rc-sstat
|
|
||||||
endif
|
|
||||||
|
|
||||||
_installafter:
|
|
||||||
ifeq (${OS},Linux)
|
|
||||||
${INSTALL} -d ${DESTDIR}${SBINDIR}
|
|
||||||
ln -s ${DIR}/rc-sstat ${DESTDIR}/${SBINDIR}/rc-sstat
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
MK= ../mk
|
||||||
include ${MK}/scripts.mk
|
include ${MK}/scripts.mk
|
||||||
|
|||||||
@@ -1,140 +0,0 @@
|
|||||||
#!@SHELL@
|
|
||||||
|
|
||||||
# Define variables
|
|
||||||
scandir="/run/openrc/s6-scan"
|
|
||||||
statfile=/dev/shm/s6-svstat.${USER}
|
|
||||||
|
|
||||||
color_red='\E[01;31m'
|
|
||||||
color_green='\E[32m'
|
|
||||||
color_yellow='\E[01;33m'
|
|
||||||
|
|
||||||
# Time Modules
|
|
||||||
uptimeModules() {
|
|
||||||
# Given a single integer argument representing seconds of uptime...
|
|
||||||
# convert uptime to a friendly human readable string: '2d 16h 58m 46s'
|
|
||||||
# define a variable to keep track of the longest length uptime string
|
|
||||||
uSec=${1:-0}
|
|
||||||
|
|
||||||
uDay=$(( $uSec / 86400 ))
|
|
||||||
uSec=$(( $uSec % 86400 ))
|
|
||||||
uHour=$(( $uSec / 3600 ))
|
|
||||||
uSec=$(( $uSec % 3600 ))
|
|
||||||
uMin=$(( $uSec / 60 ))
|
|
||||||
uSec=$(( $uSec % 60 ))
|
|
||||||
|
|
||||||
[ $uDay -ne 0 ] && pDay="${uDay}d " || pDay=""
|
|
||||||
[ $uHour -ne 0 ] && pHour="${uHour}h " || pHour=""
|
|
||||||
[ $uMin -ne 0 ] && pMin="${uMin}m " || pMin=""
|
|
||||||
[ $uSec -ne 0 ] && pSec="${uSec}s " || pSec=""
|
|
||||||
|
|
||||||
parsedUptime="$( echo ${pDay}${pHour}${pMin}${pSec} | sed 's#[ \t]*$##' )"
|
|
||||||
uCharCount=${#parsedUptime}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Make sure we are running as root
|
|
||||||
if [ $(id -u) != 0 ]; then
|
|
||||||
printf "This command must be run as root\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Make sure scandir exists
|
|
||||||
if [ ! -d $scandir ]; then
|
|
||||||
printf "%s\n" "$scandir does not exist"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Make sure s6-svscan is running
|
|
||||||
if ! pgrep s6-svscan >/dev/null ; then
|
|
||||||
printf "s6-svscan is not running\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# If TERM is undefined (launching sstat through an ssh command) then make it vt100
|
|
||||||
if [ -z $TERM -o $TERM = "dumb" ]; then
|
|
||||||
export TERM=vt100
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Gather list of candidate services s6-supervise may be supervising
|
|
||||||
# filter for folders and symlinks at /run/openrc/s6-scan/* ommiting output starting with '.'
|
|
||||||
services="$(find $scandir -maxdepth 1 -mindepth 1 \( -type d -or -type l \) | awk -F'/' '{ if ( $NF !~ "^\\." ) print $NF}')"
|
|
||||||
if [ -z "$services" ]; then
|
|
||||||
printf "s6 found no services configured for supervision\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Gather status for each service from s6-svstat
|
|
||||||
# write to tmp file in memory for non I/O bound repeatative access
|
|
||||||
rm -f $statfile 2>/dev/null
|
|
||||||
for service in $services ; do
|
|
||||||
echo "$service $(s6-svstat ${scandir}/${service})" >> $statfile
|
|
||||||
done
|
|
||||||
|
|
||||||
# Define longest string from parsed uptime (default to 7 to match string length of 'Up Time')
|
|
||||||
timeStringLength=7
|
|
||||||
for uptime in $(awk '$2 == "up" {print $5}' $statfile | sort -run)
|
|
||||||
do
|
|
||||||
uptimeModules $uptime
|
|
||||||
[ ${uCharCount} -gt $timeStringLength ] && timeStringLength=$uCharCount
|
|
||||||
done
|
|
||||||
|
|
||||||
|
|
||||||
# Print the status header like so...
|
|
||||||
# Service Name State PID Up Time Start Time
|
|
||||||
#---------------------------- ----- ----- -------------- -------------------
|
|
||||||
printf "\n"
|
|
||||||
printf "%28s %5s %5s %${timeStringLength}s %19s\n" "Service Name" "State" "PID" "Up Time" "Start Time"
|
|
||||||
for dashes in 28 5 5 $timeStringLength 19 ; do
|
|
||||||
printf "%0.s-" $(seq 1 $dashes) ; echo -n ' '
|
|
||||||
done && printf "\n"
|
|
||||||
|
|
||||||
|
|
||||||
# sshd up (pid 26300) 80373 seconds
|
|
||||||
cat $statfile | \
|
|
||||||
while read line
|
|
||||||
do
|
|
||||||
set $line
|
|
||||||
|
|
||||||
service=$1
|
|
||||||
state=$2
|
|
||||||
pid=${4/)/}
|
|
||||||
time=$5
|
|
||||||
|
|
||||||
# call function to convert time in seconds and define additional variables
|
|
||||||
uptimeModules $time
|
|
||||||
|
|
||||||
if [ "$state" = up ]; then
|
|
||||||
if [ $time -lt 30 ]; then
|
|
||||||
# uptime < 30 seconds, color the whole line yellow
|
|
||||||
echo -en "$color_yellow"
|
|
||||||
# 1st 4 columns are printed with printf for space padding
|
|
||||||
printf "%28s %5s %5s %${timeStringLength}s" $service $state $pid "$parsedUptime"
|
|
||||||
# 4th column is output from date -d
|
|
||||||
echo -e " $(date -d "${time} seconds ago" "+%F %T")"
|
|
||||||
# reset terminal colors
|
|
||||||
tput sgr0
|
|
||||||
else
|
|
||||||
printf "%28s" $service
|
|
||||||
# uptime > 30 seconds, color just the "state" value green
|
|
||||||
echo -en "$color_green"
|
|
||||||
printf " %5s" $state
|
|
||||||
# reset terminal colors
|
|
||||||
tput sgr0
|
|
||||||
printf " %5s" $pid
|
|
||||||
printf " %${timeStringLength}s" "$parsedUptime"
|
|
||||||
echo -e " $(date -d "${time} seconds ago" "+%F %T")"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
printf "%28s" $service
|
|
||||||
echo -en "$color_red"
|
|
||||||
printf " %5s" $state
|
|
||||||
tput sgr0
|
|
||||||
echo ""
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Cleanup
|
|
||||||
rm -f $statfile 2>/dev/null
|
|
||||||
|
|
||||||
printf "\n\n"
|
|
||||||
|
|
||||||
rc-status
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
DIR= ${LIBEXECDIR}/sh
|
DIR= ${LIBEXECDIR}/sh
|
||||||
SRCS= init.sh.in functions.sh.in gendepends.sh.in \
|
SRCS= init.sh.in functions.sh.in gendepends.sh.in \
|
||||||
openrc-run.sh.in rc-functions.sh.in tmpfiles.sh.in ${SRCS-${OS}}
|
openrc-run.sh.in rc-functions.sh.in tmpfiles.sh.in ${SRCS-${OS}}
|
||||||
INC= rc-mount.sh functions.sh rc-functions.sh s6.sh start-stop-daemon.sh
|
INC= rc-mount.sh functions.sh rc-functions.sh
|
||||||
BIN= gendepends.sh init.sh openrc-run.sh tmpfiles.sh ${BIN-${OS}}
|
BIN= gendepends.sh init.sh openrc-run.sh tmpfiles.sh ${BIN-${OS}}
|
||||||
|
|
||||||
INSTALLAFTER= _installafter
|
INSTALLAFTER= _installafter
|
||||||
|
|||||||
@@ -126,42 +126,69 @@ _status()
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Template start / stop / status functions
|
# Template start / stop / status functions
|
||||||
# These functions select the appropriate function to call from the
|
|
||||||
# supervisor modules
|
|
||||||
start()
|
start()
|
||||||
{
|
{
|
||||||
local func=ssd_start
|
[ -n "$command" ] || return 0
|
||||||
case "$supervisor" in
|
local _background=
|
||||||
s6) func=s6_start ;;
|
ebegin "Starting ${name:-$RC_SVCNAME}"
|
||||||
?*)
|
if yesno "${command_background}"; then
|
||||||
ewarn "Invalid supervisor, \"$supervisor\", using start-stop-daemon"
|
if [ -z "${pidfile}" ]; then
|
||||||
;;
|
eend 1 "command_background option used but no pidfile specified"
|
||||||
esac
|
return 1
|
||||||
$func
|
fi
|
||||||
|
_background="--background --make-pidfile"
|
||||||
|
fi
|
||||||
|
if yesno "$start_inactive"; then
|
||||||
|
local _inactive=false
|
||||||
|
service_inactive && _inactive=true
|
||||||
|
mark_service_inactive
|
||||||
|
fi
|
||||||
|
eval start-stop-daemon --start \
|
||||||
|
--exec $command \
|
||||||
|
${chroot:+--chroot} $chroot \
|
||||||
|
${procname:+--name} $procname \
|
||||||
|
${pidfile:+--pidfile} $pidfile \
|
||||||
|
$_background $start_stop_daemon_args \
|
||||||
|
-- $command_args
|
||||||
|
if eend $? "Failed to start $RC_SVCNAME"; then
|
||||||
|
service_set_value "command" "${command}"
|
||||||
|
[ -n "${chroot}" ] && service_set_value "chroot" "${chroot}"
|
||||||
|
[ -n "${pidfile}" ] && service_set_value "pidfile" "${pidfile}"
|
||||||
|
[ -n "${procname}" ] && service_set_value "procname" "${procname}"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
if yesno "$start_inactive"; then
|
||||||
|
if ! $_inactive; then
|
||||||
|
mark_service_stopped
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
stop()
|
stop()
|
||||||
{
|
{
|
||||||
local func=ssd_stop
|
local startcommand="$(service_get_value "command")"
|
||||||
case "$supervisor" in
|
local startchroot="$(service_get_value "chroot")"
|
||||||
s6) func=s6_stop ;;
|
local startpidfile="$(service_get_value "pidfile")"
|
||||||
?*)
|
local startprocname="$(service_get_value "procname")"
|
||||||
ewarn "Invalid supervisor, \"$supervisor\", using start-stop-daemon"
|
command="${startcommand:-$command}"
|
||||||
;;
|
chroot="${startchroot:-$chroot}"
|
||||||
esac
|
pidfile="${startpidfile:-$pidfile}"
|
||||||
$func
|
procname="${startprocname:-$procname}"
|
||||||
|
[ -n "$command" -o -n "$procname" -o -n "$pidfile" ] || return 0
|
||||||
|
ebegin "Stopping ${name:-$RC_SVCNAME}"
|
||||||
|
start-stop-daemon --stop \
|
||||||
|
${retry:+--retry} $retry \
|
||||||
|
${command:+--exec} $command \
|
||||||
|
${procname:+--name} $procname \
|
||||||
|
${pidfile:+--pidfile} $chroot$pidfile \
|
||||||
|
${stopsig:+--signal} $stopsig
|
||||||
|
eend $? "Failed to stop $RC_SVCNAME"
|
||||||
}
|
}
|
||||||
|
|
||||||
status()
|
status()
|
||||||
{
|
{
|
||||||
local func=ssd_status
|
_status
|
||||||
case "$supervisor" in
|
|
||||||
s6) func=s6_status ;;
|
|
||||||
?*)
|
|
||||||
ewarn "Invalid supervisor, \"$supervisor\", using start-stop-daemon"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
$func
|
|
||||||
}
|
}
|
||||||
|
|
||||||
yesno $RC_DEBUG && set -x
|
yesno $RC_DEBUG && set -x
|
||||||
@@ -185,10 +212,6 @@ unset _conf_d
|
|||||||
# Load any system overrides
|
# Load any system overrides
|
||||||
sourcex -e "@SYSCONFDIR@/rc.conf"
|
sourcex -e "@SYSCONFDIR@/rc.conf"
|
||||||
|
|
||||||
# load service supervisor functions
|
|
||||||
sourcex "@LIBEXECDIR@/sh/s6.sh"
|
|
||||||
sourcex "@LIBEXECDIR@/sh/start-stop-daemon.sh"
|
|
||||||
|
|
||||||
# Set verbose mode
|
# Set verbose mode
|
||||||
if yesno "${rc_verbose:-$RC_VERBOSE}"; then
|
if yesno "${rc_verbose:-$RC_VERBOSE}"; then
|
||||||
EINFO_VERBOSE=yes
|
EINFO_VERBOSE=yes
|
||||||
|
|||||||
50
sh/s6.sh
50
sh/s6.sh
@@ -1,50 +0,0 @@
|
|||||||
# Start / stop / status functions for s6 support
|
|
||||||
# Copyright (c) 2015 William Hubbs <w.d.hubbs@gmail.com>
|
|
||||||
# Released under the 2-clause BSD license.
|
|
||||||
|
|
||||||
[ -z "${s6_service_path}" ] && s6_service_path="/var/svc.d/${RC_SVCNAME}"
|
|
||||||
|
|
||||||
s6_start()
|
|
||||||
{
|
|
||||||
if [ ! -d "${s6_service_path}" ]; then
|
|
||||||
eerror "${s6_service_path} does not exist."
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
s6_service_link="${RC_SVCDIR}/s6-scan/${s6_service_path##*/}"
|
|
||||||
ebegin "Starting ${name:-$RC_SVCNAME}"
|
|
||||||
ln -sf "${s6_service_path}" "${s6_service_link}"
|
|
||||||
s6-svscanctl -na "${RC_SVCDIR}"/s6-scan
|
|
||||||
sleep 1.5
|
|
||||||
s6-svc -u "${s6_service_link}"
|
|
||||||
if [ -n "$s6_svwait_options_start" ]; then
|
|
||||||
s6-svwait ${s6_svwait_options_start} "${s6_service_link}"
|
|
||||||
fi
|
|
||||||
sleep 1.5
|
|
||||||
set -- $(s6-svstat "${s6_service_link}")
|
|
||||||
[ "$1" = "up" ]
|
|
||||||
eend $? "Failed to start $RC_SVCNAME"
|
|
||||||
}
|
|
||||||
|
|
||||||
s6_stop()
|
|
||||||
{
|
|
||||||
if [ ! -d "${s6_service_path}" ]; then
|
|
||||||
eerror "${s6_service_path} does not exist."
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
s6_service_link="${RC_SVCDIR}/s6-scan/${s6_service_path##*/}"
|
|
||||||
ebegin "Stopping ${name:-$RC_SVCNAME}"
|
|
||||||
s6-svc -Dd -T ${s6_service_timeout_stop:-10000} "${s6_service_link}"
|
|
||||||
set -- $(s6-svstat "${s6_service_link}")
|
|
||||||
[ "$1" = "down" ]
|
|
||||||
eend $? "Failed to stop $RC_SVCNAME"
|
|
||||||
}
|
|
||||||
|
|
||||||
s6_status()
|
|
||||||
{
|
|
||||||
s6_service_link="${RC_SVCDIR}/s6-scan/${s6_service_path##*/}"
|
|
||||||
if [ -L "${s6_service_link}" ]; then
|
|
||||||
s6-svstat "${s6_service_link}"
|
|
||||||
else
|
|
||||||
_status
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
# start / stop / status functions for start-stop-daemon
|
|
||||||
# Copyright (c) 2007-2009 Roy Marples <roy@marples.name>
|
|
||||||
# Released under the 2-clause BSD license.
|
|
||||||
|
|
||||||
ssd_start()
|
|
||||||
{
|
|
||||||
[ -n "$command" ] || return 0
|
|
||||||
|
|
||||||
local _background=
|
|
||||||
ebegin "Starting ${name:-$RC_SVCNAME}"
|
|
||||||
if yesno "${command_background}"; then
|
|
||||||
if [ -z "${pidfile}" ]; then
|
|
||||||
eend 1 "command_background option used but no pidfile specified"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
if [ -n "${command_args_background}" ]; then
|
|
||||||
eend 1 "command_background used with command_args_background"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
_background="--background --make-pidfile"
|
|
||||||
fi
|
|
||||||
if yesno "$start_inactive"; then
|
|
||||||
local _inactive=false
|
|
||||||
service_inactive && _inactive=true
|
|
||||||
mark_service_inactive
|
|
||||||
fi
|
|
||||||
eval start-stop-daemon --start \
|
|
||||||
--exec $command \
|
|
||||||
${procname:+--name} $procname \
|
|
||||||
${pidfile:+--pidfile} $pidfile \
|
|
||||||
${command_user+--user} $command_user \
|
|
||||||
$_background $start_stop_daemon_args \
|
|
||||||
-- $command_args $command_args_background
|
|
||||||
if eend $? "Failed to start $RC_SVCNAME"; then
|
|
||||||
service_set_value "command" "${command}"
|
|
||||||
[ -n "${pidfile}" ] && service_set_value "pidfile" "${pidfile}"
|
|
||||||
[ -n "${procname}" ] && service_set_value "procname" "${procname}"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
if yesno "$start_inactive"; then
|
|
||||||
if ! $_inactive; then
|
|
||||||
mark_service_stopped
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
ssd_stop()
|
|
||||||
{
|
|
||||||
local startcommand="$(service_get_value "command")"
|
|
||||||
local startpidfile="$(service_get_value "pidfile")"
|
|
||||||
local startprocname="$(service_get_value "procname")"
|
|
||||||
command="${startcommand:-$command}"
|
|
||||||
pidfile="${startpidfile:-$pidfile}"
|
|
||||||
procname="${startprocname:-$procname}"
|
|
||||||
[ -n "$command" -o -n "$procname" -o -n "$pidfile" ] || return 0
|
|
||||||
ebegin "Stopping ${name:-$RC_SVCNAME}"
|
|
||||||
start-stop-daemon --stop \
|
|
||||||
${retry:+--retry} $retry \
|
|
||||||
${command:+--exec} $command \
|
|
||||||
${procname:+--name} $procname \
|
|
||||||
${pidfile:+--pidfile} $pidfile \
|
|
||||||
${stopsig:+--signal} $stopsig
|
|
||||||
|
|
||||||
eend $? "Failed to stop $RC_SVCNAME"
|
|
||||||
}
|
|
||||||
|
|
||||||
ssd_status()
|
|
||||||
{
|
|
||||||
_status
|
|
||||||
}
|
|
||||||
23
sh/tmpfiles.sh.in
Normal file → Executable file
23
sh/tmpfiles.sh.in
Normal file → Executable file
@@ -53,18 +53,10 @@ relabel() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
splitpath() {
|
|
||||||
local path=$1
|
|
||||||
while [ -n "$path" ]; do
|
|
||||||
echo $path
|
|
||||||
path=${path%/*}
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
_restorecon() {
|
_restorecon() {
|
||||||
local path=$1
|
local path=$1
|
||||||
if [ -x /sbin/restorecon ]; then
|
if [ -x /sbin/restorecon ]; then
|
||||||
dryrun_or_real restorecon -F $(splitpath "$path")
|
dryrun_or_real restorecon -F "$path"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -130,7 +122,6 @@ _d() {
|
|||||||
|
|
||||||
if [ ! -d "$path" ]; then
|
if [ ! -d "$path" ]; then
|
||||||
dryrun_or_real mkdir -p "$path" 2>/dev/null
|
dryrun_or_real mkdir -p "$path" 2>/dev/null
|
||||||
_restorecon "$path"
|
|
||||||
dryrun_or_real $CHECKPATH -dq -m "$mode" -o "$uid:$gid" "$path"
|
dryrun_or_real $CHECKPATH -dq -m "$mode" -o "$uid:$gid" "$path"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -146,18 +137,10 @@ _D() {
|
|||||||
|
|
||||||
if [ $CREATE -gt 0 ]; then
|
if [ $CREATE -gt 0 ]; then
|
||||||
dryrun_or_real mkdir -p "$path" 2>/dev/null
|
dryrun_or_real mkdir -p "$path" 2>/dev/null
|
||||||
_restorecon "$path"
|
|
||||||
dryrun_or_real $CHECKPATH -Dq -m "$mode" -o "$uid:$gid" "$path"
|
dryrun_or_real $CHECKPATH -Dq -m "$mode" -o "$uid:$gid" "$path"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
_v() {
|
|
||||||
# Create a subvolume if the path does not exist yet and the file system
|
|
||||||
# supports this (btrfs). Otherwise create a normal directory.
|
|
||||||
# TODO: Implement btrfs subvol creation.
|
|
||||||
_d "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
_L() {
|
_L() {
|
||||||
# Create a symlink if it doesn't exist yet
|
# Create a symlink if it doesn't exist yet
|
||||||
local path=$1 mode=$2 uid=$3 gid=$4 age=$5 arg=$6
|
local path=$1 mode=$2 uid=$3 gid=$4 age=$5 arg=$6
|
||||||
@@ -353,7 +336,7 @@ for FILE in $tmpfiles_d ; do
|
|||||||
|
|
||||||
# whine about invalid entries
|
# whine about invalid entries
|
||||||
case $cmd in
|
case $cmd in
|
||||||
f|F|w|d|D|v|p|L|c|C|b|x|X|r|R|z|Z) ;;
|
f|F|w|d|D|p|L|c|C|b|x|X|r|R|z|Z) ;;
|
||||||
*) warninvalid ; continue ;;
|
*) warninvalid ; continue ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@@ -361,7 +344,7 @@ for FILE in $tmpfiles_d ; do
|
|||||||
if [ "$mode" = '-' -o "$mode" = '' ]; then
|
if [ "$mode" = '-' -o "$mode" = '' ]; then
|
||||||
case "$cmd" in
|
case "$cmd" in
|
||||||
p|f|F) mode=0644 ;;
|
p|f|F) mode=0644 ;;
|
||||||
d|D|v) mode=0755 ;;
|
d|D) mode=0755 ;;
|
||||||
C|z|Z|x|r|R|L) ;;
|
C|z|Z|x|r|R|L) ;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -347,7 +347,7 @@ get_regex(const char *string)
|
|||||||
|
|
||||||
#include "_usage.h"
|
#include "_usage.h"
|
||||||
#define extraopts "[mount1] [mount2] ..."
|
#define extraopts "[mount1] [mount2] ..."
|
||||||
#define getoptstring "f:F:n:N:o:O:p:P:iste:E:" getoptstring_COMMON
|
#define getoptstring "f:F:n:N:o:O:p:P:ist" getoptstring_COMMON
|
||||||
static const struct option longopts[] = {
|
static const struct option longopts[] = {
|
||||||
{ "fstype-regex", 1, NULL, 'f'},
|
{ "fstype-regex", 1, NULL, 'f'},
|
||||||
{ "skip-fstype-regex", 1, NULL, 'F'},
|
{ "skip-fstype-regex", 1, NULL, 'F'},
|
||||||
|
|||||||
@@ -66,7 +66,6 @@ static const char *const env_whitelist[] = {
|
|||||||
"LC_MONETARY", "LC_MESSAGES", "LC_PAPER", "LC_NAME", "LC_ADDRESS",
|
"LC_MONETARY", "LC_MESSAGES", "LC_PAPER", "LC_NAME", "LC_ADDRESS",
|
||||||
"LC_TELEPHONE", "LC_MEASUREMENT", "LC_IDENTIFICATION", "LC_ALL",
|
"LC_TELEPHONE", "LC_MEASUREMENT", "LC_IDENTIFICATION", "LC_ALL",
|
||||||
"IN_HOTPLUG", "IN_BACKGROUND", "RC_INTERFACE_KEEP_CONFIG",
|
"IN_HOTPLUG", "IN_BACKGROUND", "RC_INTERFACE_KEEP_CONFIG",
|
||||||
"EERROR_QUIET", "EINFO_QUIET",
|
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user