加载中…
个人资料
胖仔
胖仔
  • 博客等级:
  • 博客积分:0
  • 博客访问:534
  • 关注人气:0
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

Systemd

(2016-06-26 10:56:29)
标签:

杂谈

systemd

系统启动和服务器守护进程管理器,负责在系统启动或运行时,激活系统资源、服务器进程和其它进程;

新特性:
系统引导时实现服务并行启动;
按需激活进程;
系统状态快照;
基于依赖关系定义服务控制逻辑;自动化的服务依赖关系管理;


核心概念:
unit
unit表示不同类型的systemd对象,通过配置文件进行标识和配置;
由其相关配置文件进行标识,识别和配置;
文件中主要包含了系统服务,监听的socket,保存的快照以及其它init相关的信息;
这些配置文件主要保存在:
/usr/lib/systemd/system:每个服务最主要的启动脚本设置,类似于之前的/etc/init.d/
/run/systemd/system:系统执行过程中所产生的服务脚本,比上面目录优先运行;
/etc/systemd/system:管理员建立的执行脚本,类似于/etc/rc.d/rcN.d/Sxx类的功能,比上面目录优先运行;

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,定义文件系统中的文件或目录;

#systemctl –t help 查看unit类型

关键特性:
基于socket的激活机制;socket与程序分离;
基于总线bus激活机制;
基于device的激活机制;
基于path的激活机制;
系统快照;保存各unit的当前状态信息与持久存储设备中;
向后兼容sysv的init脚本;
/etc/init.d/

不兼容:
systemctl的命令是固定不变的;
不是由systemd启动的服务;systemctl无法与之通信,无法管理;

管理系统服务:
service类型的unit文件:

systemctl命令:
Control the systemd system and service manager.
systemctl [OPTIONS] COMMAND [NAME]

启动:service Name start --> systemctl start Name.service
停止:service Name stop --> systemctl stop Name.service   
重启:service Name restart --> systemctl restart Name.service
状态:service Name status --> systemctl status Name.service
条件式重启:service Name condrestart --> systemctl try-restart Name.service  已启动才重启,否则不做操作;
重载或重启服务:systemctl reload-or-restart Name.service
重载或条件式重启服务:systemctl reload-or-try-restart Name.service

查看服务当前激活与否的状态:
systemctl is-active Name.service
    #systemctl is-active httpd

查看所有已激活的服务:
list-units [PATTERN]
    #systemctl list-units --type=service
        -t,--type=:显示指定类型的单元;
            The argument should be a comma-separated list of unit types such as service and socket.
    #systemctl list-units --type=service --all    --> chkconfig --list   
        -a,--all:显示所有已加载的单元,包括未激活的;
            When listing units, show all loaded units, including inactive units.                       
    #systemctl list-unit-files  显示所有已安装的单元;
        To list all units installed on the system, use the list-unit-files command instead.

设置服务开机自启动:
chkconfig Name on --> systemctl enble Name.service
禁止服务开机自启动:
chkconfig Name off --> systemctl disable Name.service

查看某服务是否能开机自启动:
chkconfig --list Name --> systemctl is-enabled N.service
    #systemctl is-enabled httpd

禁止某服务设置开机自启动:
systemctl mask Name.service
取消禁止:
systemctl unmask Name.service

查看服务的依赖关系:
systemctl list-dependencies Name.service
    list-dependencies [NAME]
        Shows units required and wanted by the specified unit.
        If no unit is specified, default.target is implied.
    #systemctl list-dependencies httpd

管理target units:

运行级别:
0 --> runlevel0.target, poweroff.target
1 --> runlevel1.target, rescue.target
2 --> runlevel2.target, multiuser.target
3 --> runlevel3.target, multiuser.target
4 --> runlevel4.target, multiuser.target
5 --> runlevel5.target, graphic.target
6 --> runlevel6.target, reboot.target

运行级别切换:
init N --> systemctl isolate Name.target

只有/lib/systemd/system/x.target文件中AllowIsolate=yes才能切换(修改文件需执行systemctldaemon-reload才能生效);

查看当前运行级别:
runlevel --> systemctl list-units -t target
查看所有target:
systemctl list-units -t target -a

查看默认运行级别:
systemctl get-default
Return the default target to boot into.
This returns the target unit name default.target is aliased (symlinked) to.

修改默认运行级别:
systemctl set-default Name.target
Set the default target to boot into.

切换至救援模式:(类似单用户)
systemctl rescue

切换至emergency紧急模式:(不执行启动脚本,不加载驱动)   
systemctl emergency

其它常用命令;
关机:systemctl poweroff, systemctl halt
重启:systemctl reboot
挂起:systemctl suspend
快照:systemctl hibernate
快照并挂起:systemctl hibrid-sleep

service unit file:       
#vim /usr/lib/systemd/system/httpd.service       
/lib目录是/usr/lib的软链接:
#ll -d /lib
文件通常由三部分组成:
[Unit]:定义与unit类型无关的通用选项;用于提供unit的描述信息,unit行为及依赖关系等;
[Service]:与特定类型相关的专用选项;此处为service类型;
[Install]:定义由"systemctl enable"以及"systemctl disable命令在实现服务启用或禁用时用到的一些选项;

Unit段的常用选项:
Description:描述信息;意义性描述;
After:定义unit的启动次序;表示当前unit应该晚于哪些unit启动;其功能与before相反;
Requires:依赖到的其它units;强依赖,被依赖的units无法激活时,当前unit无法激活;
Wants:依赖到的其它unit;弱依赖;
conflicts:定义units之间的冲突关系;

Service段常用选项:
Type:定义影响ExecStart及相关参数的功能的unit进程启动类型;
类型:
simple:默认类型;由ExecStart启动的进程是主进程;
forking:由ExecStart启动的一个子进程是主进程;
oneshot:一次性;
dbus:后续的units仅在主进程得到dbus名称之后才能启动;
notify:类似于simple;后续的units仅在通过notify函数发送通知以后才能运行;
idle
EnvironmentFile:环境配置文件;
ExecStart:指明启动unit要运行的命令或脚本;ExecStartPre,ExecStartPost;
ExecStop:指明停止unit要运行的命令或脚本;
Restart:进程意外终止了会被重新启动;

Install段常用选项:
Alias:当前unit的别名;
RequiredBy:被哪些units所依赖;
WantedBy:被哪些units所依赖;

注意:对于新创建的unit文件,或修改了的unit的文件,要通知systemd重载此配置文件;
#systemctl daemon-reload
Reload systemd manager configuration.reload all unit files.
#systemctl reload httpd

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有