9月5日 centos7中管理systemd 1

1、systemd

启动流程:POST --> Boot Sequence --> Bootloader --> kernel + initramfs(initrd) --> rootfs--> /sbin/init
init:CentOS 5: SysVinit
CentOS 6: Upstart
CentOS 7: Systemd
Systemd:系统启动和服务器守护进程管理器,负责在系统启动或运行时,激活系统资源,服务器进程和其它进程
Systemd新特性:
系统引导时实现服务并行启动
按需启动守护进程
自动化的服务依赖关系管理
同时采用socket式与D-Bus总线式激活服务
系统状态快照
核心概念:unit
unit表示不同类型的systemd对象,通过配置文件进行标识和配置;文件中主要包含了系统服务、监听socket、保存的系统快照以及其它与init相关的信息
配置文件:
/usr/lib/systemd/system:每个服务最主要的启动脚本设置,类似于之前的/etc/init.d/
/run/systemd/system:系统执行过程中所产生的服务脚本,比上面目录优先运行
/etc/systemd/system:管理员建立的执行脚本,类似于/etc/rc.d/rcN.d/Sxx类的功能,比上面目录优先运行

2、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,文件系统的自动挂载点
Path unit: .path,用于定义文件系统中的一个文件或目录使用,常用于当文件系统变化时,延迟激活服务,如:spool 目录

3、管理服务

管理系统服务:
CentOS 7: service unit
注意:能兼容早期的服务脚本
命令格式:systemctl COMMAND name.service

启动:service name start ==> systemctlstart name.service
停止:service name stop ==> systemctlstop name.service
重启:service name restart ==> systemctlrestart name.service
状态:service name status ==> systemctlstatus name.service
条件式重启:已启动才重启,否则不做操作
service name condrestart==> systemctl try-restart name.service
重载或重启服务:先加载,再启动
systemctl reload-or-restart name.service
重载或条件式重启服务:
systemctl reload-or-try-restart name.service
禁止自动和手动启动:
systemctl mask name.service
取消禁止:
systemctl unmask name.service

总结:systemctl比service管理服务的优势是可以一次性启动或者关闭、查看多个服务。

3、服务查看

查看某服务当前激活与否的状态:
systemctl is-active name.service  ---可以用于脚本中判断服务是否启动,启动时echo $?=0,未启动echo $?不等于0
查看所有已经激活的服务:
systemctl list-units --type service
查看所有服务:
systemctl list-units --type service --all|-a
chkconfig命令的对应关系:
设定某服务开机自启:
chkconfig name on ==> systemctl enable name.service
设定某服务开机禁止启动:
chkconfig name off ==> systemctl disable name.service
查看服务单元的启用和禁用状态
systemctl list-unit-files --type=service
用来列出该服务在哪些运行级别下启用和禁用
chkconfig sshd–list ==>
ls /etc/systemd/system/*.wants/sshd.service
查看服务是否开机自启:
systemct lis-enabled name.service
其它命令:
查看服务的依赖关系:
systemctl list-dependencies name.service
杀掉进程:
systemctl kill unitname
列出失败的服务
systemctl --failed --type service
systemctl reload name.service  ---服务已经启动,重新加载服务
systemcl daemon-reload   ----服务已经启动,修改了配置文件,让文件生效

4、运行级别

target units:
unit配置文件:.target
ls /usr/lib/systemd/system/*.target
systemctl list-unit-files --type target -a  查看运行状态
运行级别:
0 ==> runlevel 0.target, poweroff.target
1 ==> runlevel 1.target, rescue.target    ---单用户
2 ==> runlevel 2.target, multi-user.target
3 ==> runlevel 3.target, multi-user.target   ---字符界面
4 ==> runlevel 4.target, multi-user.target 
5 ==> runlevel 5.target, graphical.target   ---图形
6 ==> runlevel 6.target, reboot.target
查看依赖性:
systemctl list-dependencies graphical.target
级别切换:initN ==> systemctl isolate name.target
systemctl isolate multi-user.target
注:只有/usr/lib/systemd/system/*.target文件中AllowIsolate=yes 才能切换(修改文件需执行systemctl daemon-reload才能生效)
查看target:
runlevel; who -r
systemctl list-units --type target
获取开机默认运行级别:
/etc/inittab==> systemctl get-default
修改开机默认级别:
/etc/inittab==> systemctl set-default name.target
systemct lset-default multi-user.target
ls –l /etc/systemd/system/default.target
切换至紧急救援模式:
systemctl rescue
切换至emergency模式:
systemctl emergency
其它常用命令:
传统命令init,poweroff,halt,reboot都成为systemctl的软链接
关机:systemct lhalt、systemctl poweroff
重启:systemctl reboot
挂起:systemctl suspend
休眠:systemctl hibernate
休眠并挂起:systemctl hybrid-sleep

5、centos7引导顺序

UEFi或BIOS初始化,运行POST开机自检
选择启动设备
引导装载程序, centos7是grub2
加载装载程序的配置文件:/etc/grub.d/ /etc/default/grub /boot/grub2/grub.cfg
加载initramfs驱动模块
加载内核选项
内核初始化,centos7使用systemd代替init
执行initrd.target所有单元,包括挂载/etc/fstab
从initramfs根文件系统切换到磁盘根目录
systemd执行默认target配置,配置文件/etc/systemd/system/default.target
systemd执行sysinit.target初始化系统及basic.target准备操作系统
systemd启动multi-user.target下的本机与服务器服务
systemd执行multi-user.target下的/etc/rc.d/rc.local
Systemd执行multi-user.target下的getty.target及登录服务
systemd执行graphical需要的服务

6、service unit文件格式

/etc/systemd/system:系统管理员和用户使用,运行级别要比下面的配置文件运行级别要高,把写好的unit文件放到这个目录下,就可以用systemctl命令来管理这个服务,相当于centos6中的/etc/init.d目录,不同是centos6中使用service来管理服务,并且/etc/init.d目录下全是有执行权限的服务脚本,而这个目录下的格式和centos6中完全不同。
/usr/lib/systemd/system:发行版打包者使用,用户也可以将写好的unit文件放到这个目录下,就可以用systemctl命令来管理服务,但这个目录下的文件太多,不好管理。
服务Unit文件示例

vim /etc/systemd/system/bak.service
[Unit]
Description=backup /etc
Requires=atd.service
[Service]
Type=simple
ExecStart=/bin/bash -c "echo /app/bak.sh|at now"   ---表示立刻执行
 一个计划任务,为执行/app/bak.sh这个脚本
[Install]
WantedBy=multi-user.target
chmod a+x bak.service  ---别忘记加执行权限
[root@redhat7 app]#cat bak.sh   ---要执行的脚本的内容
cp -a /etc/ /app/`date "+%F-%T"`/
systemctl daemon-reload  ---重新加载一下配置文件,让文件生效
systemctl start bak ---就可以用这个命令来管理这个服务

总结:将这个unit文件放到/etc/systemd/system/下,或者放到/usr/lib/systemd/system目录下都可以,就可以额用systemctl命令来管理这个服务。

7、设置内核参数

设置内核参数,只影响当次启动。
启动时,在启动菜单下面按e进入编辑内核参数,在linux16行后添加如下命令,可以实现临时禁用selinux和开机后进入各种运行模式,最后按ctrl+x进行启动。
selinux=0 ---表示启动时临时禁用selinux
systemd.unit=multi-user.target ---表示启动后进入字符运行模式
systemd.unit=emergency.target ---启动后进入更低级的模式
systemd.unit=rescue.target ---相当于centos6里的1模式,启动后进入该模式
rescue.target 比emergency 支持更多的功能,例如日志等

8、centos7中服务和socket是分离的

socket是ip地址加上tcp或者udp的端口号

[root@redhat7 app]#systemctl status rpcbind.service 
● rpcbind.service - RPC bind service
   Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; indirect; vendor preset: enabled)
   Active: inactive (dead)  ---此时服务是不活动的状态
[root@redhat7 app]#systemctl status rpcbind.socket 
● rpcbind.socket - RPCbind Server Activation Socket
   Loaded: loaded (/usr/lib/systemd/system/rpcbind.socket; enabled; vendor preset: enabled)
   Active: active (listening) since Thu 2017-09-07 21:56:03 CST; 25s ago
   Listen: /var/run/rpcbind.sock (Stream)
           [::]:111 (Stream)     ---可看到正处于监听状态,并且监听的端口是111
           0.0.0.0:111 (Stream)

Sep 07 21:56:03 redhat7.4.magedu.com systemd[1]: Stopping RPCbind Server Ac...
Sep 07 21:56:03 redhat7.4.magedu.com systemd[1]: Listening on RPCbind Serve...
Sep 07 21:56:03 redhat7.4.magedu.com systemd[1]: Starting RPCbind Server Ac...
Hint: Some lines were ellipsized, use -l to show in full.
[root@redhat7 app]#ss -nat
State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN     0      128         *:111                     *:*                  
LISTEN     0      128         *:22                      *:*                  
LISTEN     0      100    127.0.0.1:25                      *:*                  
ESTAB      0      52     172.18.21.7:22                 172.18.252.32:52370              
LISTEN     0      128        :::111                    :::*                  
LISTEN     0      128        :::22                     :::*                  
LISTEN     0      100       ::1:25                     :::*   

我们发现rpcbind.service 和rpcbind.socket是分离的,因为此时服务并没有开启,是socket帮着监听的,当有人访问时,会激活服务,/usr/lib/systemd/system/rpcbind.socket文件是用来帮着服务监听端口用的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容