1. 程式人生 > >Linux入門進階第四天——服務管理

Linux入門進階第四天——服務管理

啟動方式 都是 重新 包括 load running cron 服務類 電池

以下均基於CentOS6.3,其中有部分命令已經過時,在CentOS7中不再使用,請註意

  【更新】:CentOS7改變:

CentOS 7.0中一個最主要的改變,就是切換到了systemd。它用於替代紅帽企業版Linux前任版本中的SysV和Upstart,對系統和服務進行管理。systemd兼容SysV和Linux標準組的啟動腳本。
Systemd是一個Linux操作系統下的系統和服務管理器。它被設計成向後兼容SysV啟動腳本,並提供了大量的特性,如開機時平行啟動系統服務,按需啟動守護進程,支持系統狀態快照,或者基於依賴的服務控制邏輯。
 
先前的使用SysV初始化或Upstart的紅帽企業版Linux版本中,使用位於
/etc/rc.d/init.d/目錄中的bash初始化腳本進行管理。而在RHEL 7/CentOS 7中,這些啟動腳本被服務單元取代了。服務單元以.service文件擴展結束,提供了與初始化腳本同樣的用途。要查看、啟動、停止、重啟、啟用或者禁用系統服務,你要使用systemctl來代替舊的service命令。 註:為了向後兼容,舊的service命令在CentOS 7中仍然可用,它會重定向所有命令到新的systemctl工具——總管。 使用systemctl來啟動/停止/重啟服務 要啟動一個服務,你需要使用如下命令: # systemctl start httpd.service 這會啟動httpd服務,就我們而言,Apache HTTP服務器。 要停掉它,需要以root身份使用該命令: # systemctl stop httpd.service 要重啟,你可以使用restart選項,如果服務在運行中,它將重啟服務;如果服務不在運行中,它將會啟動。
你也可以使用try
-start選項,它只會在服務已經在運行中的時候重啟服務。同時,reload選項你也可以有,它會重新加載配置文件。 # systemctl restart httpd.service # systemctl try-restart httpd.service # systemctl reload httpd.service 我們例子中的命令看起來會像下面這樣: 檢查服務狀態 要檢查服務狀態,你可以使用status選項,看這裏: # systemctl status httpd.service 輸出結果就像這樣: 它會告訴你運行中的服務的方方面面。 使用啟用
/禁用服務來控制開機啟動 你也可以使用enable/disable選項來控制一個服務是否開機啟動,命令如下: # systemctl enable httpd.service # systemctl disable httpd.service

  更多systemd的相關介紹,參考:http://blog.51cto.com/xiaoli110/1629533

  更多命令等其他的差異,參考:https://www.cnblogs.com/bethal/p/5945026.html

一,大綱

   技術分享圖片

二、簡介與分類

  1.運行級別

    0-6一共6個運行級別

# 0 - 停機 ,機器關閉。
# 1 - 單用戶模式 。就像Win9x下的安全模式類似
# 2 - 多用戶,但是沒有NFS  進入無網絡服務的多用戶模式
# 3 - 完全多用戶模式 ,是標準的運行級。
# 4 - 沒有用到 ,一般不用,在一些特殊情況下可以用它來做一些事情。例如在筆記本 電腦的電池用盡時,可以切換到這個模式來
# 5 - X11   ,進到X Window系統了。 
# 6 - 重新啟動 ,運行init 6機器就會重啟
init一般在系統啟動時自動運行,也可以由root用戶調用。它的作用是切換系統的運行狀態。
它的命令格式是:init NUM〈回車〉,其中NUM表示1到6的任一數字

  //3級別就是我們常用的字符界面(默認級別),7級別就是我們的標準的圖形界面

  當然是可以設置默認級別的,CentOS7的具體配置暫不列出(修改相關配置文件即可)

  2.服務的分類

技術分享圖片

  //絕大多數服務都是獨立的服務,xinetd是一個超級守護進程(CentOS7已基本棄用)

  centos7中的systemd服務類型分類:

技術分享圖片
擴展名 主要服務功能
.service
一般服務類型 (service unit):主要是系統服務,包括服務器本身所需要
的本機服務以及網絡服務都是!比較經常被使用到的服務大多是這種類
型! 所以,這也是最常見的類型了!
.socket
內部程序數據交換的插槽服務 (socket unit):主要是 IPC (Inter-
process communication) 的傳輸訊息插槽檔 (socket file) 功能。 這種
類型的服務通常在監控訊息傳遞的插槽檔,當有通過此插槽檔傳遞訊息來
說要鏈接服務時,就依據當時的狀態將該用戶的要求傳送到對應的
daemon, 若 daemon 尚未啟動,則啟動該 daemon 後再傳送用戶的要
求。使用 socket 類型的服務一般是比較不會被用到的服務,因此在開機時
通常會稍微延遲啟動的時間 (因為比較沒有這麽常用嘛!)。一般用於本
機服務比較多,例如我們的圖形界面很多的軟件都是通過 socket 來進行本
機程序數據交換的行為。 (這與早期的 xinetd 這個 super daemon 有部份
的相似喔!)
.target
執行環境類型 (target unit):其實是一群 unit 的集合,例如上面表格中
談到的 multi-user.target 其實就是一堆服務的集合~也就是說, 選擇執行
multi-user.target 就是執行一堆其他 .service 或/及 .socket 之類的服務就是
了!
.mount
.automount
文件系統掛載相關的服務 (automount unit / mount unit):例如來自網絡
的自動掛載、NFS 文件系統掛載等與文件系統相關性較高的程序管理。
.path
偵測特定文件或目錄類型 (path unit):某些服務需要偵測某些特定的目
錄來提供佇列服務,例如最常見的打印服務,就是通過偵測打印佇列目錄
來啟動打印功能! 這時就得要 .path 的服務類型支持了!
.timer
循環執行的服務 (timer unit):這個東西有點類似 anacrontab 喔!不過
是由 systemd 主動提供的,比 anacrontab 更加有彈性!
View Code

  查看安裝的服務:

技術分享圖片

  //RPM包和源碼包的安裝位置是不同的,所以最好分開單獨對待

  3.服務與端口

  端口的概念:

技術分享圖片

  查看系統中開啟的服務:

技術分享圖片

技術分享圖片

  可以使用 netstjart -a查看所有

  其中:established,是已經連接的

三、RPM包服務管理

  1.獨立服務管理

    RPM包常見默認目錄(當然並非絕對,是由編寫此RPM的人員決定放在哪合理便放在哪):

技術分享圖片

    獨立服務的啟動方式:

技術分享圖片

  實例:

    查看所有腳本:

技術分享圖片

    使用絕對路徑啟動

技術分享圖片+後面的選項可以啟動重啟等

//有一個不能解析本機主機的報錯,不影響正常啟動

  例如:通過service啟動(推薦)

service httpd start

//必須註意,通過service啟動是redhat系列的才有此項,標準的啟動命令還是前一種。

  而中間的服務名之所以叫 httpd,指的是這是一個守護進程 deamon

  並且,service不能啟動源碼包(不是默認位置,無法正確找到服務腳本)

  更新】:

centos 7以後就用systemctl  start  httpd 了 ,systemctl代替service和chkconfig了,跟課程不太一樣,註意哦!

  有很多命令,CentOS7中都已改變,這裏就不列出如何自啟動的命令了(與CentOS6完全不同!)

  systemctl請參見:http://www.cnblogs.com/zhming26/p/6155201.html

  手冊大全請參見:http://man.linuxde.net/par/5

  2.xinetd服務

  基本已消失(此處就不展開了)

四、源碼包服務管理

  由於安裝位置的不同,默認的源碼包是不能使用RPM包的管理方式進行啟動的

  服務的啟動:

技術分享圖片

  //服務的安裝說明腳本裏就已經說明了如何啟動(一般都是通過絕對路徑找到啟動腳本進行啟動)

  服務的自啟動:

技術分享圖片

  示例:

技術分享圖片

  如何強行讓源碼包讓service(註意是centos6)識別

技術分享圖片

五、小結

  xmind思維導圖:

技術分享圖片

六、centOS7的補充服務管理——systemctl

  systemctl語法介紹:

[root@study ~]# systemctl [command] [unit]
command 主要有:
start :立刻啟動後面接的 unit
stop :立刻關閉後面接的 unit
restart :立刻關閉後啟動後面接的 unit,亦即執行 stop 再 start 的意思
reload :不關閉後面接的 unit 的情況下,重新載入配置文件,讓設置生效
enable :設置下次開機時,後面接的 unit 會被啟動
disable :設置下次開機時,後面接的 unit 不會被啟動
status :目前後面接的這個 unit 的狀態,會列出有沒有正在執行、開機默認執行否、登錄等信息等!
is-active :目前有沒有正在運行中
is-enable :開機時有沒有默認要啟用這個 unit
範例一:看看目前 atd 這個服務的狀態為何?
[root@study ~]# systemctl status atd.service
atd.service - Job spooling tools
Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled)
Active: active (running) since Mon 2015-08-10 19:17:09 CST; 5h 42min ago
Main PID: 1350 (atd)
CGroup: /system.slice/atd.service
└─1350 /usr/sbin/atd -f
Aug 10 19:17:09 study.centos.vbird systemd[1]: Started Job spooling tools.
# 重點在第二、三行喔~
# Loaded:這行在說明,開機的時候這個 unit 會不會啟動,enabled 為開機啟動,disabled 開機不會啟動
# Active:現在這個 unit 的狀態是正在執行 (running) 或沒有執行 (dead)
# 後面幾行則是說明這個 unit 程序的 PID 狀態以及最後一行顯示這個服務的登錄文件信息!
# 登錄文件信息格式為:“時間” “訊息發送主機” “哪一個服務的訊息” “實際訊息內容”
# 所以上面的顯示訊息是:這個 atd 默認開機就啟動,而且現在正在運行的意思!
範例二:正常關閉這個 atd 服務
[root@study ~]# systemctl stop atd.service
[root@study ~]# systemctl status atd.service
atd.service - Job spooling tools
Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled)
Active: inactive (dead) since Tue 2015-08-11 01:04:55 CST; 4s ago
Process: 1350 ExecStart=/usr/sbin/atd -f $OPTS (code=exited, status=0/SUCCESS)
Main PID: 1350 (code=exited, status=0/SUCCESS)
Aug 10 19:17:09 study.centos.vbird systemd[1]: Started Job spooling tools.
Aug 11 01:04:55 study.centos.vbird systemd[1]: Stopping Job spooling tools...
Aug 11 01:04:55 study.centos.vbird systemd[1]: Stopped Job spooling tools.
# 目前這個 unit 下次開機還是會啟動,但是現在是沒在運行的狀態中!同時,
# 最後兩行為新增加的登錄訊息,告訴我們目前的系統狀態喔!

Linux入門進階第四天——服務管理