[root@hadoop01 hadoop]# systemctl  --help
systemctl [OPTIONS...] {COMMAND} ...

Query or send control commands to the systemd manager.

  -h --help           Show this help
     --version        Show package version
     --system         Connect to system manager
  -H --host=[USER@]HOST
                      Operate on remote host
  -M --machine=CONTAINER
                      Operate on local container
  -t --type=TYPE      List units of a particular type
     --state=STATE    List units with particular LOAD or SUB or ACTIVE state
  -p --property=NAME  Show only properties by this name
  -a --all            Show all loaded units/properties, including dead/empty
                      ones. To list all units installed on the system, use
                      the 'list-unit-files' command instead.
  -l --full           Don't ellipsize unit names on output
  -r --recursive      Show unit list of host and local containers
     --reverse        Show reverse dependencies with 'list-dependencies'
     --job-mode=MODE  Specify how to deal with already queued jobs, when
                      queueing a new job
     --show-types     When showing sockets, explicitly show their type
  -i --ignore-inhibitors
                      When shutting down or sleeping, ignore inhibitors
     --kill-who=WHO   Who to send signal to
  -s --signal=SIGNAL  Which signal to send
     --now            Start or stop unit in addition to enabling or disabling it
  -q --quiet          Suppress output
     --no-block       Do not wait until operation finished
     --no-wall        Don't send wall message before halt/power-off/reboot
     --no-reload      Don't reload daemon after en-/dis-abling unit files
     --no-legend      Do not print a legend (column headers and hints)
     --no-pager       Do not pipe output into a pager
     --no-ask-password
                      Do not ask for system passwords
     --global         Enable/disable unit files globally
     --runtime        Enable unit files only temporarily until next reboot
  -f --force          When enabling unit files, override existing symlinks
                      When shutting down, execute action immediately
     --preset-mode=   Apply only enable, only disable, or all presets
     --root=PATH      Enable unit files in the specified root directory
  -n --lines=INTEGER  Number of journal entries to show
  -o --output=STRING  Change journal output mode (short, short-iso,
                              short-precise, short-monotonic, verbose,
                              export, json, json-pretty, json-sse, cat)
     --plain          Print unit dependencies as a list instead of a tree

Unit Commands:
  list-units [PATTERN...]         List loaded units
  list-sockets [PATTERN...]       List loaded sockets ordered by address
  list-timers [PATTERN...]        List loaded timers ordered by next elapse
  start NAME...                   Start (activate) one or more units
  stop NAME...                    Stop (deactivate) one or more units
  reload NAME...                  Reload one or more units
  restart NAME...                 Start or restart one or more units
  try-restart NAME...             Restart one or more units if active
  reload-or-restart NAME...       Reload one or more units if possible,
                                  otherwise start or restart
  reload-or-try-restart NAME...   Reload one or more units if possible,
                                  otherwise restart if active
  isolate NAME                    Start one unit and stop all others
  kill NAME...                    Send signal to processes of a unit
  is-active PATTERN...            Check whether units are active
  is-failed PATTERN...            Check whether units are failed
  status [PATTERN...|PID...]      Show runtime status of one or more units
  show [PATTERN...|JOB...]        Show properties of one or more
                                  units/jobs or the manager
  cat PATTERN...                  Show files and drop-ins of one or more units
  set-property NAME ASSIGNMENT... Sets one or more properties of a unit
  help PATTERN...|PID...          Show manual for one or more units
  reset-failed [PATTERN...]       Reset failed state for all, one, or more
                                  units
  list-dependencies [NAME]        Recursively show units which are required
                                  or wanted by this unit or by which this
                                  unit is required or wanted

systemctl [OPTIONS...] {COMMAND} ...

Query or send control commands to the systemd manager.

  -h --help           Show this help
     --version        Show package version
systemctl [OPTIONS...] {COMMAND} ...

systemctl [OPTIONS...] {COMMAND} ...

Query or send control commands to the systemd manager.

  -h --help           Show this help
     --version        Show package version
     --system         Connect to system manager
  -H --host=[USER@]HOST
                      Operate on remote host
  -M --machine=CONTAINER
                      Operate on local container
  -t --type=TYPE      List units of a particular type
     --state=STATE    List units with particular LOAD or SUB or ACTIVE state
  -p --property=NAME  Show only properties by this name
  -a --all            Show all loaded units/properties, including dead/empty
                      ones. To list all units installed on the system, use
                      the 'list-unit-files' command instead.
  -l --full           Don't ellipsize unit names on output
  -r --recursive      Show unit list of host and local containers
     --reverse        Show reverse dependencies with 'list-dependencies'
     --job-mode=MODE  Specify how to deal with already queued jobs, when
                      queueing a new job
     --show-types     When showing sockets, explicitly show their type
  -i --ignore-inhibitors
                      When shutting down or sleeping, ignore inhibitors
     --kill-who=WHO   Who to send signal to
  -s --signal=SIGNAL  Which signal to send
     --now            Start or stop unit in addition to enabling or disabling it
  -q --quiet          Suppress output
     --no-block       Do not wait until operation finished
     --no-wall        Don't send wall message before halt/power-off/reboot
     --no-reload      Don't reload daemon after en-/dis-abling unit files
     --no-legend      Do not print a legend (column headers and hints)
     --no-pager       Do not pipe output into a pager
     --no-ask-password
                      Do not ask for system passwords
     --global         Enable/disable unit files globally
     --runtime        Enable unit files only temporarily until next reboot
  -f --force          When enabling unit files, override existing symlinks
                      When shutting down, execute action immediately
     --preset-mode=   Apply only enable, only disable, or all presets
     --root=PATH      Enable unit files in the specified root directory
  -n --lines=INTEGER  Number of journal entries to show
  -o --output=STRING  Change journal output mode (short, short-iso,
                              short-precise, short-monotonic, verbose,
                              export, json, json-pretty, json-sse, cat)
     --plain          Print unit dependencies as a list instead of a tree

Unit Commands:
  list-units [PATTERN...]         List loaded units
  list-sockets [PATTERN...]       List loaded sockets ordered by address
  list-timers [PATTERN...]        List loaded timers ordered by next elapse
  start NAME...                   Start (activate) one or more units
  stop NAME...                    Stop (deactivate) one or more units
  reload NAME...                  Reload one or more units
  restart NAME...                 Start or restart one or more units
  try-restart NAME...             Restart one or more units if active
  reload-or-restart NAME...       Reload one or more units if possible,
                                  otherwise start or restart
  reload-or-try-restart NAME...   Reload one or more units if possible,
                                  otherwise restart if active
  isolate NAME                    Start one unit and stop all others
  kill NAME...                    Send signal to processes of a unit
  is-active PATTERN...            Check whether units are active
  is-failed PATTERN...            Check whether units are failed
  status [PATTERN...|PID...]      Show runtime status of one or more units
  show [PATTERN...|JOB...]        Show properties of one or more
                                  units/jobs or the manager
  cat PATTERN...                  Show files and drop-ins of one or more units
  set-property NAME ASSIGNMENT... Sets one or more properties of a unit
  help PATTERN...|PID...          Show manual for one or more units
  reset-failed [PATTERN...]       Reset failed state for all, one, or more
                                  units
  list-dependencies [NAME]        Recursively show units which are required
                                  or wanted by this unit or by which this
                                  unit is required or wanted

Unit File Commands:
  list-unit-files [PATTERN...]    List installed unit files
  enable NAME...                  Enable one or more unit files
  disable NAME...                 Disable one or more unit files
  reenable NAME...                Reenable one or more unit files
  preset NAME...                  Enable/disable one or more unit files
                                  based on preset configuration
  preset-all                      Enable/disable all unit files based on
                                  preset configuration
  is-enabled NAME...              Check whether unit files are enabled
  mask NAME...                    Mask one or more units
  unmask NAME...                  Unmask one or more units
  link PATH...                    Link one or more units files into
                                  the search path
  add-wants TARGET NAME...        Add 'Wants' dependency for the target
                                  on specified one or more units
  add-requires TARGET NAME...     Add 'Requires' dependency for the target
                                  on specified one or more units
  edit NAME...                    Edit one or more unit files
  get-default                     Get the name of the default target
  set-default NAME                Set the default target

Machine Commands:
  list-machines [PATTERN...]      List local containers and host

Job Commands:
  list-jobs [PATTERN...]          List jobs
  cancel [JOB...]                 Cancel all, one, or more jobs

Snapshot Commands:
  snapshot [NAME]                 Create a snapshot
  delete NAME...                  Remove one or more snapshots

Environment Commands:
  show-environment                Dump environment
  set-environment NAME=VALUE...   Set one or more environment variables
  unset-environment NAME...       Unset one or more environment variables
  import-environment [NAME...]    Import all or some environment variables

Manager Lifecycle Commands:
  daemon-reload                   Reload systemd manager configuration
  daemon-reexec                   Reexecute systemd manager

System Commands:
  is-system-running               Check whether system is fully running
  default                         Enter system default mode
  rescue                          Enter system rescue mode
  emergency                       Enter system emergency mode
  halt                            Shut down and halt the system
  poweroff                        Shut down and power-off the system
  reboot [ARG]                    Shut down and reboot the system
  kexec                           Shut down and reboot the system with kexec
  exit                            Request user instance exit
  switch-root ROOT [INIT]         Change to a different root file system
  suspend                         Suspend the system
  hibernate                       Hibernate the system
  hybrid-sleep                    Hibernate and suspend the system

一、Systemd简介

Systemd是由红帽公司的一名叫做Lennart Poettering的员工开发,systemd是Linux系统中最新的初始化系统(init),它主要的设计目的是克服Sys V 固有的缺点,提高系统的启动速度。

systemd和upstart是竞争对手,ubantu上使用的是upstart的启动方式,centos7上使用systemd替换了Sys V,Systemd目录是要取代Unix时代依赖一直在使用的init系统,兼容SysV和LSB的启动脚本,

而且能够在进程启动中更有效地引导加载服务。
system:系统启动和服务器守护进程管理器,负责在系统启动或运行时,激活系统资源,服务器进程和其他进程,根据管理,字母d是守护进程(daemon)的缩写,systemd这个名字的含义就是它要守护整个系统。

 

二、Systemd新特性

  • 系统引导时实现服务并行启动

  • 按需启动守护进程

  • 自动化的服务依赖关系管理

  • 同时采用socket式与D-Bus总线式激活服务

  • 系统状态快照和恢复

  • 利用Linux的cgroups监视进程

  • 维护挂载点和自动挂载点

  • 各服务间基于依赖关系进行精密控制

三、Systemd核心概念

  • Unit
    表示不同类型的sytemd对象,通过配置文件进行标识和配置,文件中主要包含了系统服务,监听socket、保存的系统快照以及其他与init相关的信息

  • 配置文件:
    /usr/lib/systemd/system:每个服务最主要的启动脚本设置,类似于之前的/etc/initd.d
    /run/system/system:系统执行过程中所产生的服务脚本,比上面的目录优先运行
    /etc/system/system:管理员建立的执行脚本,类似于/etc/rc.d/rcN.d/Sxx类的功能,比上面目录优先运行,在三者之中,此目录优先级最高

四、Unit类型

  • systemctl -t help :查看unit类型

  • service unit:文件扩展名为.service,用于定义系统服务

  • target unit:文件扩展名为.target,用于模拟实现“运行级别”

  • device unit: .device,用于定义内核识别的设备

  • mount unit :.mount,定义文件系统挂载点

  • socket unit :.socket,用于标识进程间通信用的socket文件,也可以在系统启动时,延迟启动服务,实现按需启动

  • snapshot unit:.snapshot,关系系统快照

  • swap unit:.swap,用于表示swap设备

  • automount unit:.automount,文件系统的自动挂载点如:/misc目录

  • path unit:.path,用于定义文件系统中的一个文件或目录使用,常用于当文件系统变化时,延迟激活服务,如spool目录

  • time:.timer由systemd管理的计时器

    注:使用systemctl控制单元时,通常需要使用单元文件的全名,包括扩展名,但是有些单元可以在systemctl中使用简写方式,如果无扩展名,systemctl默认把扩展名当做.service。例如netcfg和netcfg.service是等同的挂载点会自动转化为相应的.mount单元,例如/home等价于home.mount设备会自动转化为相应的.device单元,所以/dev/sd2等价于dev-sda2.device

 

五、关键特性

  • 基于socket的激活机制:socket与服务进程分离

  • 基于D-Bus的激活机制

  • 基于device的激活机制

  • 基于path的激活机制

  • 系统快照:保存各unit的当前状态信息于持久存储设备中想后兼容sysv init脚本

六、不兼容

  • systemctl命令固定不变,不可扩展

  • 非由systemd启动的服务,systemctl无语与之通信和控制,如:使用之前sys v风格管理的进程就无法收systemd控制

七、Systemd基本工具

监视和控制systemd的主要命令是systemctl。该命令可用于查看系统状态和管理系统及服务。

  • 管理服务

  命令:systemctl  command name.service

  启动:service name start –>systemctl start name.service

  停止:service name stop –>systemctl stop name.service

  重启:service name restart–>systemctl restart name.service

  状态:service name status–>systemctl status name.service

  • 条件式重启(已启动才重启,否则不做任何操作)
    systemctl try-restart name.service

  • 重载或重启服务(先加载,然后再启动)
    systemctl reload-or-try-restart name.service

  • 禁止自动和手动启动
    systemctl mask name.service  
    执行此条命令实则创建了一个链接 ln -s '/dev/null' '/etc/systemd/system/sshd.service'

  • 取消禁止
    systemctl unmask name.service  
    删除此前创建的链接

  • 服务查看(查看某服务当前激活与否的状态)
    systemctl is-active name.service  
    如果启动会显示active,否则会显示unknown

  • 查看所有已经激活的服务
    systemctl list-units –t|–type service

[root@hadoop01 hadoop]# systemctl  --helpsystemctl [OPTIONS...] {COMMAND} ...
Query or send control commands to the systemd manager.
  -h --help           Show this help     --version        Show package version     --system         Connect to system manager  -H --host=[USER@]HOST                      Operate on remote host  -M --machine=CONTAINER                      Operate on local container  -t --type=TYPE      List units of a particular type     --state=STATE    List units with particular LOAD or SUB or ACTIVE state  -p --property=NAME  Show only properties by this name  -a --all            Show all loaded units/properties, including dead/empty                      ones. To list all units installed on the system, use                      the 'list-unit-files' command instead.  -l --full           Don't ellipsize unit names on output  -r --recursive      Show unit list of host and local containers     --reverse        Show reverse dependencies with 'list-dependencies'     --job-mode=MODE  Specify how to deal with already queued jobs, when                      queueing a new job     --show-types     When showing sockets, explicitly show their type  -i --ignore-inhibitors                      When shutting down or sleeping, ignore inhibitors     --kill-who=WHO   Who to send signal to  -s --signal=SIGNAL  Which signal to send     --now            Start or stop unit in addition to enabling or disabling it  -q --quiet          Suppress output     --no-block       Do not wait until operation finished     --no-wall        Don't send wall message before halt/power-off/reboot     --no-reload      Don't reload daemon after en-/dis-abling unit files     --no-legend      Do not print a legend (column headers and hints)     --no-pager       Do not pipe output into a pager     --no-ask-password                      Do not ask for system passwords     --global         Enable/disable unit files globally     --runtime        Enable unit files only temporarily until next reboot  -f --force          When enabling unit files, override existing symlinks                      When shutting down, execute action immediately     --preset-mode=   Apply only enable, only disable, or all presets     --root=PATH      Enable unit files in the specified root directory  -n --lines=INTEGER  Number of journal entries to show  -o --output=STRING  Change journal output mode (short, short-iso,                              short-precise, short-monotonic, verbose,                              export, json, json-pretty, json-sse, cat)     --plain          Print unit dependencies as a list instead of a tree
Unit Commands:  list-units [PATTERN...]         List loaded units  list-sockets [PATTERN...]       List loaded sockets ordered by address  list-timers [PATTERN...]        List loaded timers ordered by next elapse  start NAME...                   Start (activate) one or more units  stop NAME...                    Stop (deactivate) one or more units  reload NAME...                  Reload one or more units  restart NAME...                 Start or restart one or more units  try-restart NAME...             Restart one or more units if active  reload-or-restart NAME...       Reload one or more units if possible,                                  otherwise start or restart  reload-or-try-restart NAME...   Reload one or more units if possible,                                  otherwise restart if active  isolate NAME                    Start one unit and stop all others  kill NAME...                    Send signal to processes of a unit  is-active PATTERN...            Check whether units are active  is-failed PATTERN...            Check whether units are failed  status [PATTERN...|PID...]      Show runtime status of one or more units  show [PATTERN...|JOB...]        Show properties of one or more                                  units/jobs or the manager  cat PATTERN...                  Show files and drop-ins of one or more units  set-property NAME ASSIGNMENT... Sets one or more properties of a unit  help PATTERN...|PID...          Show manual for one or more units  reset-failed [PATTERN...]       Reset failed state for all, one, or more                                  units  list-dependencies [NAME]        Recursively show units which are required                                  or wanted by this unit or by which this                                  unit is required or wanted
systemctl [OPTIONS...] {COMMAND} ...
Query or send control commands to the systemd manager.
  -h --help           Show this help     --version        Show package versionsystemctl [OPTIONS...] {COMMAND} ...
systemctl [OPTIONS...] {COMMAND} ...
Query or send control commands to the systemd manager.
  -h --help           Show this help     --version        Show package version     --system         Connect to system manager  -H --host=[USER@]HOST                      Operate on remote host  -M --machine=CONTAINER                      Operate on local container  -t --type=TYPE      List units of a particular type     --state=STATE    List units with particular LOAD or SUB or ACTIVE state  -p --property=NAME  Show only properties by this name  -a --all            Show all loaded units/properties, including dead/empty                      ones. To list all units installed on the system, use                      the 'list-unit-files' command instead.  -l --full           Don't ellipsize unit names on output  -r --recursive      Show unit list of host and local containers     --reverse        Show reverse dependencies with 'list-dependencies'     --job-mode=MODE  Specify how to deal with already queued jobs, when                      queueing a new job     --show-types     When showing sockets, explicitly show their type  -i --ignore-inhibitors                      When shutting down or sleeping, ignore inhibitors     --kill-who=WHO   Who to send signal to  -s --signal=SIGNAL  Which signal to send     --now            Start or stop unit in addition to enabling or disabling it  -q --quiet          Suppress output     --no-block       Do not wait until operation finished     --no-wall        Don't send wall message before halt/power-off/reboot     --no-reload      Don't reload daemon after en-/dis-abling unit files     --no-legend      Do not print a legend (column headers and hints)     --no-pager       Do not pipe output into a pager     --no-ask-password                      Do not ask for system passwords     --global         Enable/disable unit files globally     --runtime        Enable unit files only temporarily until next reboot  -f --force          When enabling unit files, override existing symlinks                      When shutting down, execute action immediately     --preset-mode=   Apply only enable, only disable, or all presets     --root=PATH      Enable unit files in the specified root directory  -n --lines=INTEGER  Number of journal entries to show  -o --output=STRING  Change journal output mode (short, short-iso,                              short-precise, short-monotonic, verbose,                              export, json, json-pretty, json-sse, cat)     --plain          Print unit dependencies as a list instead of a tree
Unit Commands:  list-units [PATTERN...]         List loaded units  list-sockets [PATTERN...]       List loaded sockets ordered by address  list-timers [PATTERN...]        List loaded timers ordered by next elapse  start NAME...                   Start (activate) one or more units  stop NAME...                    Stop (deactivate) one or more units  reload NAME...                  Reload one or more units  restart NAME...                 Start or restart one or more units  try-restart NAME...             Restart one or more units if active  reload-or-restart NAME...       Reload one or more units if possible,                                  otherwise start or restart  reload-or-try-restart NAME...   Reload one or more units if possible,                                  otherwise restart if active  isolate NAME                    Start one unit and stop all others  kill NAME...                    Send signal to processes of a unit  is-active PATTERN...            Check whether units are active  is-failed PATTERN...            Check whether units are failed  status [PATTERN...|PID...]      Show runtime status of one or more units  show [PATTERN...|JOB...]        Show properties of one or more                                  units/jobs or the manager  cat PATTERN...                  Show files and drop-ins of one or more units  set-property NAME ASSIGNMENT... Sets one or more properties of a unit  help PATTERN...|PID...          Show manual for one or more units  reset-failed [PATTERN...]       Reset failed state for all, one, or more                                  units  list-dependencies [NAME]        Recursively show units which are required                                  or wanted by this unit or by which this                                  unit is required or wanted
Unit File Commands:  list-unit-files [PATTERN...]    List installed unit files  enable NAME...                  Enable one or more unit files  disable NAME...                 Disable one or more unit files  reenable NAME...                Reenable one or more unit files  preset NAME...                  Enable/disable one or more unit files                                  based on preset configuration  preset-all                      Enable/disable all unit files based on                                  preset configuration  is-enabled NAME...              Check whether unit files are enabled  mask NAME...                    Mask one or more units  unmask NAME...                  Unmask one or more units  link PATH...                    Link one or more units files into                                  the search path  add-wants TARGET NAME...        Add 'Wants' dependency for the target                                  on specified one or more units  add-requires TARGET NAME...     Add 'Requires' dependency for the target                                  on specified one or more units  edit NAME...                    Edit one or more unit files  get-default                     Get the name of the default target  set-default NAME                Set the default target
Machine Commands:  list-machines [PATTERN...]      List local containers and host
Job Commands:  list-jobs [PATTERN...]          List jobs  cancel [JOB...]                 Cancel all, one, or more jobs
Snapshot Commands:  snapshot [NAME]                 Create a snapshot  delete NAME...                  Remove one or more snapshots
Environment Commands:  show-environment                Dump environment  set-environment NAME=VALUE...   Set one or more environment variables  unset-environment NAME...       Unset one or more environment variables  import-environment [NAME...]    Import all or some environment variables
Manager Lifecycle Commands:  daemon-reload                   Reload systemd manager configuration  daemon-reexec                   Reexecute systemd manager
System Commands:  is-system-running               Check whether system is fully running  default                         Enter system default mode  rescue                          Enter system rescue mode  emergency                       Enter system emergency mode  halt                            Shut down and halt the system  poweroff                        Shut down and power-off the system  reboot [ARG]                    Shut down and reboot the system  kexec                           Shut down and reboot the system with kexec  exit                            Request user instance exit  switch-root ROOT [INIT]         Change to a different root file system  suspend                         Suspend the system  hibernate                       Hibernate the system  hybrid-sleep                    Hibernate and suspend the system

01-26 21:16