目录
Please enable Javascript to view the contents

Linux基础-服务管理

 ·  ☕ 3 分钟

Linux系统在引导时加载Linux内核后,便由Linux内核加载init程序,由init程序完成余下的引导过程,比如加载执行级别,加载服务,启动Shell/图形化界面等等。

Linux历史上服务管理一共出现过三种方式,init、service、systemd

initd

Linux 最初一直采用 init 进程。

Init(初始化的简称)是在启动计算机系统期间启动的第一个进程(initd的PID是0),其他进程都是它的子进程。

因为init的参数全在/etc/init.d目录下,所以使用 init 启动一个服务,命令如下:

1
/etc/init.d/nginx start

service

service是一个运行System V init(/etc/init.d 目录下的参数)的脚本命令。service根据/etc/init.d目录下的服务配置运行程序。可以将service理解成init的一种实现。两者的服务管理方式没有区别

1
2
3
/etc/init.d/nginx start
或者
service nginx start

serviceinit存在以下缺点:

  • 启动时间长:init进程串行启动。
  • 启动脚本复杂:init进程有启动执行脚本,不管理其他阶段,脚本需要自行处理其他各种情况。

systemd

2015年以后(Ubuntu-15.04|RHEL-7),为克服System V init启动时间长、脚本复杂的缺点而诞生的。提供系统启动速度。大部分Linux发行版都已采用新的systemd替代System VUpstart,向下兼容System V

systemd: 是Linux系统中最新的初始化系统(init),为系统的启动和管理提供一套完整的解决方案。

Systemd取代了initd成为系统的第一个进程(Systemd 的PID是1),其他进程都是它的子进程。

Linux-systemd-arch.png

命令

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。

分享

Hex
作者
Hex
CloudNative Developer