第11章 服務管理

来源:http://www.cnblogs.com/f-ck-need-u/archive/2017/06/21/7059321.html
-Advertisement-
Play Games

本文目錄: 11.1 服務的概念 11.2 管理獨立守護進程 11.3 管理服務的開機自啟動 11.4 管理xinetd及相關瞬時守護進程 11.5 CentOS 7上管理服務 CentOS 7和CentOS 6管理服務的方式完全不同。本文先說明CentOS 6上的管理方式,在最後列出CentOS ...



本文目錄:

11.1 服務的概念

11.2 管理獨立守護進程

11.3 管理服務的開機自啟動

11.4 管理xinetd及相關瞬時守護進程

11.5 CentOS 7上管理服務


CentOS 7和CentOS 6管理服務的方式完全不同。本文先說明CentOS 6上的管理方式,在最後列出CentOS 7上服務管理方式。

11.1 服務的概念

服務是向外提供服務的進程,一般來說都會放在後臺,既然要持續不斷的提供外界隨時發來的服務請求,服務進程就需要常駐在記憶體中,且不應該和終端有關,否則終端退出服務程式就退出了。另外,要能夠接待外界的請求為外界提供服務,那麼就需要有個專屬於這個服務的"服務視窗",這個服務視窗就是埠號,通過埠號就能找到服務的提供者。

提供服務的一端叫做服務端,向服務端請求服務的叫做客戶端。首先,服務端啟動服務進程,此時將開放對應的埠號;然後客戶端指定服務端IP地址和埠號向該服務端發起請求,服務端所在主機的內核接收到請求數據包,然後分析數據包發現請求的是某某埠號,內核知道該埠號是哪個應用程式監聽的埠,所以將請求報文發送給對應的應用程式,應用程式收到報文後,將和客戶端建立連接,併進行數據傳輸。

另外需要註意的是,並非所有服務都總是提供埠號的,例如xinetd這個服務,只有在需要的時候才接管相應的埠,如rsync監聽埠為222時,那麼請求rsync時,xinetd在監聽過程中的埠號就是222。在不被請求的時候,xinetd是沒有埠號的。

 

在Linux中,服務分為獨立守護進程和超級守護進程。獨立守護進程是自行監聽在後臺的,基本上所有的服務都是獨立守護進程類的服務。超級守護進程專指xinetd這個服務,這個服務代為管理著一些特殊的服務,這類服務在被請求的時候才會由xinetd通知它啟動服務,服務提供完畢後就關閉服務,這類服務稱為瞬時守護進程,即只存在於瞬時。

但要明白,超級守護進程xinetd本身是一個常駐記憶體的獨立守護進程,因為它要監聽來自外界對其管理的瞬時守護進程的請求。只不過一般不工作的時候,xinetd不占用埠號,在工作的時候它占用被請求的瞬時守護進程的埠號,並處於監聽狀態。

11.2 管理獨立守護進程

在CentOS 6上,所有的服務腳本都在/etc/rc.d/init.d/目錄下,/etc/init.d/是它的軟鏈接。在此目錄下的腳本都是LSB風格的腳本,它們基本上都能接受start/stop/restart/reload/status等參數。

[root@xuexi tmp]# ls /etc/init.d
abrt-ccpp         cpuspeed   irqbalance    messagebus  psacct       saslauthd
abrtd             crond      kdump         netconsole  quota_nld    single
abrt-oops         functions  killall       netfs       rdisc        smartd
acpid             haldaemon  lvm2-lvmetad  network     restorecond  sshd
atd               halt       lvm2-monitor  ntpd        rngd         svnserve
auditd            ip6tables  mcelogd       ntpdate     rsyslog      sysstat
blk-availability  iptables   mdmonitor     postfix     sandbox      udev-post

要管理獨立守護進程類的服務

/etc/init.d/service_name   restart|start|stop|status    # 方法一
service  service_name    restart|start|stop|status    # 方法二

要讓服務能夠被service命令管理,將其服務腳本放在/etc/init.d目錄下即可。

11.3 管理服務的開機自啟動

chkconfig命令能管理/etc/init.d/目錄下存在且腳本的內容滿足一定條件的服務。

要能讓chkconfig管理服務的開機是否自啟動行為,只需將腳本放在/etc/init.d目錄下,然後在腳本的前部加上chkconfig行和description行。如:

#!/bin/bash

# chkconfig: - 85 15
# description: The Apache HTTP Server is an efficient and extensible

這兩行必須在所有非註釋行的前面,且這兩行必須得被"註釋"。其中chkconfig行"-"表示適用於運行級別123456上,85表示開機啟動時,它的啟動順序為85,15表示關機停止服務時,它的停止順序為15。description行隨便給一點描述信息就可以,但是必須得給"description:"關鍵字。

然後,就可以有chkconfig來管理服務的開機自啟動了。

chkconfig [--add | --del] <name>  # 將/etc/init.d中可以被chkconfig管理的服務添加到chkconfig的管理列表中,或者從列表中刪除
chkconfig [--list] [name]         # 列出指定名稱的服務的開啟自啟動信息。name可以使用all來表示列出所有chkconfig管理列表中的服務
chkconfig [--level <levels>] <name> <on|off|reset>  # 將指定名稱的服務在指定級別上打開開機自啟動或關閉開機自啟動功能。
                                                    # reset則表示重置為腳本中指定的級別

當然,除了chkconfig可以管理開機自啟動,將啟動命令放在/etc/rc.d/rc.local文件中也是可以的。

11.4 管理xinetd及相關瞬時守護進程

11.4.1 管理瞬時守護進程

該類服務不能直接使用service命令來啟動。只能去/etc/xinetd.d/目錄下的對應文件中進行設置(當然,也可以在/etc/xinetd.conf中配置),然後由xinetd進行管理。

首先安裝xinetd程式。

[root@xuexi tmp]# yum -y install xinetd

[root@xuexi tmp]# chkconfig --list
......省略
xinetd          0:off   1:off   2:off   3:on    4:on    5:on    6:off

xinetd based services:
        chargen-dgram:  off
        chargen-stream: off
        daytime-dgram:  off
        daytime-stream: off
        discard-dgram:  off
        discard-stream: off
        echo-dgram:     off
        echo-stream:    off
        rsync:          off
        tcpmux-server:  off
        time-dgram:     off
        time-stream:    off

首先得保證xinetd是已經工作在後臺的。

service xinetd start

然後管理瞬時守護進程,該類服務比較特別,其自啟動狀態和服務運行狀態是同步的,也就是說chkconfig設置了其自啟動則表示啟動該服務,否則為停止該服務。另外,對其指定級別是無效的,它們的啟動級別繼承與xinetd的啟動級別,並且xinetd會接管其觸發的瞬時守護進程的埠號。

例如啟動rsync這個瞬時守護進程。

chkconfig rsync on

11.4.2 瞬時守護進程的配置

瞬時守護進程受兩個配置文件控制,一個是xinetd的配置文件/etc/xinetd.conf提供預設配置,一個是/etc/xinetd.d/下的配置文件針對對應的服務提供配置。

例如配置rsync,以下是/etc/xinetd.d/rsync的預設配置。

[root@xuexi tmp]# vi /etc/xinetd.d/rsync
# default: off      
# description: The rsync server is a good addition to an ftp server, as it \
#       allows crc checksumming etc.
service rsync        # 定義rsync服務,名稱要和/etc/xinetd.d/下的文件同名
{
        disable         = yes      # yes表示不啟動,no表示啟動,等價於chkconfig rsync {on|off},所以這裡設置後將直接在chkconfig中生效
        flags           = IPv6     # 不用管
        socket_type     = stream   # 這代表的是tcp類型的套接字
        wait            = no       # 該服務是單線程還是多線程的,表現形式是超出的請求是否進行等待,no表示多線程
        user            = root     # 以什麼身份運行rsync
        server          = /usr/bin/rsync # 服務程式
        server_args     = --daemon # 服務程式啟動時傳遞的參數
        log_on_failure  += USERID  # 連接失敗的日誌記錄,+表示在全局對應的條目上新增此處指定的USERID
}

除此之外,還有幾個選項:

【訪問控制選項】以下兩個控制列表中最好不要出現衝突的地址。
only_from:定義允許連接的訪問控制列表,支持單IP,CIDR格式和長mask格式的網段,主機名hostname,域DOMAIN(.abc.com)
no_access:定義不允許訪問的列表,語法格式同only_from

【監聽地址】
bind       = ip_addr
interface  = ip_addr  # 等價於bind

【資源控制】
cps=args1 args2
instances=N
per_source=N

這3個選項的意義如下圖。

11.5 CentOS 7上管理服務

service name start    ==> systemctl start name.service

service name stop    ==> systemctl stop name.service

service name restart ==> systemctl restart name.service

service name status  ==> systemctl status name.service

 

查看服務是否激活(在運行中):systemctl is-active name.service

查看所有已經激活                 :systemctl list-units --type service

查看所有服務                        :systemctl list-units --type service --all

 

設置開機自啟動:chkconfig name on ==> systemctl enable name.service

禁止開機自啟動:chkconfig name off ==> systemctl disable name.service

查看服務是否開機自啟動:chkconfig --list name ==> is-enabled name.service

查看所有服務的開機自啟動狀態:chkconfig --list ==> systemctl list-unit-files --type service

 

回到系列文章大綱:http://www.cnblogs.com/f-ck-need-u/p/7048359.html

轉載請註明出處:http://www.cnblogs.com/f-ck-need-u/p/7059321.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • decode()函數是ORACLE PL/SQL是功能強大的函數之一,目前還只有ORACLE公司的SQL提供了此函數,其他資料庫廠商的SQL實現還沒有此功能。 DECODE函數是ORACLE PL/SQL是功能強大的函數之一,目前還只有ORACLE公司的SQL提供了此函數,其他資料庫廠商的SQL實現 ...
  • 1.ctrl+q 打開查詢視窗2.ctrl+/ 註釋sql語句3.ctrl+shift +/ 解除註釋4.ctrl+r 運行查詢視窗的sql語句5.ctrl+shift+r 只運行選中的sql語句6.F6 打開一個MySQL命令行視窗7.ctrl+l 刪除一行8.ctrl+n 打開一個新的查詢視窗9 ...
  • 1.登陸mysql 2.e mysql; 3.比如用戶名密碼為root/root。 你想root使用root從任何主機連接到mysql伺服器的話。 @’ ’後面加ip地址一般般為localhost或者127.0.0.1 * %代表任意ip都可以訪問。 GRANT ALL PRIVILEGES ON ...
  • 本文主要翻譯自 http://hadoop.apache.org/docs/r2.8.0/hadoop-project-dist/hadoop-common/SecureMode.html 譯註:之所以不翻譯為安全模式,是因為namenode啟動的時候有個safemode,如果都翻譯為安全模式,會有 ...
  • 1.檢查當前版本,沒有的話用yum安裝rpm -qa subversion 2.安裝yum install subversion -y2.建庫mkdir -p /home/svn/projectsvnadmin create /home/svn/project3 cd /home/svn/proje ...
  • 去官網找到合適的版本,可以直接下載下來,再用fxp上傳,也可以直接以下麵這種方式下載:$ wget http://download.redis.io/releases/redis-3.2.9.tar.gz $ tar xzf redis-3.2.9.tar.gz $ cd redis-3.2.9 $ ...
  • error: unrecognized command line option ‘-fuse-ld=gold’ linux qt5 ...
  • 本文目錄: 12.1 配置定時任務 12.2 crontab file 12.3 crond命令的調試 12.4 精確到秒的任務計劃 12.1 配置定時任務 首先需弄清的概念: (1).crond是一個daemon類程式,路徑為/usr/sbin/crond。預設會以後臺方式啟動,service或s ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...