Linux系统在引导时加载Linux内核后,便由Linux内核加载init程序,由init程序完成余下的引导过程,比如加载执行级别,加载服务,启动Shell/图形化界面等等。
Linux历史上服务管理一共出现过三种方式,init、service、systemd
init
Linux 最初一直采用 init 进程。
Init(初始化的简称)是系统启动时的第一个进程(initd
的PID是0),其他进程都是它的子进程。
因为init的参数全在/etc/init.d目录下,所以使用 init 启动一个服务,命令如下:
|
|
主要功能包括:
- 启动服务:根据配置文件(如 /etc/inittab 或 /etc/init.d/ 目录下的脚本),启动系统服务。
- 管理运行级别:在不同的运行级别(如单用户模式、多用户模式等)之间切换。
- 处理信号:响应系统信号,如重启或关机。
service(System V init)
System V init
是一个广泛使用的 init 系统,它在许多传统的 Unix-like 系统中被采用。
service
是运行System V init
(/etc/init.d 目录下的参数)的脚本命令。service
根据/etc/init.d
目录下的服务配置运行程序。可以将service理解成init的一种实现。两者的服务管理方式没有区别
|
|
init
与service
存在以下缺点:
- 启动时间长:init进程串行启动。
- 启动脚本复杂:init进程有启动执行脚本,不管理其他阶段,脚本需要自行处理其他各种情况。
systemd
2015年以后(Ubuntu-15.04|RHEL-7),为克服
System V init
启动时间长、脚本复杂的缺点而诞生的。为提高系统启动速度,大部分Linux发行版都已采用新的systemd
替代System V
和Upstart
,向下兼容System V
。
systemd
: 是Linux系统中最新的初始化系统(init
),为系统的启动和管理提供一套完整的解决方案。
Systemd
取代了initd
成为系统的第一个进程(Systemd
的PID是1),其他进程都是它的子进程。
主要特点包括:
- 并行启动:服务可以并行启动,显著减少了启动时间。
- 依赖管理:通过定义服务之间的依赖关系,确保服务按正确的顺序启动。
- 状态检查:提供服务状态的实时检查,方便系统管理员监控。
- 日志管理:集成了日志管理功能,方便查看系统和服务日志。
关键组件:
- systemd 服务:以 .service 文件的形式定义,位于 /etc/systemd/system/ 目录。
- systemd 目标:定义系统的不同运行目标(如图形界面、命令行界面等)。
- systemd 单元:包括服务、目标、套接字、设备等,是 systemd 管理的基本单位。
命令
Systemd
是一组命令的集合,涉及系统管理的各方面。
系统级别
systemctl
是管理系统的主命令
重启系统:systemctl reboot
; 关机:systemctl poweroff
; 停止CPU:systemctl halt
; 暂停系统:systemctl halt
等systemd-analyze
查看启动耗时。
查看启动耗时:systemd-analyze
; 查看每个服务的启动耗时:systemd-analyze blame
; 显示瀑布状的启动过程流:systemd-analyze critical-chain
; 显示指定服务的启动流:systemd-analyze critical-chain atd.service
hostnamectl
管理主机信息
查看:hostnamectl
; 设置:hostnamectl set-hostname hex
localectl
管理本地化设置
查看:localectl
; 设置:localectl set-locale LANG=en_GB.utf8
timedatectl
管理时区设置
查看:timedatectl
; 设置timedatectl set-timezone America/New_York
loginctl
查看当前登录的用户
列出当前session:loginctl list-sessions
; 列出当前登录用户:loginctl list-users
; 显示指定用户信息:loginctl show-user user1
Unit
Systemd 可以管理所有系统资源。不同的资源统称为 Unit(单位)。
日志管理
Systemd 统一管理所有 Unit 的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)。日志的配置文件是/etc/systemd/journald.conf。
|
|