Systemd服务管理

systemd(systemd官网)是Linux下的一种init软件, 较好地管理多个系统服务之间的并行启动和依赖,同时达到降低系统开销的效果,最终代替现在常用的System V与BSD风格init程序。新发行的RHEL 7也用systemd来取代了sysV来管理服务。Systemd中对系统的配置有大量改变,例如在Systemd中hostname可以在/etc/hostname中设置,而非rc.conf中的HOSTNAME环境变量等。本文先简单介绍一下systemd下服务的简单配置。
与多数发行版使用的System V风格init相比,systemd借鉴了OSX中的服务管理系统launchd,减少了对Shell脚本的依赖。有下面一些新特性(Systemd维基百科,还有作者blog文章 http://0pointer.de/blog/projects/systemd.html):
(1). 采用Socket激活式与总线激活式服务,以提高相互依赖的各服务的并行运行性能;
(2). 用cgroups代替PID来追踪进程,以此即使是两次fork之后生成的守护进程也不会脱离systemd的控制。
在sys V时代,chkconfig / service 是我们经常使用的服务管理程序,在RHEL 7中这一组命令替换为systemctl来实现。fedora的文档中指出了二者的区别SysVinit to Systemd Cheatsheet。systemd中不再以runlevel来决定启动的类型,而是改成了类型(type),可以通过systemctl –type=来过滤

service:后台服务;
mount:自动挂载文件系统;
target:运行级别;
socket:用来创建套接字,并在访问套接字后,立即利用依赖关系间接地启动另一单位;

# 是否让服务开机运行
[root@localhost] systemctl disable mariadb.service 
[root@localhost] systemctl enable mariadb.service 
ln -s '/usr/lib/systemd/system/mariadb.service' '/etc/systemd/system/multi-user.target.wants/mariadb.service'

# 检查服务开机是否启动
# 启用的服务会在/etc/systemd/system/*.wants下建立符号连接,所以也可以直接检查文件:
[root@localhost] systemctl is-enabled mariadb.service     
disabled
[root@localhost] ls /etc/systemd/system/*.wants/mariadb.service
/etc/systemd/system/multi-user.target.wants/mariadb.service

# 检查当前服务的列表(功能类似之前chkconfig --list)
[root@localhost] systemctl list-unit-files --type=service
也可以使用:
[root@localhost] ls /etc/systemd/system/*.wants/

# 当新增或者修改配置文件后,可以让systemd的守护进程重新加载服务配置
[root@localhost] systemctl daemon-reload
# 或者让systemd加载一个新加入的服务配置文件
[root@localhost] systemctl load foo.service

# 启动和停止服务
[root@localhost] systemctl start mariadb.service
[root@localhost] systemctl stop mariadb.service
[root@localhost] systemctl restart mariadb.service
[root@localhost] systemctl condrestart mariadb.service    ?    ?#如果服务在运行则重启
# 重载服务的应用配置文件,需要服务的自身支持。例如iptables可以重新载入rules
[root@localhost] systemctl reload iptables.rules

# 检查服务状态
# 与service命令不同的是,systemctl status不仅提供了当前服务的进程信息,还在start, reload失败等情况发生时提供错误的日志,可以更快解决服务的故障。
[root@localhost] systemctl status mariadb.service
mariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled)
   Active: failed (Result: exit-code) since Fri 2014-08-01 15:30:01 CST; 1min 24s ago
......
Aug 01 15:30:00 localhost.localdomain mysqld_safe[8706]: /usr/bin/mysqld_safe: line 138: /var/log/mysql/mysql.log: Permi...nied

# 显示系统启动失败的服务
# systemctl --failed
UNIT             LOAD   ACTIVE SUB    DESCRIPTION
iptables.service loaded failed failed IPv4 firewall with iptables
mariadb.service  loaded failed failed MariaDB database server
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值