歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 在CentOS 7上利用systemctl添加自定義系統服務

在CentOS 7上利用systemctl添加自定義系統服務

日期:2017/2/28 14:29:47   编辑:Linux教程

CentOS 7繼承了RHEL 7的新的特性,例如強大的systemctl,而systemctl的使用也使得以往系統服務的/etc/init.d的啟動腳本的方式就此改變,也大幅提高了系統服務的運行效率。但服務的配置和以往也發生了極大的不同,說實在的,變的簡單而易用了許多。

下面我們以利用forever來實現Node.js項目自啟動為例,初探CentOS 7的systemctl。

前提:Node.js環境已配置成功,forever包安裝成功,有一個能跑的Node.js程序。

CentOS 7的服務systemctl腳本存放在:/usr/lib/systemd/,有系統(system)和用戶(user)之分,像需要開機不登陸就能運行的程序,還是存在系統服務裡吧,即:/usr/lib/systemd/system目錄下

每一個服務以.service結尾,一般會分為3部分:[Unit]、[Service]和[Install],我寫的這個服務用於開機運行Node.js項目,具體內容如下:

[Unit]
Description=xiyoulibapi
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/node.js/pid
ExecStart=/usr/local/bin/forever start /node.js/xiyoulib/bin/www
ExecReload=/usr/local/bin/forever restart /node.js/xiyoulib/bin/www
ExecStop=/usr/local/bin/forever stop /node.js/xiyoulib/bin/www
PrivateTmp=true

[Install]
WantedBy=multi-user.target

[Unit]部分主要是對這個服務的說明,內容包括Description和After,Description用於描述服務,After用於描述服務類別

[Service]部分是服務的關鍵,是服務的一些具體運行參數的設置,這裡Type=forking是後台運行的形式,PIDFile為存放PID的文件路徑,ExecStart為服務的具體運行命令,ExecReload為重啟命令,ExecStop為停止命令,PrivateTmp=True表示給服務分配獨立的臨時空間,注意:[Service]部分的啟動、重啟、停止命令全部要求使用絕對路徑,使用相對路徑則會報錯!

[Install]部分是服務安裝的相關設置,可設置為多用戶的

服務腳本按照上面編寫完成後,以754的權限保存在/usr/lib/systemd/system目錄下,這時就可以利用systemctl進行配置了

首先,使用systemctl start [服務名(也是文件名)]可測試服務是否可以成功運行,如果不能運行則可以使用systemctl status [服務名(也是文件名)]查看錯誤信息和其他服務信息,然後根據報錯進行修改,直到可以start,如果不放心還可以測試restart和stop命令。

接著,只要使用systemctl enable xxxxx就可以將所編寫的服務添加至開機啟動即可。

我的腳本編寫方法參照了nginx的編寫方法,也可以根據其他功能類似的程序。

這樣看來,雖然systemctl比較陌生,但是其實比init.d那種方式簡單不少,而且使用簡單,systemctl能簡化的操作還有很多,現在也有不少的資料,看來RHEL/CentOS比其他的Linux發行版還是比較先進的,此次更新也終於捨棄了Linux 2.6內核,無論是速度還是穩定性都提升不少。

--------------------------------------分割線 --------------------------------------

Ubuntu 14.04 LTS 安裝 LNMP Nginx\PHP5 (PHP-FPM)\MySQL http://www.linuxidc.com/Linux/2014-05/102351.htm

Ubuntu 13.04 安裝 LAMP\Vsftpd\Webmin\phpMyAdmin 服務及設置 http://www.linuxidc.com/Linux/2013-06/86250.htm

CentOS 6.4 下的LNMP 生產環境搭建及安裝腳本 http://www.linuxidc.com/Linux/2013-11/92428.htm

生產環境實用之LNMP架構的編譯安裝+SSL加密實現 http://www.linuxidc.com/Linux/2013-05/85099.htm

LNMP 全功能編譯安裝 for CentOS 6.3筆記 http://www.linuxidc.com/Linux/2013-05/83788.htm

CentOS 6.3 安裝LNMP (PHP 5.4,MyySQL5.6) http://www.linuxidc.com/Linux/2013-04/82069.htm

在部署LNMP的時候遇到Nginx啟動失敗的2個問題 http://www.linuxidc.com/Linux/2013-03/81120.htm

Ubuntu安裝Nginx php5-fpm MySQL(LNMP環境搭建) http://www.linuxidc.com/Linux/2012-10/72458.htm

--------------------------------------分割線 --------------------------------------

更多CentOS相關信息見CentOS 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=14

Copyright © Linux教程網 All Rights Reserved