Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7170106
  • 博文数量: 3857
  • 博客积分: 6409
  • 博客等级: 准将
  • 技术积分: 15948
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-02 16:48
个人简介

迷彩 潜伏 隐蔽 伪装

文章分类

全部博文(3857)

文章存档

2017年(5)

2016年(63)

2015年(927)

2014年(677)

2013年(807)

2012年(1241)

2011年(67)

2010年(7)

2009年(36)

2008年(28)

分类: 系统运维

2015-04-08 11:31:17

CentOS7/RHEL7 systemd详解

[日期:2015-04-08] 来源:Linux社区  作者:xiaoli110 [字体:  ]

7.systemd服务管理

(1) 什么是单元

在RHEL7之前,服务管理是分布式的被SysV init或UpStart通过/etc/rc.d/init.d下的脚本管理。这些脚本是经典的Bash脚本,允许管理员控制服务的状态。在RHEL7中,这些脚本被服务单元文件替换。
在systemd中,服务、挂载等资源统一被称为单元,所以systemd中有许多单元类型,服务单元文件的扩展名是.service,同脚本的功能相似。例如有查看、启动、停止、重启、启用或者禁止服务的参数。
systemd单元文件放置位置:
/usr/lib/systemd/system/systemd默认单元文件安装目录
/run/systemd/systemsystemdsystemd单元运行时创建,这个目录优先于按照目录
/etc/systemd/system系统管理员创建和管理的单元目录,优先级最高。

(2)systemd的服务管理

使用systemcl命令可以控制服务,service命令和chkconfig命令依然可以使用,但是主要是出于兼容的原因,应该尽量避免使用。
使用systemctl命令的时候,服务名字的扩展名可以写全,例如:
systemctl stop bluuetooth.service
也可以忽略,例如:
systemctl stop bluetooth
systemctl常用命令:
启动服务 systemctl start name.service
关闭服务 systemctl stop name.service
重启服务 systemctl restar tname.service
仅当服务运行的时候,重启服务 systemctl try-restart name.service
重新加载服务配置文件 systemctl relaod name.service
检查服务运作状态 systemctl status name.service 或者 systemctl is-active\ name.service
展示所有服务状态详细信息 systemctl list-units--type service --all
允许服务开机启动 systemctl enable name.service
禁止服务开机启动 systemclt disable name.service
检查服务开机启动状态 systemctl status name.service 或者systemctl\
is-enabled name.service
列出所有服务并且检查是否开机启动 systemctl list-unit-files --type service

(3)服务详细信息查看

使用如下命令列出服务:
systemctl list-units --type service
默认只列出处于激活状态的服务,如果希望看到所有的服务,使用--all或-a参数:
systemctl list-units--type service --all
有时候希望看到所以可以设置开机启动的服务,使用如下命令:
systemctl list-unit-files --type service
查看服务详细信息,使用如下命令:
systemctl status name.service
服务信息关键词解释
Loaded服务已经被加载,显示单元文件绝对路径,标志单元文件可用。
Active服务已经被运行,并且有启动时间信息。
Main PID与进程名字一致的PID,主进程PID。
Status服务的附件信息。
Process相关进程的附件信息。
CGroup进程的CGroup信息。

8.使用systemd target

(1)怎样知道一个目标需要哪些进程服务?

例如,可能想搞明白目标单元multi-user.target究竟启用了哪些服务,使用以下命令:

$systemctlshow-p"Wants"multi-user.target 
Wants=rc-local.serviceavahi-daemon.servicerpcbind.serviceNetworkManager.serviceacpid.servicedbus.serviceatd.servicecrond.serviceauditd.servicentpd.serviceudisks.servicebluetooth.serviceorg.cups.cupsd.servicewpa_supplicant.servicegetty.targetmodem-manager.serviceportreserve.serviceabrtd.serviceyum-updatesd.serviceupowerd.servicetest-first.servicepcscd.servicersyslog.servicehaldaemon.serviceremote-fs.targetplymouth-quit.servicesystemd-update-utmp-runlevel.servicesendmail.servicelvm2-monitor.servicecpuspeed.serviceudev-post.servicemdmonitor.serviceiscsid.servicelivesys.servicelivesys-late.serviceirqbalance.serviceiscsi.service

除了Wants,还可以查看各种形式的依赖和被依赖信息:WantedBy、Requires、RequiredBy、Conflicts、ConflictedBy、Before、After。

(2)target与运行级别

在RHEL7之前的版本,使用运行级别代表特定的操作模式。运行级别被定义为七个级别,用数字0到6表示,每个级别可以启动特定的一些服务。RHEL7使用target替换运行基本。
systemd target使用target单元文件描述,target单位文件扩展名是.target,target单元文件的唯一目标是将其他systemd单元文件通过一连串的依赖关系组织在一起。举个例子,graphical.target单元,用于启动一个图形会话,systemd会启动像GNOME显示管理(gdm.service)、帐号服务(axxounts-daemon)这样的服务,并且会激活multi-user.target单元。相似的multi-user.target单元,会启动必不可少的NetworkManager.service、dbus.service服务,并激活basic.target单元。
RHEL7预定义了一些target和之前的运行级别或多或少有些不同。为了兼容,systemd也提供一些target映射为SysV init的运行级别,具体的对应信息如下:
0runlevel0.target,poweroff.target关闭系统。
1runlevel1.target,rescue.target进入救援模式。
2runlevel2.target,multi-user.target进入非图形界面的多用户方式。
3runlevel3.target,multi-user.target进入非图形界面的多用户方式。
4runlevel4.target,multi-user.target进入非图形界面的多用户方式。
5runlevel5.target,graphical.target进入图形界面的多用户方式。
6runlevel6.target,reboot.target重启系统。

(3)target管理

1)使用如下命令查看目前可用的target:

systemctl list-units --type target

改变当前的运行基本使用如下命令:

1 systemctl isolate name.target

2)修改默认的运行级别
使用systemctl get-default命令得到默认的运行级别:

[root@localhost~]#systemctlget-default 
multi-user.target

使用systemctl set-default name.target修改默认的运行基本

[root@localhost~]#systemctlset-defaultgraphical.target 
rm'/etc/systemd/system/default.target'
ln-s'/usr/lib/systemd/system/graphical.target''/etc/systemd/system/default.target'

3)救援模式和紧急模式
使用systemctl rescue进入救援模式,如果连救援模式都进入不了,可以进入紧急模式:

systtmctl emergency

紧急模式进入做小的系统环境,以便于修复系统。紧急模式根目录以只读方式挂载,不激活网络,只启动很少的服务,进入紧急模式需要root密码。

9.关闭、暂停、休眠系统

RHEL7中,使用systemctl替换一些列的电源管理命令,原有的命令依旧可以使用,但是建议尽量不用使用。systemctl和这些命令的对应关系为:
hatl,systemctl halt停止系统
poweroff,systemctl poweroff关闭系统,关闭系统电源。
reboot,systemctl reboot重启系统
pm-suspend,systemctl suspend暂停系统
pm-hibernate,systemct lhibernate休眠系统
pm-suspend-hybrid,systemctl hybrid-sleep暂停并休眠系统

10.通过systemd管理远程系统

不光是可以管理本地系统,systemd还可以控制远程系统,管理远程系统主要是通过SSH协议,只有确认可以连接远程系统的SSH,在systemctl命令后面添加-H或者--host参数,加上远程系统的ip或者主机名就可以。

阅读(628) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~