centos7的systemd命令对比

http://www.linuxidc.com/Linux/2014-09/106490p2.htm
http://www.linuxidc.com/Linux/2016-09/135464p2.htm
http://www.linuxidc.com/Linux/2014-09/106455.htm

http://www.linuxidc.com/Linux/2015-04/115937.htm

systemd的核心概念:unit
unit由其相关的配置文件进行标识、识别和配置,也就是说一个unit到底定义与否,由其配置文件进行标识。这类配置文件中主要包含了几个类别:系统服务,监听的socket、保存的快照以及其他与init相关的信息,这些配置文件中主要保存在:
/usr/lib/systemd/system/    每个服务最主要的启动脚本设置,类似于之前的/etc/init.d/  
/run/systemd/system/    系统执行过程中所产生的服务脚本,比上面目录优先运行
/etc/systemd/system/    管理员建立的执行脚本,类似于/etc/rc.d/rcN.d/Sxx类的功能,比上面目录优先运行

/etc/rc.d/rc3.d/ |grep mysql
lrwxrwxrwx root root Dec /etc/rc.d/rc3.d/K36mysqld -> /etc/init.d/mysqld

关系

/etc/systemd/system/K36mysqld -> /usr/lib/systemd/system/mysqld

unit的常见类型:
service unit:这类unit的文件扩展名为.service,主要用于定义系统服务(其扮演了在centos6上/etc/init.d/目录下的服务脚本的作用)
target unit:这类unit的文件扩展名为.target,主要用于模拟实现"运行级别"的概念
device unit:这类unit文件扩展名为.device,用于定义内核识别的设备,然后udev利用systemd识别的硬件,完成创建设备文件名
mount unit:这类unit文件扩展名为.mount,主要用于定义文件系统挂载点
socket unit:这类unit文件扩展名为.socket,用于标识进程间通信用到的socket文件
snapshot unit:这类unit文件扩展名为.snapshot,主要用于实现管理系统快照
swap unit:这类unit文件扩展名为.swap,主要用于标识管理swap设备
automount unit:这类unit文件扩展名为.automount,主要用于文件系统自动挂载设备
path unit:这类unit文件扩展名为.path,主要用于定义文件系统中的文件或目录

systemd对target类unit的管理(类似于运行级别的管理)
unit配置文件:.target
运行级别的对应关系:
0 --> runlevel0.target,poweroff.target
1 --> runlevel1.target,rescue.target
2 --> runlevel2.target,multi-user.target
3 --> runlevel3.target,multi-user.target
4 --> runlevel4.target,multi-user.target
5 --> runlevel5.target,graphical.target
6 --> runlevel6.target,reboot.target

systemd如何管理系统上的各个服务
systemd对服务的管理(service类unit的管理)
主要是依靠service类型的unit文件进行管控的完成的
systemctl命令:
语法:systemctl [OPTIONS…] COMMAND [SERVICE_NAME.service…]
centos7里面状态信息里显示的loaded 表示是否加入到systemctl可管理的列表中(类似centos6中chkconfig –add的概念,如果是loaded,表示已经添加到列表中,后面disabled表示没有开机自动启动)

查看所有的服务,也就是所有已经装载load的服务,包含已激活和未激活的:
chkconfig –-list ==> systemctl list-units -t service -a
显示出来的信息的含义:
loaded:Unit配置文件已处理
active(running):一次或多次持续处理的运行
active(exited):成功完成一次性的配置
active(waiting):运行中,等待一个事件
inactive:不在运行
enabled:开机启动
disabled:开机不启动
static:开机不启动,但可被另一个启用的服务激活

centos7-》centos6
服务启动

systemctl start servicename.service  -> service  servicename start

服务停止

systemctl stop servicename.service  -> service  servicename stop

服务重启

systemctl restart servicename.service  -> service  servicename restart

服务状态

systemctl status servicename.service  -> service  servicename status

服务重载

systemctl reload-or-restart servicename.service  -> /bin/kill -HUP  servicename

服务详细信息,只能看到enabled的服务,不完全等价于 chkconfig  --list

systemctl list-units -t service  -a  |grep servicename  -> chkconfig --list |grep servicename

设置开机启动/禁用

systemctl enable/disable servicename.service  -> chkconfig  servicename on/off

查看服务依赖关系

systemctl list-dependencies servicename.service -> 无

查看禁用的服务

systemctl is-enabled  servicename.service

添加服务,不完全等价于chkconfig --add

systemctl daemon-reload    -> chkconfig --add  servicename

运行级别切换

systemctl isolate name.target -> init 运行级别对应数字

查看当前运行级别

systemctl list-units -t target  -> runlevel

查看所有loaded的target

systemctl list-units -t target  -a -> 无

查看默认运行级别

systemctl get-default  -> 查看/etc/inittab文件中的定义

设定默认运行级别

systemctl set-default  name.target -> 修改/etc/inittab文件中的定义

系统引导时间分析

systemd-analyze blame


centos7新增的紧急模式和救援模式

centos7启动项变化
系统启动时,通过修改grub选项中的相关内核参数,实现启动时进入不同的模式(紧急救援模式、emergency模式)
在启动时,启动菜单项按e键,然后在linux16行后添加:(设置内核参数,只影响当次启动)
按ctrl-x启动

systemd版本
cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)

systemctl --version
systemd 219
+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN


f

f


service unit file文件的组成

如利用systemctl set-default runlevel5.target 修改默认运行级别后,原来/etc/systemd/system/default.target会重新链接到/usr/lib/systemd/system/graphical.target

service unit file文件的组成:
文件通常由三部分组成:
[Unit]:定义与Unit类型无关的通用选项,用于提供unit的描述信息,unit行为及依赖关系等;
[Service]:与特定类型相关的专用选项,此处为service类型
[Install]:定义由“systemctl enable”以及“systemctl disable”命令在实现服务启用或仅用时用到的一些选项;

unit段的常用选项:
Description:描述信息,意义性描述
After:定义unit启动次序,表示当前unit应该晚于哪些unit启动,其功能与Before相反
Requies:依赖到的其他units;强依赖,被依赖的unit无法激活时,当前unit也无法激活
Wants:指明依赖到的其他units;弱依赖,被依赖的unit无法激活时,当前unit可以被激活
Conflicts:定义units间的冲突关系

service段的常用选项:
Type:用于定义ExecStart及相关参数的功能的unit进程启动类型;
类型:
simple:默认值,表示由ExecStart启动的进程为主进程
forking:表示由ExecStart启动的进程生成的其中一个子进程将成为主进程,启动完成后,父进程会退出
oneshot:功能类似于simple,但是在启动后续的units进程之前,主进程将会退出
notify:类似于simple,表示后续的units,仅在通过sdnotify函数发送通知以后,才能运行该命令

idle:
常见的是notify、forking、simple
EnvironmentFile :指明环境配置文件,为真正ExecStart执行之前提供环境配置或变量定义等文件
ExecStart:指明启动unit要运行的命令或脚本;ExecStartPre、ExecStartPost表示启动前或启动后要执行的命令或脚本
ExecStop:指明停止unit要运行的命令或脚本
Restart:表示进程意外终止了,会自动重启

install段的常用选项:
Alias:当前unit的别名
RequiredBy:被那些units所依赖,强依赖
WantedBy:被那些units所依赖,弱依赖

cat /usr/lib/systemd/system/sshd.service
[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd() man:sshd_config()
After=network.target sshd-keygen.service
Wants=sshd-keygen.service [Service]
Type=forking
PIDFile=/var/run/sshd.pid
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s [Install]
WantedBy=multi-user.target

添加服务步骤

xx.service 模版
vim /usr/lib/systemd/system/xx.service   #改

[Unit]
Description=xx Server #改
After=network.target
After=syslog.target [Install]
WantedBy=multi-user.target [Service]
Type=forking
#PIDFile=/var/run/mysqld.pid
ExecStart=/usr/local/mysql/support-files/mysql.server start #改 /etc/init.d/nginx
ExecStop=/usr/local/mysql/support-files/mysql.server stop #改
PrivateTmp=true

第一步:

vim /usr/lib/systemd/system/mysqld.service

[Unit]
Description=MySQL Server
After=network.target
After=syslog.target [Install]
WantedBy=multi-user.target [Service]
Type=forking
#PIDFile=/var/run/mysqld.pid
ExecStart=/usr/local/mysql/support-files/mysql.server start
ExecStop=/usr/local/mysql/support-files/mysql.server stop
PrivateTmp=true

第二步注册

systemctl daemon-reload

第三步查看是否注册成功

systemctl is-enabled  mysqld.service

第四步设置开机启动

systemctl enable mysqld.service

第五步启动服务

systemctl start mysqld.service

------------------------------------------------------------

ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown

或者自己写一个脚本启动停止redis也可以
ExecStart=/tmp/redisinstall.sh  start
ExecStop=/tmp/redisinstall.sh  stop


记录 systemd 的日志
journald是systemd独有的日志系统,替换了sysV init中的syslog守护进程。命令journalctl用来读取日志。

查看引导信息
journalctl -b命令来查看所有引导日志。
journalctl -b

即时显示引导日志
实时显示系统日志(类似tail -f)。
journalctl -f

查看特定服务的日志
运用journalctl来查看你只想看到的服务或可执行程序的日志。
journalctl /usr/sbin/dnsmasq

f

centos7的systemd命令对比的更多相关文章

  1. centos7上systemd详解

    centos7上systemd详解  发表于 2016-06-07 |  分类于 linux CentOS 7继承了RHEL 7的新的特性,例如强大的systemd, 而systemd的使用也使得以往 ...

  2. centos7的systemd

    系统启动流程 POST --> Boot Sequence --> Bootloader --> kernel+initramfs(initrd) --> rootfs --& ...

  3. mongodb与mysql命令对比

    mongodb与mysql命令对比 传统的关系数据库一般由数据库(database).表(table).记录(record)三个层次概念组成,MongoDB是由数据库(database).集合(col ...

  4. Windows与Linux的命令行命令对比

    Windows与Linux的命令行命令对比 * Windows不区分大小写,Linux区分大小写的. sn DOS Command UNIX Equivalent Effect 影响 1 ASSIGN ...

  5. npm与yarn命令对比

    Yarn是由Facebook.Google.Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具 Yarn 是为了弥补 npm 的一些缺陷而出现的(比如,npm install时候会 ...

  6. CentOS7使用yum命令安装Java1.8

    CentOS7使用yum命令安装Java1.8 首先更新已安装的包:#yum update查看系统当前的java版本:#java -version==================== CentOS ...

  7. linux cron计划任务、chkconfig 命令、systemd命令、unit 相关、target 相关

    1.设置说明位置 : cat /etc/crontab # Example of job definition:# .---------------- minute (0 - 59)# | .---- ...

  8. mongodb与mysql的命令对比

    mongodb与mysql命令对比 传统的关系数据库一般由数据库(database).表(table).记录(record)三个层次概念组成,MongoDB是由数据库(database).集合(col ...

  9. 【CentOS7】常用命令

    [CentOS7]常用命令 转载:https://www.cnblogs.com/yangchongxing/p/10646640.html 目录 ========================== ...

随机推荐

  1. selenium之 webdriver与三大浏览器版本映射表(更新至v2.29)

    1.chrome浏览器 chromedriver版本 支持的Chrome版本 v2.29 v56-58 v2.28 v55-57 v2.27 v54-56 v2.26 v53-55 v2.25 v53 ...

  2. 爬虫高性能 asyncio库 twisted库 tornado库

    一 背景知识 爬虫的本质就是一个socket客户端与服务端的通信过程,如果我们有多个url待爬取,只用一个线程且采用串行的方式执行,那只能等待爬取一个结束后才能继续下一个,效率会非常低. 需要强调的是 ...

  3. javac编译后运行提示找不到或无法加载主类

    第一种常见错误: package demo_01; public class hello { public static void main(String[] args) { System.out.p ...

  4. PHP实现微信开发中提现功能(企业付款到用户零钱)

    一.实现该功能目的 这几天在小程序里要实现用户从系统中提现到零钱的功能,查了一下文档可以使用 企业付款到用户零钱 来实现: 官方文档:https://pay.weixin.qq.com/wiki/do ...

  5. Java Spring Boot VS .NetCore (十) Java Interceptor vs .NetCore Interceptor

    Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...

  6. Codeforces 1009G Allowed Letters 最大流转最小割 sosdp

    Allowed Letters 最直观的想法是贪心取, 然后网络流取check可不可行, 然后T了. 想到最大流可以等于最小割, 那么我们状压枚举字符代表的6个点连向汇点是否断掉, 然后再枚举64个本 ...

  7. Imcash:坐下来认真和你们说说话

    筹备已久的Imcash终于快上线了,上线后会用作品向你们证明你们的选择是正确的.在准备的半年期间里,团队从调研.设计.市场.人员.技术方面都尽量按照最高要求来配置.从一站式服务平台到现在的资产管家,每 ...

  8. Git使用总结之修改了用户名之后git无法使用

    错误提示: unable to access 'http://git.ruitukeji.com:3000/RuiTu/heshanghui-andriod.git/': The requested ...

  9. Taro使用mobx做国际化小程序

    效果 目前项目使用的是Taro做小程序开发框架,Taro可以集成mbox,当然一些正常的框架也可以集成mbox,只不过需要自己集成,或者用redux也可以用相同的思想实现. 思路 利用mbox act ...

  10. XVII Open Cup named after E.V. Pankratiev. GP of Tatarstan

    A. Arithmetic Derivative 形如$p^p(p是质数)$的数的比值为$1$,用$k$个这种数相乘得到的数的比值为$k$,爆搜即可. #include<cstdio> # ...