Linux学习笔记(七)-守护进程
systemd简介
在RHEL6中,系统的第一个进程(PID=1) 是init进程
在RHEL7中,系统的第一个进程是systemd, 是一个特殊的守护进程。
systemd比原来的init进程更强大:
1)并行化功能,提供系统的启动速度
2)能够按需要来启动守护进程
3)自动服务依赖管理,例如可在网路不可用时,不启动网路服务
systemd的单元类型
systemd是第一个进程,可处理多个system单元。
可以理解为:systemd包含多个“组件”,每个组件,就是一个“单元”。
在shell中,使用systemctl命令来管理system单元。
system单元,分多种类型:
# systemctl -t help
查看所有可用的systemd单元的类型。
常用的systemd单元类型:
1)服务单元
扩展名为 .service
服务单元,用来启动对应的“守护进程”。
2)套接字单元
扩展名为.socket
表示进程间通信的套接字,可用于延时启动的服务、按需启动的服务。
3)目标单元
扩展名为.target
target单元,相当于RHEL6中的运行级别。
启动开机时,必须选择一种targe单元进行启动
管理目标单元
常用的目标单元
graphical.target:支持多用户,支持图像登陆和文本登陆。
multi-user.target:支持多用户,支持文本登陆
rescue.target:完成基本系统的初始化,rescue模式(救援模式)
emergency.target:系统根文件系统以只读形式挂载在/目录,emergency模式(紧急模式)
target单元相当于RHEL6中的运行级别。
即:每个target单元(运行级别),是一种模式。
在各个模式下,分别了不同的多个服务。
例如:graphical.target支持图形化界面
类比:马云这辈子,大脑开启了商业服务,下辈子投胎后,还是一样的大脑,但是大脑就可能就开启了表演服务,成为演员。
使用systemctl管理目标单元
(1)手动切换tareget目标
# systemctl isolate multi-user.target
马上生效
(2)获取默认target目标
# systemctl get-default
系统重启才生效
(3)设置默认target目标
# systemctl set-default multi-user.target
(4)开机时设置target目标。
仅该次有效,重启系统,然后编辑启动项,在启动命名行中指定启动目标
即: 重启系统。
按任意键中断倒计时,选择启动项,按e
在linux16开头的行的末尾,添加:systemd.unit=recure.target
按ctrl+x使用修改,并启动系统。
管理service单元
service单元,对应一个特定的服务。
一个服务,就是一个后台进程。
使用systemctl管理service单元:
(1)查询所有单元的状态
# systemctl
(2)查询指定单元的状态
# systemctl status graphical.target
# systemctl status rsyslog.service
(3)查询所有服务单元的状态
# systemctl --type=service
(4)查询处于失败或维护状态的所有单元
# systemctl status rngd.service -l
注: -l 可以显示完整的输出。
(5)查询指定的单元当前是否处于活动状态
# systemctl is-active sshd
因为sshd只有service类型的单元,没有同名的其他类型单元,可以省略 .service
(6)查询指定的单元是否开机自动启动
# systemctl is-enabled sshd
(7)查询已加载单元的状态
# systemctl list-units
列出所有已加载单元的状态。
# systemctl list-units --type=service
列出所有已加载服务单元的状态。
# systemctl list-unit-files
列出所有单元的启用、禁用(开机不自动启动)状态。
# systemctl list-unit-files --type=service
列出所有服务单元的启用、禁用(开机不自动启动)状态。
(8)查看所有失败的服务
# systemctl --failed --type=service
(9)控制服务单元
# systemctl status sshd.service
# systemctl stop sshd.service
# systemctl start sshd.service
# systemctl restart sshd.service
# systemctl enable sshd.service
# systemctl is-enabled sshd.service
# systemctl is-active sshd.service
(10)重新加载服务的配置文件(不会停止和启动服务)
# systemctl reload sshd.service
(11)屏蔽服务
有些服务之间是有冲突的,比如iptables和firewalld,此时就需要把某个服务屏蔽。
服务屏蔽后,该服务就不会被启动!
屏蔽后,不能开机启动该服务,也不能手动启动该服务!
# systemctl mask iptables
取消屏蔽服务
# systemctl unmask iptables
(12)单元依赖
某些服务单元,需要依赖其他服务单元,才能启动。
列出指定单元所依赖的单元。
# systemctl list-dependencies sshd
作者:废权
链接:https://blog.yjscloud.com/archives/24
声明:如无特别声明本文即为原创文章仅代表个人观点,版权归《废权的博客》所有,欢迎转载,转载请保留原文链接。


共有 0 条评论