zoukankan      html  css  js  c++  java
  • Systemd unit generators unit

    systemd.generator(7) - Linux manual page http://man7.org/linux/man-pages/man7/systemd.generator.7.html

    SYSTEMD.GENERATOR(7)          systemd.generator         SYSTEMD.GENERATOR(7)
    

    NAME         top

           systemd.generator - Systemd unit generators
    

    SYNOPSIS         top

           /path/to/generator normal-dir early-dir late-dir
    
           /run/systemd/system-generators/*
           /etc/systemd/system-generators/*
           /usr/local/lib/systemd/system-generators/*
           /usr/lib/systemd/system-generators/*
    
           /run/systemd/user-generators/*
           /etc/systemd/user-generators/*
           /usr/local/lib/systemd/user-generators/*
           /usr/lib/systemd/user-generators/*
    

    DESCRIPTION         top

           Generators are small binaries that live in
           /usr/lib/systemd/user-generators/ and other directories listed above.
           systemd(1) will execute those binaries very early at bootup and at
           configuration reload time — before unit files are loaded. Generators
           can dynamically generate unit files or create symbolic links to unit
           files to add additional dependencies, thus extending or overriding
           existing definitions. Their main purpose is to convert configuration
           files that are not native unit files dynamically into native unit
           files.
    
           Generators are loaded from a set of paths determined during
           compilation, as listed above. System and user generators are loaded
           from directories with names ending in system-generators/ and
           user-generators/, respectively. Generators found in directories
           listed earlier override the ones with the same name in directories
           lower in the list. A symlink to /dev/null or an empty file can be
           used to mask a generator, thereby preventing it from running. Please
           note that the order of the two directories with the highest priority
           is reversed with respect to the unit load path, and generators in
           /run overwrite those in /etc.
    
           After installing new generators or updating the configuration,
           systemctl daemon-reload may be executed. This will delete the
           previous configuration created by generators, re-run all generators,
           and cause systemd to reload units from disk. See systemctl(1) for
           more information.
    

    WRITING GENERATORS         top

           Generators are invoked with three arguments: paths to runtime
           directories where generators can place their generated unit files or
           symlinks.
    
            1. normal-dir
    
               argv[1] may be used to override unit files in /usr, but not those
               in /etc. This means that unit files placed in this directory take
               precedence over vendor unit configuration but not over native
               user/administrator unit configuration.
    
            2. early-dir
    
               argv[2] may be used to override unit files in /usr and in /etc.
               This means that unit files placed in this directory take
               precedence over all configuration, both vendor and
               user/administrator.
    
            3. late-dir
    
               argv[3] may be used to extend the unit file tree without
               overriding any other unit files. Any native configuration files
               supplied by the vendor or user/administrator take precedence over
               the generated ones placed in this directory.
    
       Notes
           ·   All generators are executed in parallel. That means all
               executables are started at the very same time and need to be able
               to cope with this parallelism.
    
           ·   Generators are run very early at boot and cannot rely on any
               external services. They may not talk to any other process. That
               includes simple things such as logging to syslog(3), or systemd
               itself (this means: no systemctl(1))! Non-essential file systems
               like /var and /home are mounted after generators have run.
               Generators can however rely on the most basic kernel
               functionality to be available, including a mounted /sys, /proc,
               /dev, /usr.
    
           ·   Units written by generators are removed when the configuration is
               reloaded. That means the lifetime of the generated units is
               closely bound to the reload cycles of systemd itself.
    
           ·   Generators should only be used to generate unit files, not any
               other kind of configuration. Due to the lifecycle logic mentioned
               above, generators are not a good fit to generate dynamic
               configuration for other services. If you need to generate dynamic
               configuration for other services, do so in normal services you
               order before the service in question.
    
           ·   Since syslog(3) is not available (see above), log messages have
               to be written to /dev/kmsg instead.
    
           ·   It is a good idea to use the SourcePath= directive in generated
               unit files to specify the source configuration file you are
               generating the unit from. This makes things more easily
               understood by the user and also has the benefit that systemd can
               warn the user about configuration files that changed on disk but
               have not been read yet by systemd.
    
           ·   Generators may write out dynamic unit files or just hook unit
               files into other units with the usual .wants/ or .requires/
               symlinks. Often, it is nicer to simply instantiate a template
               unit file from /usr with a generator instead of writing out
               entirely dynamic unit files. Of course, this works only if a
               single parameter is to be used.
    
           ·   If you are careful, you can implement generators in shell
               scripts. We do recommend C code however, since generators are
               executed synchronously and hence delay the entire boot if they
               are slow.
    
           ·   Regarding overriding semantics: there are two rules we try to
               follow when thinking about the overriding semantics:
    
                1. User configuration should override vendor configuration. This
                   (mostly) means that stuff from /etc should override stuff
                   from /usr.
    
                2. Native configuration should override non-native
                   configuration. This (mostly) means that stuff you generate
                   should never override native unit files for the same purpose.
    
               Of these two rules the first rule is probably the more important
               one and breaks the second one sometimes. Hence, when deciding
               whether to user argv[1], argv[2], or argv[3], your default choice
               should probably be argv[1].
    
           ·   Instead of heading off now and writing all kind of generators for
               legacy configuration file formats, please think twice! It is
               often a better idea to just deprecate old stuff instead of
               keeping it artificially alive.
    

    EXAMPLES         top

           Example 1. systemd-fstab-generator
    
           systemd-fstab-generator(8) converts /etc/fstab into native mount
           units. It uses argv[1] as location to place the generated unit files
           in order to allow the user to override /etc/fstab with her own native
           unit files, but also to ensure that /etc/fstab overrides any vendor
           default from /usr.
    
           After editing /etc/fstab, the user should invoke systemctl
           daemon-reload. This will re-run all generators and cause systemd to
           reload units from disk. To actually mount new directories added to
           fstab, systemctl start /path/to/mountpoint or systemctl start
           local-fs.target may be used.
    
           Example 2. systemd-system-update-generator
    
           systemd-system-update-generator(8) temporarily redirects
           default.target to system-update.target, if a system update is
           scheduled. Since this needs to override the default user
           configuration for default.target, it uses argv[2]. For details about
           this logic, see systemd.offline-updates(7).
    
           Example 3. Debugging a generator
    
               dir=$(mktemp -d)
               SYSTEMD_LOG_LEVEL=debug /usr/lib/systemd/system-generators/systemd-fstab-generator 
                       "$dir" "$dir" "$dir"
               find $dir
    

    SEE ALSO         top

           systemd(1), systemd-cryptsetup-generator(8),
           systemd-debug-generator(8), systemd-fstab-generator(8), fstab(5),
           systemd-getty-generator(8), systemd-gpt-auto-generator(8),
           systemd-hibernate-resume-generator(8),
           systemd-system-update-generator(8), systemd-sysv-generator(8),
           systemd.unit(5), systemctl(1), systemd.environment-generator(7)
    

    COLOPHON         top

           This page is part of the systemd (systemd system and service manager)
           project.  Information about the project can be found at 
           ⟨http://www.freedesktop.org/wiki/Software/systemd⟩.  If you have a bug
           report for this manual page, see
           ⟨http://www.freedesktop.org/wiki/Software/systemd/#bugreports⟩.  This
           page was obtained from the project's upstream Git repository
           ⟨https://github.com/systemd/systemd.git⟩ on 2018-10-29.  (At that
           time, the date of the most recent commit that was found in the repos‐
           itory was 2018-10-29.)  If you discover any rendering problems in
           this HTML version of the page, or you believe there is a better or
           more up-to-date source for the page, or you have corrections or
           improvements to the information in this COLOPHON (which is not part
           of the original manual page), send a mail to man-pages@man7.org
    
    systemd 234                                             SYSTEMD.GENERATOR(7)



    unit

    [root@d ~]# service mysqd start
    Redirecting to /bin/systemctl start mysqd.service
    Failed to start mysqd.service: Unit not found.
    [root@d ~]# service mysqld start
    Redirecting to /bin/systemctl start mysqld.service
    [root@d ~]# service mysqld status
    Redirecting to /bin/systemctl status mysqld.service
    ● mysqld.service - MySQL Server
    Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
    Active: active (running) since Fri 2018-12-21 16:54:24 CST; 15s ago
    Docs: man:mysqld(8)
    http://dev.mysql.com/doc/refman/en/using-systemd.html
    Process: 7433 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
    Main PID: 7453 (mysqld)
    Status: "SERVER_OPERATING"
    CGroup: /system.slice/mysqld.service
    └─7453 /usr/sbin/mysqld

    Dec 21 16:54:22 d systemd[1]: Starting MySQL Server...
    Dec 21 16:54:24 d systemd[1]: Started MySQL Server.
    [root@d ~]#

  • 相关阅读:
    HNOI 2006 BZOJ 1195 最短母串
    BZOJ 3029 守卫者的挑战
    Codeforces 401D Roman and Numbers
    ZJOI2010 数字计数
    BZOJ 3329 Xorequ
    Codeforces 235 C
    SPOJ 8222 Substrings
    BZOJ 1396 识别子串
    (模板)归并排序
    poj3122 Pie (二分)
  • 原文地址:https://www.cnblogs.com/rsapaper/p/10155803.html
Copyright © 2011-2022 走看看