1
0
mirror of https://github.com/systemd/systemd.git synced 2025-02-18 21:57:48 +03:00

Merge pull request #7735 from poettering/rc-local-fix

rc-local documentation
This commit is contained in:
Yu Watanabe 2017-12-27 01:31:22 +09:00 committed by GitHub
commit 3529295d2b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 98 additions and 14 deletions

View File

@ -594,6 +594,7 @@ manpages = [
'8',
['systemd-random-seed'],
'ENABLE_RANDOMSEED'],
['systemd-rc-local-generator', '8', [], ''],
['systemd-remount-fs.service', '8', ['systemd-remount-fs'], ''],
['systemd-resolve', '1', [], 'ENABLE_RESOLVE'],
['systemd-resolved.service', '8', ['systemd-resolved'], 'ENABLE_RESOLVE'],

View File

@ -0,0 +1,86 @@
<?xml version="1.0"?>
<!--*-nxml-*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!--
SPDX-License-Identifier: LGPL-2.1+
This file is part of systemd.
Copyright 2017 Lennart Poettering
systemd is free software; you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or
(at your option) any later version.
systemd is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with systemd; If not, see <http://www.gnu.org/licenses/>.
-->
<refentry id="systemd-rc-local-generator">
<refentryinfo>
<title>systemd-rc-local-generator</title>
<productname>systemd</productname>
<authorgroup>
<author>
<contrib>Developer</contrib>
<firstname>Lennart</firstname>
<surname>Poettering</surname>
<email>lennart@poettering.net</email>
</author>
</authorgroup>
</refentryinfo>
<refmeta>
<refentrytitle>systemd-rc-local-generator</refentrytitle>
<manvolnum>8</manvolnum>
</refmeta>
<refnamediv>
<refname>systemd-rc-local-generator</refname>
<refpurpose>Compatibility generator for starting <filename>/etc/rc.local</filename> and <filename>/usr/sbin/halt.local</filename> during boot and shutdown</refpurpose>
</refnamediv>
<refsynopsisdiv>
<para><filename>/usr/lib/systemd/system-generators/systemd-rc-local-generator</filename></para>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para><filename>systemd-rc-local-generator</filename> is a generator that checks whether
<filename>/etc/rc.local</filename> exists and is executable, and if it is pulls the
<filename>rc-local.service</filename> unit into the boot process. This unit is responsible for running this script
during late boot. Note that the script will be run with slightly different semantics than the original System V
version, which was run "last" in the boot process, which is a concept that does not translate to systemd. The
script is run after <filename>network.target</filename>, but in parallel with most other regular system
services.</para>
<para><filename>systemd-rc-local-generator</filename> also checks whether <filename>/usr/sbin/halt.local</filename>
exists and is executable, and if it is pulls the <filename>halt-local.service</filename> unit into the shutdown
process. This unit is responsible for running this script during later shutdown.</para>
<para>Support for both <filename>/etc/rc.local</filename> and <filename>/usr/sbin/halt.local</filename> is provided
for compatibility with specific System V systems only. However, it is strongly recommended to avoid making use of
these scripts today, and instead provide proper unit files with appropriate dependencies for any scripts to run
during the boot or shutdown processes.</para>
<para><filename>systemd-rc-local-generator</filename> implements
<citerefentry><refentrytitle>systemd.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para>
</refsect1>
<refsect1>
<title>See Also</title>
<para>
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
</para>
</refsect1>
</refentry>

View File

@ -336,6 +336,7 @@ find $dir</programlisting>
<citerefentry><refentrytitle>systemd-getty-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd-gpt-auto-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd-hibernate-resume-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd-rc-local-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd-system-update-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd-sysv-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,

View File

@ -23,7 +23,6 @@
#include <stdio.h>
#include <unistd.h>
#include "alloc-util.h"
#include "log.h"
#include "mkdir.h"
#include "string-util.h"
@ -32,21 +31,16 @@
static const char *arg_dest = "/tmp";
static int add_symlink(const char *service, const char *where) {
_cleanup_free_ char *from = NULL, *to = NULL;
const char *from, *to;
int r;
assert(service);
assert(where);
from = strjoin(SYSTEM_DATA_UNIT_PATH, "/", service);
if (!from)
return log_oom();
from = strjoina(SYSTEM_DATA_UNIT_PATH "/", service);
to = strjoina(arg_dest, "/", where, ".wants/", service);
to = strjoin(arg_dest, "/", where, ".wants/", service);
if (!to)
return log_oom();
mkdir_parents_label(to, 0755);
(void) mkdir_parents_label(to, 0755);
r = symlink(from, to);
if (r < 0) {
@ -60,7 +54,7 @@ static int add_symlink(const char *service, const char *where) {
}
int main(int argc, char *argv[]) {
int r = EXIT_SUCCESS;
int ret = EXIT_SUCCESS;
if (argc > 1 && argc != 4) {
log_error("This program takes three or no arguments.");
@ -80,15 +74,15 @@ int main(int argc, char *argv[]) {
log_debug("Automatically adding rc-local.service.");
if (add_symlink("rc-local.service", "multi-user.target") < 0)
r = EXIT_FAILURE;
ret = EXIT_FAILURE;
}
if (access(RC_LOCAL_SCRIPT_PATH_STOP, X_OK) >= 0) {
log_debug("Automatically adding halt-local.service.");
if (add_symlink("halt-local.service", "final.target") < 0)
r = EXIT_FAILURE;
ret = EXIT_FAILURE;
}
return r;
return ret;
}

View File

@ -10,6 +10,7 @@
[Unit]
Description=Early root shell on @DEBUGTTY@ FOR DEBUGGING ONLY
Documentation=man:sushell(8)
Documentation=man:systemd-debug-generator(8)
DefaultDependencies=no
IgnoreOnIsolate=yes
ConditionPathExists=@DEBUGTTY@

View File

@ -11,6 +11,7 @@
# systemd-rc-local-generator if @RC_LOCAL_SCRIPT_PATH_START@ is executable.
[Unit]
Description=@RC_LOCAL_SCRIPT_PATH_START@ Compatibility
Documentation=man:systemd-rc-local-generator(8)
ConditionFileIsExecutable=@RC_LOCAL_SCRIPT_PATH_START@
After=network.target