[COMMAND]

Systemd Daemons:
  systemd networkd journald logind "user session"
Systemd units:
  service[系统服务]
  mount[文件系统挂载点]
  automount[自动挂载点]
  target[多个unit组成的一个组]
  timer[定时任务]
  device[硬件设备]
  socket[进程间通信的socket]
  swap[swap文件]
  path[文件或路径]
  snapshot[systemd快照,可切换回某个运行状态]
  slice[进程组]
  scope[不是由systemd启动的外部进程]
Systemd Utilities:
  systemctl journalctl loginctl hostnamectl localectl timedatectl etc.
systemctl rescue  
  无须重启直接切换至救援模式
systemctl get-default
  查看启动时的默认target
systemctl isolate/set-default *.target
  isolate切换target(将关闭前一个target中所有不属于后一个target的进程)
  set-default用于设置新的默认target,实质是将目标target软链接至/etc/systemd/system/default.target
systemd-analyze [critical-chain [*.unit]]
  查看系统启动耗时,可显示单个服务信息
loginctl user-status USERNAME
  显示指定用户的所有进程信息
loginctl kill-user USERNAME
  终止指定用户的所有进程

systemctl [list-units] --all/--failed --state=inactive --type=service
  --all显示所有状态的units
  --failed仅显示启动失败的
  --statue=inactive仅显示没有配置文件工或启动失败的
  --type指定要显示的unit类别
systemctl [-H root@10.1.1.1] status [*.unit]
  不加参数,则显示当前系统状态
  指定远程主机、unit(如某个service),则显示指定unit的状态
systemctl show [-p CPUShares] [*.unit]
  显示系统或指定unit的所有底层参数,-p可用于指定仅显示特定参数
systemctl [--runtime] set-property *.unit CPUShares=
  设置某个unit的指定属性,--runtime表示临时生效,直到下一次系统重启
systemctl is-active/is-failed/is-enabled *.unit
  判断某个unit处于何种状态:正常运行、启动失败、随机启动,常用于脚本条件判断

systemctl kill [--signal=SIGKILL/HUP etc.] [--kill-who=main/control/all] *.unit
  不同于stop方式,kill是暴力终止一个服务的所有子进程,--kill-who选项可选择只终止主进程、控制进程或所有进程

systemctl daemon-reload
  使所有更改过的配置文件生效

systemctl list-dependencies [--all] *.unit
  列出一个unit的所有依赖(子units),默认不会展开其中的target,--all可展开target中的子项
journalctl:显示所有日志,默认less分页显示
journalctl -b -1:查看上一次启动的日志,-0代表最近一次
journalctl -k:只查看内核日志
journalctl --since="2016-10-11 11:10:54" --until="2020-01-29 00:00:36":按精确的起始时间查询日志
journalctl -f:类似于tail -f的功能,动态监控日志
journalctl -n 100:查看最新的100条日志
journalctl -u xxx.unit -u yyy.unit:查看指定unit的日志,可合并指定多个
journalctl _PID:查看指定pid进程的日志
journalctl --disk-usage:显示日志占用的磁盘空间
journalctl -o:指定日志显示的格式
journalctl -p:指定日志显示的级别
「共有8个级别」:"emerg" (0), "alert" (1), "crit" (2), "err" (3), "warning" (4), "notice" (5), "info" (6),"debug" (7)
/etc/systemd/journald.conf中可配置日志保存期限、日志最大容量等选项
systemctl list-unit-files [--type=service]
  列出所有unit配置文件,--type用于指定unit类型;显示结果有四种状态:enabled[已建立启动链接 #但不一定当前正在运行] disabled[没有建立启动链接] static[此unit无install部分,不能独立启动,只能作为其它unit的依赖]、masked[禁止启动]
systemctl cat *.unit
  查看某个unit的配置文件内容

[CONFIG_FILES]

Systemd默从/etc/systemd/system、/usr/lib/systemd/system中读取unit配置文件,前者优先级更高;更底层的配置文件在/etc/systemd、/usr/lib/两个目录下,如/etc/systemd/journald.conf存放系统日志配置文件
  /etc/systemd/system/multi-user.target.wants目录中的unit是为开机启动者
  可手动链接unit至上述wants目录下,或使用“systemctl enable/disable *.unit”操作,或省略后缀.unit,systemd默认为.unit
  将某个unit的配置文件链接或取消链接至/dev/null,即可设置禁止或允许其启动,等效于“systemctl mask/unmask *.unit”
配置文件通常分为三部分:[Unit]、[Install]、[Service],其中Service是service类unit特有
[Unit]
#通常是配置文件的第一个区块,用来定义 Unit 的元数据,以及配置与其他 Unit 的关系

Description:简短描述
Documentation:文档地址
Requires:当前 Unit 依赖的其他 Unit,如果它们没有运行,当前 Unit 会启动失败
Wants:与当前 Unit 配合的其他 Unit,如果它们没有运行,当前 Unit 不会启动失败
BindsTo:与Requires类似,它指定的 Unit 如果退出,会导致当前 Unit 停止运行
Before:如果该字段指定的 Unit 也要启动,那么必须在当前 Unit 之后启动
After:如果该字段指定的 Unit 也要启动,那么必须在当前 Unit 之前启动 #注意:after、before只涉及启动顺序,并不一定存在依赖关系
Conflicts:这里指定的 Unit 不能与当前 Unit 同时运行
Condition...:当前 Unit 运行必须满足的条件,否则不会运行
Assert...:当前 Unit 运行必须满足的条件,否则会报启动失败
[Service]
#只有 Service 类型的 Unit 才有这个区块

Type:定义启动时的进程行为。它有以下几种值
Type=simple:默认值,执行ExecStart指定的命令,启动主进程
Type=forking:以 fork 方式从父进程创建子进程,创建后父进程会立即退出
Type=oneshot:每次系统启动只运行一次,执行结束后,再继续往下执行其它进程
Type=dbus:当前服务通过D-Bus启动
Type=notify:当前服务启动完毕,会通知Systemd,再继续往下执行
Type=idle:若有其他任务执行完毕,当前服务才会运行

ExecStart:启动当前服务的命令
ExecStartPre:启动当前服务之前执行的命令
ExecStartPost:启动当前服务之后执行的命令
ExecReload:重启当前服务时执行的命令
ExecStop:停止当前服务时执行的命令
ExecStopPost:停止当其服务之后执行的命令
RestartSec:自动重启当前服务间隔的秒数
Restart:定义何种情况 Systemd 会自动重启当前服务,可能的值包括no(默认值)、always、on-success、on-failure、on-abnormal、on-abort、on-watchdog
TimeoutSec:定义 Systemd 停止当前服务之前等待的秒数
Environment:指定环境变量
EnvironmentFile:指定当前服务的环境参数文件,其内部的“key=value”键值对,可以用$key的形式,在当前配置文件中引用
连词号(-),表示"抑制错误",即发生错误的时候,不影响其他命令的执行
例如:
EnvironmentFile=-/etc/xxd,就表示即使/etc/xxd文件不存在,也不会抛出错误
[Install]
#通常是配置文件的最后一个区块,用来定义如何启动,以及是否开机启动

WantedBy:它的值是一个或多个 Target,当前 Unit 激活时(enable)符号链接会放入/etc/systemd/system目录下面以 Target 名 + .wants后缀构成的子目录中
RequiredBy:它的值是一个或多个 Target,当前 Unit 激活时,符号链接会放入/etc/systemd/system目录下面以 Target 名 + .required后缀构成的子目录中
Alias:当前 Unit 可用于启动的别名
Also:当前 Unit 激活(enable)时,会被同时激活的其他 Unit
示例:
root # systemctl cat sshd.service
# /usr/lib64/systemd/system/sshd.service
[Unit]
Description=OpenSSH server daemon
After=syslog.target network.target auditd.service [Service]
ExecStartPre=/usr/bin/ssh-keygen -A
ExecStart=/usr/sbin/sshd -D -e
ExecReload=/bin/kill -HUP $MAINPID [Install]
WantedBy=multi-user.target # /run/systemd/system/sshd.service.d/-CPUShares.conf
[Service]
CPUShares=


[Timer]

[Unit]
Description=Run myscript weekly [Timer]
# 按日历规划执行,如每天的11点11分11秒执行Unit=项指定的service
OnCalendar=*-*-* 11:11:11
# 首次运行要在启动后10分钟后
OnBootSec=10min
# 每次运行间隔时间
OnUnitActiveSec=1w
# 定义时间精度,默认1min,可用时间单位如h、m、s、us(毫秒);如下定义为1h代表任务会在指定的时间后1小时内执行
AccuracySec=1h
# 指定要执行的任务,若任务名称和timer名称一致,此项可忽略
Unit=myscript.service [Install]
WantedBy=multi-user.target
注意:对应的service无需enable,只须enable关联的timer即可
Systemd开关机流程:
https://www.freedesktop.org/software/systemd/man/bootup.html#System%20Manager%20Bootup

专题:『systemd』的更多相关文章

  1. 『MXNet』专题汇总

    MXNet文档 MXNet官方教程 持久化模型 框架介绍 『MXNet』第一弹_基础架构及API 『MXNet』第二弹_Gluon构建模型 『MXNet』第三弹_Gluon模型参数 『MXNet』第四 ...

  2. 『TensorFlow』专题汇总

    TensorFlow:官方文档 TensorFlow:项目地址 本篇列出文章对于全零新手不太合适,可以尝试TensorFlow入门系列博客,搭配其他资料进行学习. Keras使用tf.Session训 ...

  3. 『AngularJS』$location 服务

    项目中关于 $location的用法 简介 $location服务解析在浏览器地址栏中的URL(基于window.location)并且让URL在你的应用中可用.改变在地址栏中的URL会作用到$loc ...

  4. [原创] 【2014.12.02更新网盘链接】基于EasySysprep4.1的 Windows 7 x86/x64 『视频』封装

    [原创] [2014.12.02更新网盘链接]基于EasySysprep4.1的 Windows 7 x86/x64 『视频』封装 joinlidong 发表于 2014-11-29 14:25:50 ...

  5. JS 中通过对象关联实现『继承』

    JS 中继承其实是种委托,而不是传统面向对象中的复制父类到子类,只是通过原型链将要做的事委托给父类. 下面介绍通过对象关联来实现『继承』的方法: Foo = { // 需要提供一个 init 方法来初 ...

  6. 『摄影欣赏』16幅 Romantic 风格照片欣赏【组图】

    今天,我们将继续分享人类情感的系列文章.爱是人类最重要的感觉,也可能是各种形式的艺术(电影,音乐,书,画等)最常表达的主题 .这里有40个最美丽的爱的照片,将激励和给你一个全新的视觉角度为这种情绪.我 ...

  7. 『开源』Slithice 2013 服务器集群 设计和源码

    相关介绍文章: <『设计』Slithice 分布式架构设计-支持一体式开发,分布式发布> <『集群』001 Slithice 服务器集群 概述> <『集群』002 Sli ...

  8. 『片段』OracleHelper (支持 多条SQL语句)

    C# 调用 Oracle 是如此尴尬 >System.Data.OracleClient.dll —— .Net 自带的 已经 过时作废. >要链接 Oracle 服务器,必须在 本机安装 ...

  9. 『设计』Laura.Compute 设计思路

    前言: 前一篇文章 <『开源』也顺手写一个 科学计算器:重磅开源> ,继 Laura.Compute 算法开源之后,有 博客园 园友 希望公开一下 Laura.Compute算法 的 设计 ...

随机推荐

  1. Android 测试点归纳总结

    前言 除了测试平台工具,业务测试的总结和思考同样重要,这里总结了一些Android测试知识点,可以辅助业务测试快速形成测试用例和检查点,当作抛砖引玉分享给大家.如有思考不全面的地方,欢迎大家指出来. ...

  2. 65、salesforce的数据分页

    <apex:page controller="PagingController"> <apex:form > <apex:pageBlock titl ...

  3. Callable创建线程

    (1)Callable接口更像是Runnable接口的增强版,相比较Runable接口,Call()方法新增捕获和抛出异常的功能;Call()方法可以返回值<br> (2)Future接口 ...

  4. 15. Django连接Mysql数据库

    安装PyMySQL,打开cmd, pip install PyMySQL 在.../blog/init.py 目录下添加: import pymysql pymysql.install_as_MySQ ...

  5. UVA

    A network is composed of N computers connected by N - 1 communication links such that any two comput ...

  6. 10个艰难的Java面试题与答案

    10个最难回答的Java面试题 这是我收集的10个较难回答的 Java 面试题.这些问题主要来自 Java 核心部分 ,不涉及 Java EE 相关问题.这些问题都是容易在各种 Java 面试中被问到 ...

  7. pytest框架结构运行规则及命名方式

    Pytest框架结构 Import pytest 类似的setup,teardown同样更灵活,还有个session() 模块级 (setup_module/teardown_module) 不在类中 ...

  8. Javascript基础一(介绍)

    Javascript的发展历史: JavaScript在设计之初只是为了做表单验证.但是现如今,JavaScript已经成为了一门功能全面的编程语言,已经是WEB中不可缺少的一部分,如今的JavaSc ...

  9. check all tables rows

    select TABLE_NAME,NUM_ROWS from all_tables where OWNER='xx' order by NUM_ROWS desc;

  10. 使用Flask-Mail发送邮件

    简介 在WEB开发时,我们常常会使用到发送邮件的功能,注册时或者更换密码时,需要验证邮箱,在flask的扩展中有Flask-mai来帮助完成这一功能 配置 flask-mail发送邮件需要你提供你的邮 ...