系统启动方式:SysV / UpStart / Systemd 的区分

目录

Sysv/UpStart/Systemd的区分

Systemd&&Sysvinit

--------------------------------------------------------------

#以下两条命令,等效

stat /proc/1/exe

ps -p 1 -o comm=

pstree 指令,更方便 ?

System has not been booted with systemd as init system (PID 1). Can‘t operate  https://blog.csdn.net/ken2232/article/details/132529761

pstree 指令  https://blog.csdn.net/llffss/article/details/129641791 

====================================

什么是 systemd?

 https://baijiahao.baidu.com/s?id=1774668356049722043&wfr=spider&for=pc

systemd 是一个系统和服务管理器,于 2010 年首次推出,用于取代传统的 System V 初始化系统。它旨在提高启动速度并更有效地管理系统服务。如今,systemd 是许多流行 Linux 发行版的默认初始化系统,包括 Ubuntu、Fedora 和 Red Hat Enterprise Linux(RHEL)。

Sysv/UpStart/Systemd的区分

Linux系统目前存在的三种系统启动方式所对应的配置文件目录分别为:

  1. SysVinit:/etc/init.d目录;
  2. UpStart: /usr/share/upstart目录;
  3. Systemd:/usr/lib/systemd目录;


但是大多数系统上,都会存在多个类似的目录,因此不能简单地根据是否存在相应的配置目录的方式来判断系统的启动方式,这里推荐的方式上是根据 init进程号1 所对应的可执行文件来判断,如:

Sysv

$ sudo stat /proc/1/exe
  File: /proc/1/exe -> /usr/sbin/init
  Size: 0             Blocks: 0          IO Block: 1024   symbolic link
Device: 14h/20d    Inode: 23065       Links: 1
Access: (0777/lrwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2023-08-27 18:46:17.707999957 -0400
Modify: 2023-08-27 18:46:17.699999957 -0400
Change: 2023-08-27 18:46:17.699999957 -0400
 Birth: -

$  /usr/sbin/init --version
SysV init version: 2.96

UpStart

查看可执行文件:

# stat /proc/1/exe
  File: ‘/proc/1/exe’ -> ‘/sbin/init
  Size: 0           Blocks: 0          IO Block: 1024   symbolic link
Device: 27h/39d Inode: 30687       Links: 1
Access: (0777/lrwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-11-01 20:54:17.438872888 -0700
Modify: 2017-11-01 04:36:41.247322141 -0700
Change: 2017-11-01 04:36:41.247322141 -0700
 Birth: -

可以看出这里使用的是init,但具体是哪个还是不够清晰,因此再向下看:

# /sbin/init --version

init (upstart 1.12.1)
Copyright (C) 2006-2014 Canonical Ltd., 2011 Scott James Remnant

This is free software; see the source for copying conditions.  There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

所以最后可以确定使用的是UpStart。

Systemd

查看可执行文件:

# stat /proc/1/exe
  文件:/proc/1/exe -> /lib/systemd/systemd
  大小:0          块:0          IO 块:1024   符号链接
设备:4h/4d    Inode:145661      硬链接:1
权限:(0777/lrwxrwxrwx)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2017-11-02 06:06:35.280148731 +0000
最近更改:2017-11-02 04:39:59.609176432 +0000
最近改动:2017-11-02 04:39:59.609176432 +0000
创建时间:-

可以看出这里使用的是systemd,其详细信息如下:

# /lib/systemd/systemd --version
systemd 232
+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN
参考文档

注:

1. --version 给出的信息,可能是取决于 linux发行者的自定义信息。

因此,不同的发行社区,所给出的信息也是不一样的。

2. init文件所在的目录,不同的发行版,也可能是不一样的。


链接:https://www.jianshu.com/p/43933d125075

systemd的使用以及与sysvinit的区别

 https://blog.csdn.net/drdairen/article/details/51437574

摘录:

systemd被设计用来改进sysvinit的缺点,它和ubuntu的upstart是竞争对手,预计会取代它们。systemd的很多概念来源于苹果的launchd。创始人Lennart是redhat员工,但systemd不是redhat项目。

systemd的目标是:尽可能启动更少进程;尽可能将更多进程并行启动。systemd尽可能减少对shell脚本的依赖。

传统sysvinit使用inittab来决定运行哪些shell脚本,大量使用shell脚本被认为是效率低下无法并行的原因。

systemd使用了Linux专属技术,不再顾及POSIX兼容,一度谣传Debian为了它的BSD项目将不会使用systemd。

。。。。。。省略 。。。。。。

Systemd&&Sysvinit

问题

    System has not been booted with systemd as init system (PID 1). Can’t operate
    原因:您的linux系统没有使用systemd

在命令穿那个口输入

ps -p 1 -o comm=

输出结果

systemd/sysv

根据对应的系统使用操作命令去进行操作.

服务操作命令:
Systemd command                        Sysvinit commmand
systemctl start service_name         service service_name start
systemctl stop service_name         service service_name stop
systemctl restart service_name     service service_name restart
systemctl status service_name      service service_name status
systemctl enable service_name     service service_name enable
systemctl disable service_name    service service_name disable

————————————————
版权声明:本文为CSDN博主「不教而诛」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_43801500/article/details/126655384

参考:

 System has not been booted with systemd as init system (PID 1). Can‘t operate

  https://blog.csdn.net/ken2232/article/details/132529761?spm=1001.2014.3001.5502

systemd是做什么的?在开机的时候它做了什么?systemd和sysVinit,upstart有什么区别?

 https://www.zhihu.com/question/27547618?sort=created

`/etc/systemd/system/` 目录是 Linux 系统中 systemd 初始化系统服务管理器的一个重要组成部分。Systemd 是现代 Linux 发行版广泛采用的一种系统服务管理工具,它替代了传统的 SysV init Upstart。通过 `/etc/systemd/system/` 目录及其子目录,管理员可以自定义管理系统服务、定时任务以及其他类型的单元文件(unit files)。 ### 单元文件类型 在该目录下存放的主要是一些单元文件,它们描述了如何启动、停止以及控制系统中的各种组件。常见的几种单元文件包括: - **Service Units (.service)**:最常用的单元之一,用来定义后台运行的服务程序,如 Web 服务器、数据库等。 - **Socket Units (.socket)**:用于网络监听套接字或其他类型的 IPC (进程间通信),以便按需激活相应的服务。 - **Target Units (.target)**:类似于传统 init 的“运行级别”,将一组相关的服务捆绑在一起作为一个整体进行管理依赖解析。 - **Timer Units (.timer)**:类似于 cron 定时任务的功能,但更强大且与 systemctl 更加集成。 - **Path Units (.path)**:当监控的路径发生变化时触发相应操作。 - **Swap Units (.swap)**:配置交换分区或文件的行为。 - **Device Units (.device)**:关联硬件设备节点到 udev 规则。 - **Mount Units (.mount)**:处理挂载点的相关信息,例如自动挂载 NFS 或 CIFS 文件系统。 - **Automount Units (.automount)**:提供延迟加载功能,只有访问指定位置时才会真正去尝试挂载对应的卷。 ### 使用场景举例 假设你需要添加一个新的 MySQL 数据库作为开机自启服务,则可以在 `/etc/systemd/system/mysql.service.d/override.conf` 创建一个配置片段文件来调整默认行为,或者完全新建一个 `.service` 文件放置在此处来进行个性化定制。 对于一次性任务或是临时性的守护进程,也可以直接在这里编写简单的脚本形式的服务单元文件。 另外值得注意的是,在这个主目录下面还会有几个特别重要的子目录: - **multi-user.target.wants/**:包含链接指向那些应该随着进入 multi-user 模式一起启动的服务。 - **graphical.target.wants/**:同理适用于图形界面环境下的目标状态。 - **default.target**:指示系统的默认启动目标。 最后别忘了每次修改完相关文件后都需要刷新 systemd 缓存使其识别新改动: ```bash sudo systemctl daemon-reload ``` 这一步非常重要,因为如果没有更新缓存,那么所做的更改就不会生效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值