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內核,不管是速度還是穩定性都提升不少。
轉載請注明出處:http://blog.csdn.net/yuanguozhengjust/article/details/38019923