Linux

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Linux > Linux systemd与SysVinit使用

Linux中的systemd与SysVinit使用

作者:依旧风轻

这篇文章主要介绍了 Linux中的systemd与SysVinit使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

1. 什么是 systemd 和 SysVinit?

systemdSysVinit 都是 Linux 的初始化系统(init system),用于管理系统启动、服务、进程和日志。

比较项SysVinitsystemd
启动方式逐步启动(串行)并行启动(并行)
服务管理基于 init 脚本基于 unit 文件
依赖管理依赖手动定义自动处理依赖关系
启动速度快(并行优化)
日志管理/var/log/messagesjournalctl
是否支持 cgroups
默认用于旧版 Linux(CentOS 6、Ubuntu 14)现代 Linux(CentOS 7+、Ubuntu 16+)

2. SysVinit 详解

SysVinit(System V init)是早期 Unix 系统的 init 进程,负责系统引导和服务管理。

(1) SysVinit 的工作方式

(2) SysVinit 运行级别

运行级别作用
0关机
1单用户模式
3纯命令行模式
5图形界面模式
6重新启动

(3) SysVinit 启动服务的方式

/etc/init.d/nginx start
/etc/init.d/nginx stop
/etc/init.d/nginx restart
service nginx status
service nginx restart
chkconfig nginx on  # 开机自启
chkconfig --list nginx  # 查看是否开机自启

(4) SysVinit 存在的问题

3. systemd 详解

systemd 是现代 Linux 的 init 进程,取代 SysVinit,提供更快的启动速度和更强的服务管理能力。

(1) systemd 的特点

(2) systemd 启动服务

systemctl start nginx   # 启动服务
systemctl stop nginx    # 停止服务
systemctl restart nginx # 重启服务
systemctl status nginx  # 查看服务状态
systemctl enable nginx  # 开机启动
systemctl disable nginx # 取消开机启动
systemctl list-units --type=service

(3) systemd unit 文件

[Unit]
Description=NGINX Web Server
After=network.target

[Service]
ExecStart=/usr/sbin/nginx -g "daemon off;"
ExecReload=/bin/kill -s HUP $MAINPID
KillMode=process
Restart=always

[Install]
WantedBy=multi-user.target
systemctl daemon-reload  # 重新加载配置
systemctl restart nginx  # 重启服务

(4) systemd 日志管理

journalctl -u nginx  # 查看 Nginx 相关日志
journalctl -f        # 实时查看日志(类似 `tail -f`)
journalctl --since "1 hour ago" # 查看最近 1 小时的日志

4. systemd 与 SysVinit 的区别

功能SysVinitsystemd
启动方式串行启动并行启动
管理方式init.d 脚本systemctl
依赖管理手动配置自动处理
启动速度
日志管理/var/log/messagesjournalctl
是否支持 cgroups
重启单个服务service nginx restartsystemctl restart nginx
查看服务状态service nginx statussystemctl status nginx

5. 如何判断系统使用 SysVinit 还是 systemd?

方法 1: 检查 /sbin/init

ls -l /sbin/init

如果输出:

lrwxrwxrwx 1 root root 22 Mar 12  2025 /sbin/init -> /lib/systemd/systemd

方法 2: 检查进程

ps -p 1

如果输出:

PID TTY      STAT   TIME COMMAND
  1 ?        Ss     0:00 /lib/systemd/systemd

说明 使用 systemd

如果输出:

PID TTY      STAT   TIME COMMAND
  1 ?        Ss     0:00 /sbin/init

说明 使用 SysVinit

方法 3: 直接运行 systemctl

systemctl --version

6. 哪些 Linux 版本使用 systemd?

发行版使用的 init 系统
CentOS 6 及更早版本SysVinit
CentOS 7 及更新版本systemd
Ubuntu 14.04 及更早版本SysVinit
Ubuntu 16.04+systemd
Debian 7 及更早版本SysVinit
Debian 8+systemd

Last:

如果你的系统是 CentOS 7+ 或 Ubuntu 16+,你应该使用 systemd 而不是 SysVinit。 

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文