Linux系统在引导时加载Linux内核后,便由Linux内核加载init程序,由init程序完成余下的引导过程,比如加载执行级别,加载服务,启动Shell/图形化界面等等。
Linux历史上服务管理一共出现过三种方式,init、service、systemd
initd
Linux 最初一直采用 init 进程。
Init(初始化的简称)是在启动计算机系统期间启动的第一个进程(initd的PID是0),其他进程都是它的子进程。
因为init的参数全在/etc/init.d目录下,所以使用 init 启动一个服务,命令如下:
| |
service
service是一个运行System V init(/etc/init.d 目录下的参数)的脚本命令。service根据/etc/init.d目录下的服务配置运行程序。可以将service理解成init的一种实现。两者的服务管理方式没有区别
| |
service与init存在以下缺点:
- 启动时间长: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是一组命令的集合,涉及系统管理的各方面。
系统级别
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.servicehostnamectl管理主机信息
查看:hostnamectl; 设置:hostnamectl set-hostname hexlocalectl管理本地化设置
查看:localectl; 设置:localectl set-locale LANG=en_GB.utf8timedatectl管理时区设置
查看:timedatectl; 设置timedatectl set-timezone America/New_Yorkloginctl查看当前登录的用户
列出当前session:loginctl list-sessions; 列出当前登录用户:loginctl list-users; 显示指定用户信息:loginctl show-user user1
Unit
Systemd 可以管理所有系统资源。不同的资源统称为 Unit(单位)。
日志管理
Systemd 统一管理所有 Unit 的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)。日志的配置文件是/etc/systemd/journald.conf。