CentOS 7 0體驗與之前版本的不同

2022-05-22 05:54:07 字數 4126 閱讀 5810

rhel7和centos7出來有一段時間了,拿出點時間研究下,有幾個地方跟6和5系列相比改變比較大,估計不少童鞋有點不太習慣。下面簡要舉例說明改變比較大的要點:

一、centos的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

檢視已啟動的服務列表: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

預設啟動執行級別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。

更詳細的systemd介紹請參考:

四、其他發現:

初次啟動

裝完機後,開機進系統的介面換了,乍一看以為是兩個核心,原來有乙個是rescue選擇,而且按e後,會發現所有的grub.conf的資訊全出來了,好不容易找到核心啟動的地方,寫了個 1(要進單使用者模式),然後進了rescue模式。

字元介面

進系統後,是圖形介面,想進字元介面,結果找到/etc/inittab,發現幾乎是個空檔案,檔案中提示想改runlevel的話,可以把/lib/systemd/system/runlevel*.target 軟連到 /etc/systemd/system/default.target下(當然考過來,覆蓋也行),試了一下還行,能改到字元介面runlevel3。

配置網路和主機名

然後,想配置網路,進/etc/sysconfig/network-script/一看,我靠,網絡卡改名了enp1s5,好有趣,配置完網路後改主機名, 到/etc/sysconfig/network去改名字,發現這個檔案也是空的,按原6版本的去修改,重啟後沒效果,man了一下hostname, 發現7中改名要到/etc/hostname去改名字。

本地yum源和掛載

接著,想配置乙個本地yum源,配上後要掛光碟,手動掛上了,然後直接echo「mount ......」到rc.local中,畢竟是啟動執行指令碼,重啟之後竟然沒掛上,進去rc.local中看了一下,7中竟然要手動的把chmod +x rc.local, 是的,要手動加執行許可權,難道我之前裝的6以前的系統中這個都要手動加執行許可權,我不記得啊!!!! 當然,加了許可權後,開機後啟動執行了rc.local的mount命令。

lvm和xfs

後來,想著裝乙個lvm玩玩,於是啊就分割槽,格式化(特意格式化為了xfs),pv,vg,lv一步一步,都沒問題,然後想著放大,縮小,這時出問題了,執行resize2fs時,怎麼一直報superblock什麼的出錯,這是怎麼回事,然後man resize2fs一下,發現這命令只支援ext的檔案系統,我艹,那我裝系統是怎麼是lvm的,這個問題我還沒解決,應該有解決方法。

dhcp和服務

接著,想著裝乙個dhcp玩玩,驚奇的發現所有dhcp的包裝上之後,不能service dhcpd start,然後發現/etc/init.d/中竟然沒乙個dhcp類似的東西,畢竟6之前有dhcpd,dhcpd6,dhcrelay的,然後發現 /sbin/dhcpd有啟動檔案,難道,難道,以後的服務想service啟,都要手動自己編?錯了,是在/usr/lib/systemd/system/dhcpd.service,還要修改好多,然後加許可權,執行service 服務 restart/stop。。。。。。可以,但是指向了systemctl restart/start/stop 服務.service

iptables

又發現iptables這次也不是作為乙個服務在/etc/init.d/下面了,/sbin下有;

然後,然後,就沒有然後了,或許,真的是或許,發現新東西,再在這個日誌上更新吧,真的是或許。

對了,我還發現/etc/sysctl.conf也空了,想做個路由**都要到/proc/sys/net下

centos7 0體驗與之前版本的不同

編者注 本文作者作為乙個centos 6過來的系統管理員,在第一次體驗centos 7時,種種不適,不禁淚目。今天下午,沒事幹,在一台機器上裝了乙個centos7玩一玩,發現與之前版本有很大不同,不知道rhel7是不是也是這樣,畢竟現在centos屬於redhat了。首先是裝機時,以前的rhel一系...

Centos7 0及以後版本修改啟動級別

systemd使用比sysvinit的執行級別更為自由的target概念作為替代 第三執行級 multi user.target 第五執行級 graphical.target 前者是符號鏈結指向了後面的target runlevel3.target multi user.target runleve...

CentOS7 0以上版本linux防火牆問題

centos 7.0預設使用的是firewall作為防火牆,使用iptables來做防火牆,那麼必須重新設定一下 1 直接關閉防火牆 systemctl stop firewalld.service 停止firewall systemctl disable firewalld.service 禁止f...