2021-05-12 14:32:11
CentOS 7下systemd管理學習筆記
2020-06-16 17:43:27
CentOS 7的一個巨大的變動就是用systemd取代了原來的System V init。systemd是一個完整的軟體包,安裝完成後有很多物理檔案組成,大致分布為,組態檔位於/etc/systemd這個目錄下,設定工具命令位於/bin,和/sbin這兩個目錄下,預先準備的備用組態檔位於/lib/systemd目錄下,還有庫檔案和幫助手冊等等。這是一個龐大的軟體包。詳情使用rpm -ql systemd即可檢視。
systemd已經不僅僅是一個啟動管理軟體,而且是一個綜合性的服務管理軟體,它將逐漸成為一個多功能的系統環境,能夠處理非常多的系統管理任務,有人甚至將它看作一個作業系統。
本文並非系統介紹systemd,而是總結出一些管理知識要點備忘。
獲取當前預設的target:systemctl get-default
systemd新增新的unit(daemon):
也就是採用systemd來管理,與/sbin/chkconfig --add foo相當
把新生成的foo.service 放到/usr/lib/systemd/system/下面,然後採用load命令匯入
systemctl load foo.service
systemctl daemon-reload //全部重新匯入
刪除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'
關於service單元組態檔
Description是對服務的描述,方便記憶和閱讀,一般來說這裡可以隨心所欲的。
Wants是服務項的啟動依賴那些項。
Type是服務的型別,有simple,forking,oneshot,dbus,notify,idle。其中我們常用的型別有simple,forking,oneshot。simple 是預設,這是最簡單的服務型別。意思就是說啟動的程式就是主體程式,這個程式要是退出那麼一切都退出。forking 標準 Unix Daemon 使用的啟動方式。啟動程式後會呼叫 fork() 函數,把必要的通訊頻道都設定好之後父進程退出,留下守護精靈的子進程。oneshot種服務型別就是啟動,完成,沒進程了。
ExecStart是啟動指令碼的路徑和引數,引數和指令碼之間用空格分割。
Restart是設定啟動項是否需要重新啟動,有no,on-success,on-failure,on-abnormal,on-watchdog,on-abort,always。這些選項就是他們字面意思,abnormal意思是反常的,看文件裡面說除了信號SIGHUP,SIGINT,SIGTERM,SIGPIPE以外其他信號終止的,都是反常的包含code dump,操作超時等。
Wants是服務項的啟動依賴那些項。
Type是服務的型別,有simple,forking,oneshot,dbus,notify,idle。其中我們常用的型別有simple,forking,oneshot。simple 是預設,這是最簡單的服務型別。意思就是說啟動的程式就是主體程式,這個程式要是退出那麼一切都退出。forking 標準 Unix Daemon 使用的啟動方式。啟動程式後會呼叫 fork() 函數,把必要的通訊頻道都設定好之後父進程退出,留下守護精靈的子進程。oneshot種服務型別就是啟動,完成,沒進程了。
ExecStart是啟動指令碼的路徑和引數,引數和指令碼之間用空格分割。
Restart是設定啟動項是否需要重新啟動,有no,on-success,on-failure,on-abnormal,on-watchdog,on-abort,always。這些選項就是他們字面意思,abnormal意思是反常的,看文件裡面說除了信號SIGHUP,SIGINT,SIGTERM,SIGPIPE以外其他信號終止的,都是反常的包含code dump,操作超時等。
WantBy指服務在何種情況下面會被啟動,例如上面multi-user.target指的是多使用者環境。
開機不啟動unit
systemctl disable httpd.service
刪除/etc/systemd/system/multi-user.target.wants下的軟連結
檢視開機是否啟動
systemctl is-enabled xx.service #查詢服務是否開機啟動
systemd檢視開機自啟動的程式
相當於chkconfig --list
ls /etc/systemd/system/multi-user.target.wants/
檢視systemd單元載入及活動情況
systemctl
顯示啟動失敗的單元
systemctl --failed
檢視systemd管理的所有單元
systemctl list-unit-files
CentOS7/RHEL7 systemd詳解 http://www.linuxidc.com/Linux/2015-04/115937.htm
為什麼systemd會被如此迅速的採用? http://www.linuxidc.com/Linux/2014-08/105789.htm
systemd 與 sysVinit 彩版對照表 http://www.linuxidc.com/Linux/2014-09/106455.htm
太有用了!用systemd命令來管理Linux系統! http://www.linuxidc.com/Linux/2014-09/106490.htm
淺析 Linux 初始化 init 系統,第 3 部分: Systemd http://www.linuxidc.com/Linux/2014-12/110383.htm
本文永久更新連結地址:http://www.linuxidc.com/Linux/2016-04/130413.htm
相關文章