天天看點

centos(12)-systemctl服務管理daemon守護程序systemctl指令unit檔案安裝配置服務開啟服務

window每次開機時會自動開啟一些服務,還可以把自己的程式注冊為服務,在centos中也是一樣。

daemon守護程序

當一個服務開啟的時候,會啟動一個程式,這個程式是在背景執行的,不會影響目前界面。是以表面上開啟了一個服務,實際上是執行了一個程式,這個程式在linux中就被稱為守護程序daemon。在linux中用過mysql的人應該對mysqld不會陌生,結尾的那個d就是daemon,即mysql的守護程序。是以當你看到某個程式名字結尾,有一個莫名的d,多半就是daemon,比如下面的sshd。

systemctl指令

systemctl status sshd:檢視sshd服務的狀态,如下圖:

第二行:/usr/lib/systemd/system/sshd.service是服務的配置檔案,後面會講。檔案後面的enabled表示開機啟動,如果是disabled則不啟動。

第三行:running指正在運作中,如果是dead指沒有運作,也不會是綠色,也沒有後面的啟動時間和啟動資訊。

centos(12)-systemctl服務管理daemon守護程式systemctl指令unit檔案安裝配置服務開啟服務

systemctl start sshd:立即啟動sshd服務。

systemctl stop sshd:立即停止sshd服務。

systemctl restart sshd:立即重新開機sshd服務。

systemctl enable sshd:以後開機時啟動sshd服務。

systemctl disable sshd:以後開機時不啟動sshd服務。

注意:如果你把sshd服務stop掉,将無法再用putty連接配接伺服器,但已經連上的putty不會掉線。

unit檔案

上面說到每個服務有一個配置檔案,它也是unit檔案。unit有多種類型,這裡隻讨論service類型,即系統服務。

systemctl list-unit-files |grep ssh:檢視目前系統中,名字包含ssh的所有unit檔案清單。紅框中就是遠端連接配接的ssh服務,.service字尾即指service類型,紅框右邊的enabled指開機啟動,disabled指開機不啟動。圖中還有個static,指依賴其他服務喚醒才能啟動。

centos(12)-systemctl服務管理daemon守護程式systemctl指令unit檔案安裝配置服務開啟服務

systemctl list-units |grep ssh:檢視所有運作中的,名字中包括ssh的unit。如下圖,現在隻有sshd.service在運作。

centos(12)-systemctl服務管理daemon守護程式systemctl指令unit檔案安裝配置服務開啟服務

安裝配置服務

安裝服務實際上就是在/usr/lib/systemd/system/目錄建立一個.service字尾的unit檔案。比如上面說的/usr/lib/systemd/system/sshd.service,有興趣可以用cat指令檢視,其内容這裡不讨論。我隻講一個最簡配置,以tomcat為例,現在建立/usr/lib/systemd/system/tomcatd.service檔案,配置如下:

[Service]
Type=forking
ExecStart=/home/wb/pro/tomcat/bin/startup.sh
User=wb

[Install]
WantedBy=multi-user.target
           

Type=forking:Type是設定啟動方法,fork是什麼參考11篇,大多數程式都是以fork的方式啟動。注意:spring boot項目的Type=simple,即簡單方式,如果不配置Type預設就是simple。因為spring boot項目不是程式,隻是一個jar包。是以不是以fork子程序的方式來啟動,而是以java -jar指令直接啟動。

ExecStart:指定啟動程式,即tomcat的startup.sh,sh是shell腳本,相當于window中的startup.bat檔案。另外,我用root安裝了java環境。

User:設定以wb使用者的身份啟動tomcat,如果不設定User預設是root。差別就在于程式運作期間,會生成一些日志以及資料檔案,這些檔案的權限擁有者就是這個User設定的使用者。

WantedBy=multi-user.target:可以了解為指定開機時啟動這個服務,我們自己安裝的程式基本上都要配這個。上面講的static服務,就是沒有配置[Install]下的内容,是以無法開機自啟動,需要被喚醒。

開啟服務

systemctl daemon-reload:當修改過服務的配置檔案後,需要執行這個指令重載配置。之後enable設定開機啟動,start立即開啟。tomcatd.service就是配置檔案名,這裡可以省略.service字尾。

centos(12)-systemctl服務管理daemon守護程式systemctl指令unit檔案安裝配置服務開啟服務

注意:此時在window中通路虛拟機 ip:8080,看不到tomcat首頁,因為8080端口被預設的防火牆攔截了。下篇會介紹防火牆

繼續閱讀