詳細文檔,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 系統服務腳本目錄:
有系統(system)和用戶(user)之分,
如需要開機沒有登陸情況下就能運行的程序,存在系統服務(system)里,即:
反之,用戶登錄后才能運行的程序,存在用戶(user)里
服務以.service結尾。
這邊以nginx開機運行為例
1.建立服務文件
[Unit]:服務的說明
Description:描述服務
After:描述服務類別
[Service]服務運行參數的設置
Type=forking是后台運行的形式
ExecStart為服務的具體運行命令
ExecReload為重啟命令
ExecStop為停止命令
PrivateTmp=True表示給服務分配獨立的臨時空間
注意:[Service]的啟動、重啟、停止命令全部要求使用絕對路徑
[Install]服務安裝的相關設置,可設置為多用戶
2.保存目錄
以754的權限保存在目錄:
3.設置開機自啟動
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
