Sysv/UpStart/Systemd的区分

Linux系统目前存在的三种系统启动方式所对应的配置文件目录分别为:
1. SysVinit:/etc/init.d目录;
1. UpStart: /usr/share/upstart目录;
1. Systemd:/usr/lib/systemd目录;
但是大多数系统上,都会存在多个类似的目录,因此不能简单地根据是否存在相应的配置目录的方式来判断系统的启动方式,这里推荐的方式上是根据init进程号1所对应的可执行文件来判断,如:

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. 浅析Linux初始化init系统:
    1. sysvinit
    2. UpStart
    3. Systemd
  2. StackExchange上的相应问答:
    how to find out if a system uses sysv upstart or systemd initsystem

推荐阅读更多精彩内容