[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. Eclipse Missing artifact jdk.tools:jdk.tools:jar:1.6

    Missing artifact jdk.tools:jdk.tools:jar:1.6 问题出在Eclipse Maven的支持上,在Eclipse下,java.home变量设置为用于启动Eclip ...

  2. [转]关于Unity中文件读取 - 大世界

     原文  http://www.cnblogs.com/ThreeThousandBigWorld/p/3199245.html 存储: 在程序发布后文件的存放有两种,第一种是打包到Uniyt的资源包 ...

  3. 2.Jmeter 快速入门教程(二)--创建简单web测试 打印 E-mail

    今天我们就来实际用Jmeter创建一个测试场景,并进行性能测试. 注:由于本人使用中文版本,使用英文版本的请注意具体的菜单及参数名称. 1. 添加线程组(相当于lr里的scenario 设置) 打开j ...

  4. layer通过父页面调用子页面的方法及属性

    引言 在使用layer.js的过程中,需要通过layer.open()以iframe的形式打开特定的页面,同时需要用layer的按钮对打开的页面进行提交及重置操作,但是苦于不知如何在父页面调用子页面的 ...

  5. C语言函数指针用法

    #include <stdio.h> #include <string.h> static void sayHello(); static void salute(); voi ...

  6. mysql 针对table的查看命令行

    1  desc t_help; 2 show create table t_help; 3  show table status like 't_help';

  7. 41-python基础-python3-字符串-转义字符

    转义字符包含一个倒斜杠(\),紧跟着是想要添加到字符串中的字符.(尽管它包含两个字符,但大家公认它是一个转义字符.) 实例1: Python 知道,因为 Bob\'s 中的单引号有一个倒斜杠,所以它不 ...

  8. java 文件读取写入

    public class ReadFromFile { /** * 以字节为单位读取文件,常用于读二进制文件,如图片.声音.影像等文件. */ public static void readFileB ...

  9. 手机作为蓝牙音频源连接到Linux时,如何通过音量键调节传入的音量大小

    背景一: 我们知道,把手机作为音频源通过蓝牙连接到电脑,就可以把手机的声音转移到电脑上. 背景二: 我喜欢带着耳机用我的Linux本刷youtube,也喜欢用我的iPhone听音乐.为了同时做这两件事 ...

  10. 小白的第一篇python博客

    学习python课程三天,先了解了计算机的历史及各种发展史,python的历史及部分语法,python主要学习内容有"hello world",int常量.str字符串,print ...