systemd 使用

Posted ownlate

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了systemd 使用相关的知识,希望对你有一定的参考价值。

systemd 是 Linux 下的一款系统和服务管理器,兼容 SysV ,Upstart和 LSB 的启动脚本。在CentOS 7中成为默认的服务管理器。

#CentOS 5: SysV init
#CentOS 6: Upstart
#CentOS 7: Systemd

 

systemd 的特性有:

  • 支持并行化任务;
  • 同时采用 socket 式与D-Bus总线式激活服务;
  • 按需启动守护进程(daemon);
  • 利用 Linux 的 cgroups监视进程;
  • 支持快照和系统恢复;
  • 维护挂载点和自动挂载点;
  • 各服务间基于依赖关系进行精密控制。

 

systemd核心概念:unit

systemd引入了一个新的概念,叫做unit,所有可用的单元文件存放在 /usr/lib/systemd/system/ 和 /etc/systemd/system/ 目录。

unit类型:

系统服务(.service):.service, 用于定义系统服务;

挂载点(.mount):.mount,定义文件系统挂载点;

sockets(.sockets) :.socket, 用于标识进程间通信用的socket文件;

系统设备(.device):.device, 用于定义内核识别的设备;

交换分区(.swap): .swap, 用于标识swap设备;

文件路径(.path):.path,用于定义文件系统中的一个文件或目录;

启动目标(.target):.target,用于模拟实现“运行级别”;

系统快照(.swap):.swap, 用于标识swap设备;

自动挂载点(.automount):.automount,文件系统的自动挂载点;

 

systemd的主要命令是systemctl。该命令可用于查看系统状态和管理系统及服务。

命令格式:

systemctl [OPTIONS...] COMMAND [NAME...]?

 

显示系统状态:

 systemctl status?

 

查看激活的单元:

systemctl | systemctl list-units?

 

查看失败的单元

systemctl --failed?

 

服务管理:

启动服务:
systemctl start name.service  #.service可以不加
关闭服务:
systemctl stop name.service
查看服务状态:
systemctl status name.service
重启服务:
systemctl restart name.service
条件式重启:
systemctl try-restart name.service
重载或重启服务:
systemctl reload-or-restart name.service
重载或条件式重启服务:
systemctl reload-or-try-restart name.service
查看所有已激活的服务:
systemctl list-units --type service
查看所有服务:
systemctl list-units --type service --all
查看某服务当前激活与否状态:
systemctl is-active name.service
设置服务开机启动:
systemctl enable name.service
禁止服务开机启动:
systemctl disable name.service
查看服务是否开机启动:
systemctl is-enabled name.service
查看所有服务是否开机启动:
systemctl list-unit-files --type service 
禁止设为开机启动:
systemctl mask name.service
取消禁止设为开启启动:
systemctl unmask name.service
查看服务启动依赖关系:
systemctl list-dependencies name.service?

 

在RHEL/CentOS 5/6 中,更改系统默认的启动运行级别的方式是编辑/etc/inittab,systemd 是向前兼容的,那么systemd 的运行级别为:

runlevel0.target, poweroff.target
runlevel1.target, rescue.target
runlevel2.target, multi-user.target
runlevel3.target, multi-user.target
runlevel4.target, multi-user.target
runlevel5.target, graphical.target
runlevel6.target, reboot.target?

 

运行级别切换:

systemctl isolate name.target
查看当前默认运行级别:
systemctl get-default
修改默认级别:
systemctl set-default name.target?

 

电源管理:

关机:
systemctl halt | systemctl poweroff
重启:
systemctl reboot
 
休眠:
systemctl hibernate
混合休眠模式:(同时休眠硬盘并待机)
systemctl hybrid-sleep?

 

以上是关于systemd 使用的主要内容,如果未能解决你的问题,请参考以下文章

Node应用的Systemd启动(转)

systemd 为啥会有那么大的争议

Systemd http 健康检查

一个小BUG,引出对Linux启动机制Systemd的代码分析

一个小BUG,引出对Linux启动机制Systemd的代码分析

如何在systemd中添加service