systemctl详解

[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

1、Systemd简介

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

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

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

 

2、Systemd新特性

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

  • 按需启动守护进程ssh

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

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

  • 系统状态快照和恢复工具

  • 利用Linux的cgroups监视进程oop

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

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

 

3、Systemd核心概念

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

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

 

4、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

 

5、关键特性

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

  • 基于D-Bus的激活机制

  • 基于device的激活机制

  • 基于path的激活机制

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

 

6、不兼容

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

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

 

7、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 treeUnit 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 wantedsystemctl [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 treeUnit 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 wantedUnit 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 targetMachine Commands:  list-machines [PATTERN...]      List local containers and hostJob Commands:  list-jobs [PATTERN...]          List jobs  cancel [JOB...]                 Cancel all, one, or more jobsSnapshot Commands:  snapshot [NAME]                 Create a snapshot  delete NAME...                  Remove one or more snapshotsEnvironment 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 variablesManager Lifecycle Commands:  daemon-reload                   Reload systemd manager configuration  daemon-reexec                   Reexecute systemd managerSystem 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

相关文章
相关标签/搜索