CentOS 7 設置自定義開機啟動,添加自定義系統服務


詳細文檔,http://www.linuxidc.com/Linux/2015-04/115937.htm

摘自:

http://www.centoscn.com/CentOS/config/2015/0507/5374.html

ystemd提供更優秀的框架以表示系統服務間的依賴關系
實現系統初始化時服務的並行啟動,同時達到降低Shell的系統開銷的效果
systemd的目標是:盡可能啟動更少進程;盡可能將更多進程並行啟動。
systemd盡可能減少對shell腳本的依賴。

systemd單位類型

(systemctl --type=單位類型,用來過濾單位):
服務(service):管理着后台服務;
掛載(mount)自動掛載(automount):用來掛載文件系統;
目票(target):運行級別;
套接字(socket):用來創建套接字,並在訪問套接字后,立即利用依賴關系間接地啟動另一單位;

開機服務管理

=================================================
systemd添加新的unit(daemon)
也就是采用systemd來管理,/sbin/chkconfig --add foo相當
把新生成的foo.service 放到/usr/lib/systemd/system/下面,然后采用load命令導入
systemctl load foo.service

刪除unit(daemon)
刪除一個unit沒有相應的命令,通常的做法是停掉daemon,然后刪除相應的配置文件。

開機啟動unit
systemctl enable postfix.service
增加由/usr/lib/systemd/system/到/etc/systemd/system/multi-user.target.wants/下的軟鏈接
ln -s '/usr/lib/systemd/system/postfix.service' '/etc/systemd/system/multi-user.target.wants/postfix.service'

開機不啟動unit
systemctl disable httpd.service
刪除/etc/systemd/system/multi-user.target.wants下的軟鏈接

查看開機是否啟動
systemctl is-enabled .service #查詢服務是否開機啟動

systemd查看開機自啟動的程序
相當於chkconfig --list
ls /etc/systemd/system/multi-user.target.wants/

查看systemd單元加載及活動情況
systemctl

顯示啟動失敗的單元
systemctl --failed

查看systemd管理的所有單元
systemctl list-unit-files

服務管理

=================================================
啟動服務
systemctl start httpd.service
關閉服務
systemctl stop httpd.service
重啟服務
systemctl restart httpd.service
重新加載
systemctl reload httpd.service
查看狀態
systemctl status httpd.service
包括啟動狀態、啟動時間、主進程及相關進程、相關日志

運行級別

=================================================
systemd用target替代了runlevel的概念,多個的 'target' 可以同時激活
systemd不使用/etc/inittab,如何查看系統默認的運行級別
ll /etc/systemd/system/default.target
查看這個軟鏈接真正指向的文件

如何查看系統的當前運行級別
runlevel依然可用
systemd的方法是:systemctl list-units --type=target

改變當前target,重啟無效
systemctl isolate graphical.target

修改默認運行級別
1.首先刪除已經存在的符號鏈接
rm /etc/systemd/system/default.target
2.默認級別轉換為3(文本模式)
systemctl enable multi-user.target
相當於ln -s /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
3.重啟
reboot

運行級別如下:
runlevel0.target -> poweroff.target
runlevel1.target -> rescue.target
runlevel2.target -> multi-user.target
runlevel3.target -> multi-user.target
runlevel4.target -> multi-user.target
runlevel5.target -> graphical.target
runlevel6.target -> reboot.target

Centos 系統服務腳本目錄:

[html] view plaincopyprint? 在CODE上查看代碼片 派生到我的代碼片
 
  1. /usr/lib/systemd/  

有系統(system)和用戶(user)之分,

如需要開機沒有登陸情況下就能運行的程序,存在系統服務(system)里,即:

[html] view plaincopyprint? 在CODE上查看代碼片 派生到我的代碼片
 
  1. /lib/systemd/system/  

反之,用戶登錄后才能運行的程序,存在用戶(user)里

服務以.service結尾。

這邊以nginx開機運行為例

1.建立服務文件

[html] view plaincopyprint? 在CODE上查看代碼片 派生到我的代碼片
 
  1. vim /lib/systemd/system/nginx.service  
[plain] view plaincopyprint? 在CODE上查看代碼片 派生到我的代碼片
 
  1. [Unit]  
  2. Description=nginx  
  3. After=network.target  
  4.    
  5. [Service]  
  6. Type=forking  
  7. ExecStart=/www/lanmps/init.d/nginx start  
  8. ExecReload=/www/lanmps/init.d/nginx restart  
  9. ExecStop=/www/lanmps/init.d/nginx  stop  
  10. PrivateTmp=true  
  11.    
  12. [Install]  
  13. WantedBy=multi-user.target  

 

 

[Unit]:服務的說明

Description:描述服務
After:描述服務類別

[Service]服務運行參數的設置

Type=forking是后台運行的形式
ExecStart為服務的具體運行命令
ExecReload為重啟命令
ExecStop為停止命令
PrivateTmp=True表示給服務分配獨立的臨時空間
注意:[Service]的啟動、重啟、停止命令全部要求使用絕對路徑

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

2.保存目錄

以754的權限保存在目錄:

[html] view plaincopyprint? 在CODE上查看代碼片 派生到我的代碼片
 
  1. /lib/systemd/system  

3.設置開機自啟動

 

[html] view plaincopyprint? 在CODE上查看代碼片 派生到我的代碼片
 
  1. systemctl enable nginx.service  

 

4.其他命令

 

 

任務 舊指令 新指令
使某服務自動啟動 chkconfig --level 3 httpd  on              systemctl enable httpd.service
使某服務不自動啟動 chkconfig --level 3 httpd off systemctl disable httpd.service
檢查服務狀態 service httpd status systemctl status httpd.service (服務詳細信息) 
systemctl is-active httpd.service (僅顯示是否 Active)
顯示所有已啟動的服務 chkconfig --list systemctl list-units --type=service
啟動某服務 service httpd start systemctl start httpd.service
停止某服務 service httpd stop systemctl stop httpd.service
重啟某服務 service httpd restart systemctl restart httpd.service

 

啟動nginx服務

systemctl start nginx.service

設置開機自啟動

systemctl enable nginx.service

停止開機自啟動

systemctl disable nginx.service

查看服務當前狀態

systemctl status nginx.service

重新啟動服務

systemctl restart nginx.service

查看所有已啟動的服務

systemctl list-units --type=service

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM