centos8使用systemctl管理运行级别

一,什么是systemd的target?

1,关于systemd/systemctl的相关知识,请移步到这一篇

https://blog.imgtouch.com/index.php/2023/05/21/centos8linuxsystemdsystemctl-guan-li-xi-tong-fu-wu/

2,Target 就是一个 Unit 组,包含许多相关的 Unit 

启动某个 Target 的时候,Systemd 就会启动里面所有的 Unit

可以理解成init的runlevel

 

3,systemd类似运行级别的target有哪些?

poweroff.target (相当于runlevel 0)      关闭电源
rescue.target (相当于runlevel 1)        急救
multi-user.target  (相当于runlevel 3)   多用户命令行
graphical.target(相当于runlevel 5)      图形界面
reboot.target(相当于runlevel 6)         重启

 

说明:刘宏缔的架构森林是一个专注架构的博客,

网站:https://blog.imgtouch.com
本文: https://blog.imgtouch.com/index.php/2023/05/21/centos8linux-yong-systemctl-guan-li-yun-xing-ji-bie/

         对应的源码可以访问这里获取: https://github.com/liuhongdi/

 说明:作者:刘宏缔 邮箱: 371125307@qq.com

 

二,target相关的目录

1,默认的 RunLevel,位置是 /etc/systemd/system/default.target

它是一个符号链接,链接会链接到graphical.target(图形界面)或者multi-user.target(多用户命令行)

 

2,当设置一个unit为开机自启动时,可以看到:

   是为它创建符号链接到当前的target的对应目录下:

    例如: /etc/systemd/system/multi-user.target.wants

例子:

[root@blog ~]# systemctl enable mysqld.service
Created symlink /etc/systemd/system/multi-user.target.wants/mysqld.service → /usr/lib/systemd/system/mysqld.service.

 

例子:查看multi-user.target下自动启动的服务:

[root@blog ~]# ll /etc/systemd/system/multi-user.target.wants 

 

默认的 RunLevel(在 /etc/inittab 文件设置)现在被默认的 Target 取代,

位置是 /etc/systemd/system/default.target,

通常符号链接到graphical.target(图形界面)或者multi-user.target(多用户命令行)

例子:

[root@blog ~]# ll /etc/systemd/system/default.target
lrwxrwxrwx. 1 root root 37 Dec 25 11:33 /etc/systemd/system/default.target -> /lib/systemd/system/multi-user.target

 

三,查看默认的运行级别

[root@blog ~]$ systemctl get-default
multi-user.target

在另外一台图形界面的centos上查看

[root@centos8 ~]$ systemctl get-default
graphical.target

 

四,不重启机器而切换当前的运行级别

#isolate 用于切换当前的运行级别

#切换到multi-user.target(命令行界面)

[root@centos8 ~]$ systemctl isolate multi-user.target

 

#切换到graphical.target(图形界面)

[root@centos8 ~]$ systemctl isolate graphical.target

 

五,查看当前的运行级别:

1,切换到命令行界面

[root@centos8 liuhongdi]# systemctl isolate multi-user.target 

 

2,用runlevel查看当前的运行级别:

[root@centos8 liuhongdi]# runlevel
5 3

说明:5是前一个运行级别

         3是当前的运行级别

3,也可以用who -r命令

[root@centos8 liuhongdi]# who -r
run-level 3 2020-04-07 16:44 last=5

run-level 是当前的运行级别

last是上一个运行级别

 

六,修改默认的运行级别target

1,修改默认的运行级别:

#set-default  用来指定默认的运行级别

[root@centos8 ~]# systemctl set-default multi-user.target 
Removed /etc/systemd/system/default.target.
Created symlink /etc/systemd/system/default.target → /usr/lib/systemd/system/multi-user.target.

说明:我们可以看到:set-default 所做的操作:

把/usr/lib/systemd/system/multi-user.target创建符号链接到/etc/systemd/system/default.target

 

2,查看修改是否成功:

[root@centos8 ~]# systemctl get-default 
multi-user.target

 

3,修改成功后重启可以看到效果

 

七,查看一个运行级别下面所有的unit

1,

# list-dependencies: 分析指定target各unit之间的依赖关系,如果不指明target,则表示是默认的target

[root@blog ~]# systemctl list-dependencies multi-user.target
multi-user.target
● ├─aegis.service
● ├─aliyun.service
● ├─atd.service
● ├─auditd.service
● ├─chronyd.service
● ├─crond.service
● ├─dbus.service
● ├─dnf-makecache.timer
● ├─ecs_mq.service
● ├─irqbalance.service
● ├─libstoragemgmt.service
● ├─mcelog.service
● ├─mdmonitor.service 

说明: 各个service前的黑色圆点,如果是绿色,表示正在运行中,active

如果是黑色,表示是inactive

 

2,查看哪些target引用了当前运行级别的target

#--reverse

[root@blog ~]# systemctl list-dependencies multi-user.target --reverse
multi-user.target
● └─graphical.target

multi-user.target被graphical.target所引用

 

八,systemctl与关机/重启相关的命令

1,关闭cpu,但未关闭电源

[root@blog ~]# systemctl halt

 

2,关闭电源

[root@blog ~]# systemctl poweroff

  建议使用这个,这个会真正关闭电源

 

3,重启机器

[root@blog ~]# systemctl reboot

 

九,列出系统中包含的所有target

[root@blog ~]# systemctl list-unit-files --type=target 

 

十,查看centos的版本

[root@blog ~]$ cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core) 

 

posted @ 2020-04-11 11:05  刘宏缔的架构森林  阅读(2715)  评论(0编辑  收藏  举报