服务控制
Systemd对linux来说,就是一个init程序,可以作为sysVinit和Upstat的替代
RHEL7监视和控制systemd的主要命令是systemctl,该命令可以用于查看系统状态和管理系统及服务。
RHEL7的服务systemctl脚本存放在:/usr/lib/systemd/,有系统(system)和用户(user)之分,像需要开机不登陆就能运行的程序,存在系统服务里,即:/usr/lib/systemd/system目录下。每一个服务以.service结尾,一般会分为3部分:[Unit]、[Service]和[Install]
[Unit]部分主要是对这个服务的说明,内容包括Description和After,Description用于描述服务,After用于描述服务类别
[Service]部分是服务的关键,是服务的一些具体运行参数的设置,这里Type=forking是后台运行的形式,PIDFile为存放PID的文件路径,ExecStart为服务的具体运行命令,ExecReload为重载命令,ExecStop为停止命令,注意:[Service]部分的启动、重启、停止命令全部要求使用绝对路径,使用相对路径则会报错!
[Install]部分是服务安装的相关设置,可设置为多用户的.
注意: 如果服务没有Install段落,一般意味着应该通过其它服务自动调用它们
使用systemd时,可通过正确编写单元配置文件来解决其依赖关系。典型的情况是,服务A要求服务B在A启动之前运行。在此情况下,向服务A配置文件中的 [Unit] 段添加 Requires=B 和 After=B 即可
我们对service和chkconfig两个命令都不陌生,RHEL7系统中systemctl 是管制服务的主要工具,它整合了chkconfig 与 service功能于一体。
systemctl命令的基本操作格式是:
systemctl 动作服务名.service
查看一下--help的信息
systemd提供更优秀的框架以表示系统服务间的依赖关系实现系统初始化时服务的并行启动,同时达到降低Shell的系统开销的效果,systemd的目标是尽可能启动更少进程;尽可能将更多进程并行启动。
分析系统状态:
systemctl 或systemctl list-units #输出激活的单元
systemctl list-units --type=service #列出active状态的服务
systemctl list-unit-files列出所有已安装服务
systemctl --failed #显示启动失败的服务
systemd-cgls以树形列出正在运行的进程
所有可用的单元文件存放在 /usr/lib/systemd/system/ 和 /etc/systemd/system/ 目录(后者优先级更高)
使用单元:
一个单元可以是系统服务(.service)、挂载点(.mount)、sockets(.sockets)。
使用 systemctl 控制单元时,通常需要使用单元文件的全名,包括扩展名(例如 sshd.service)。但是有些单元可以在systemctl中使用简写方式。如果无扩展名,systemctl 默认把扩展名当作 .service。例如sshd和sshd.service 是等价的。
挂载点会自动转化为相应的 .mount 单元。例如 /home 等价于 home.mount。
设备会自动转化为相应的 .device 单元,所以 /dev/sda2 等价于 dev-sda2.device。
systemctl start <单元> #立即启动单元
systemctl stop <单元> #立即停止单元
systemctl restart <单元> #重启单元
systemctl reload <单元> #重新读取单元配置
systemctl status <单元> #输出单元运行状态
systemctl is-enabled <单元> #检查单元是否配置为自动启动
systemctl enable <单元> #开机自动启动单元
systemctl disable <单元> #取消开机自动激活单元
systemctl is-active<单元> #查看单元是不是正在运行
systemctl daemon-reload #重新载入 systemd,扫描新的或有变动的单元
电源管理:
systemctl reboot #重启
systemctl poweroff #退出系统并停止电源
例如:
systemctl is-enabled iptables.service
systemctl is-enabled servicename.service #查询服务是否开机启动
systemctl enable *.service #开机运行服务
systemctl disable *.service #取消开机运行
systemctl start *.service #启动服务
systemctl stop *.service #停止服务
systemctl restart *.service #重启服务
systemctl reload *.service #重新加载服务配置文件
systemctl status *.service #查询服务运行状态
systemctl mask *.service #禁用指定服务
systemctl unmask *.service #激活指用服务
注:*代表某个服务的名字,如http的服务名为httpd
案例:
查看服务的状况
停止 sshd服务,查看状态
状态表示为dead服务已经停止。
disable 服务,禁止开机自动运行
开机自动加载,并启动该服务
通过mask来禁用该服务,这样一旦服务终止,则无法再启动,必须通过unmask解除禁用才能使用systemctl start sshd 来运行服务
除了上面提到的基本功能,systemctl还可以查询当前加载的模块单元,注意后缀为service的才是我们需要管理的服务
可以通过 type来过滤掉其他类型的单元
systemctl list-unit-files –type service