centos8使用systemctl管理運行級別


一,什么是systemd的target?

1,關於systemd/systemctl的相關知識,請移步到這一篇

https://www.cnblogs.com/architectforest/p/12678142.html

 

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://www.cnblogs.com/architectforest

         對應的源碼可以訪問這里獲取: 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) 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM