1. 程式人生 > >RHEL/CentOS 7.x如何啟動/關閉、啟用/禁用服務? 修改系統執行級別

RHEL/CentOS 7.x如何啟動/關閉、啟用/禁用服務? 修改系統執行級別

 一、Services使用了systemd來代替sysvinit管理

  1、systemd的服務管理程式:

  systemctl是主要的工具,它融合之前service和chkconfig的功能於一體。可以使用它永久性或只在當前會話中啟用/禁用服務。

  systemctl可以列出正在執行的服務狀態:

  systemd-cgls以樹形列出正在執行的程序,它可以遞迴顯示控制組內容。

  2、如何啟動/關閉、啟用/禁用服務?

  啟動一個服務:systemctl start postfix.service

  關閉一個服務:systemctl stop postfix.service

  重啟一個服務:systemctl restart postfix.service

  顯示一個服務的狀態:systemctl status postfix.service

  在開機時啟用一個服務:systemctl enable postfix.service

  在開機時禁用一個服務:systemctl disable postfix.service

  檢視服務是否開機啟動:systemctl is-enabled postfix.service;echo $?

  檢視已啟動的服務列表:systemctl list-unit-files|grep enabled

  說明:啟用服務就是在當前 runlevel 的配置檔案目錄/etc/systemd/system/multi-user.

target.wants/裡,建立/usr/lib/systemd/system裡面對應服務配置檔案的軟連結;禁用服務就是刪除此軟連結:

  查看了/usr/lib/systemd/system 裡的檔案,語法跟舊版/etc/init.d/裡的系統服務指令碼完全不同了。

  二、修改系統執行級別:

  1、systemd使用比sysvinit的執行級更為自由的target替代。第3執行級用multi-user.target替代。第5執行級用graphical.target替代。runlevel3.target和runlevel5.target分別是指向 multi-user.target和graphical.target的

符號連結

  可以使用下面的命令切換到 執行級別3 :

  systemctl isolate multi-user.target或systemctl isolate runlevel3.target

  可以使用下面的命令切換到 執行級別5 :

  systemctl isolate graphical.target或systemctl isolate runlevel5.target

  2、如何改變預設執行級別?

  systemd使用連結來指向預設的執行級別。在建立新的連結前,可以通過下面命令刪除存在的連結: rm /etc/systemd/system/default.target

  預設啟動執行級別3 :

  ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target

  預設啟動執行級別5 :

  ln -sf /lib/systemd/system/graphical.target/etc/systemd/system/default.target

  systemd不使用/etc/inittab檔案。

  3、如何檢視當前執行級別?

  舊的runlevel命令在systemd下仍然可以使用。可以繼續使用它,儘管systemd使用 target 概念(多個的 target 可以同時啟用)替換了之前系統的runlevel。

  等價的systemd命令是systemctl list-units type=target

  三、其他配置工具:

  1、setup和ntsysv工具還是保留了,但是功能已大大減弱,以前ntsysv工具可以控制所有系統服務的自啟動,現在只能控制少部分服務。

  2、/etc/resolv.conf這個DNS配置檔案沒變。

  3、/etc/sysconfig/network-scripts/ifcfg-ens192網絡卡配置檔名字和一些選項有所變化。

  4、引導方式改用grub2引導,grub2有如下特點:1、模組化設計;2、支援多體系硬體架構;3、支援國際化多語言;4、獨立記憶體管理;5、支援指令碼語言

  附:systemd簡介

  systemd是Linux下的一種init軟體,由Lennart Poettering帶頭開發,並在LGPL 2.1及其後續版本許可證下開源釋出。其開發目標是提供更優秀的框架以表示系統服務間的依賴關係,並依此實現系統初始化時服務的並行啟動,同時達到降低Shell的系統開銷的效果,最終代替現在常用的System V與BSD風格init程式。

  與多數發行版使用的System V風格init相比,systemd採用了以下新技術:

  採用Socket啟用式與匯流排啟用式服務,以提高相互依賴的各服務的並行執行效能;

  用cgroups代替PID來追蹤程序,以此即使是兩次fork之後生成的守護程序也不會脫離systemd的控制。

  從設計構思上說,由於systemd使用了cgroup與fanotify等元件以實現其特性,所以只適用於Linux。