一、systemd簡介
systemd是一種Linux系統管理工具,用於啟動、停止、管理守護進程、解決系統啟動問題以及其他系統和服務管理任務。
與SysV init腳本相比,systemd使用分離的單元(unit)文件代替了腳本,具有更強大的控制和配置能力。
在Linux系統上使用systemd來管理系統服務可以提高系統管理的效率和複雜性,也可以提供更好的調試和故障排除功能。
二、systemd應用
1. 創建和管理服務
在Linux系統上,可以通過systemctl命令來啟動、停止、重啟、重新載入、禁用、啟用和查看系統服務狀態。
創建systemd服務的步驟如下:
1. 創建服務的description文件(.service):
# touch /etc/systemd/system/my_service.service
2. 編寫服務的配置
[Unit]
Description=My Service
After=network-online.target
Wants=network-online.target
[Service]
User=root
ExecStart=/usr/bin/my_service
[Install]
WantedBy=multi-user.target
3. 重新載入systemctl配置
# systemctl daemon-reload
4. 啟用服務
# systemctl enable my_service
5. 啟動服務
# systemctl start my_service
2. 管理進程和socket
systemd可以通過socket和進程(process)的方式來控制系統服務,使用socket可以實現更快的服務響應和更少的系統資源佔用。同時,systemd還可以使用cgroups來管理和限制服務進程的資源。
使用socket管理服務的步驟如下:
1. 創建socket文件(.socket)
# touch /etc/systemd/system/my_service.socket
2. 編寫socket的配置
[Unit]
Description=My Service Socket
[Socket]
ListenStream=192.168.1.1:9999
[Install]
WantedBy=sockets.target
3. 創建服務文件(.service)
# touch /etc/systemd/system/my_service.service
4. 編寫服務的配置
[Unit]
Description=My Service
After=network-online.target
Wants=network-online.target
[Service]
User=root
ExecStart=/usr/bin/my_service
Sockets=my_service.socket
[Install]
WantedBy=multi-user.target
5. 重新載入systemctl配置
# systemctl daemon-reload
6. 啟用服務
# systemctl enable my_service.socket
7. 啟動服務
# systemctl start my_service.socket
使用進程管理服務的步驟如下:
1. 創建服務文件(.service)
# touch /etc/systemd/system/my_service.service
2. 編寫服務的配置
[Unit]
Description=My Service
After=network-online.target
Wants=network-online.target
[Service]
User=root
ExecStart=/usr/bin/my_service
CPUAccounting=true
MemoryAccounting=true
[Install]
WantedBy=multi-user.target
3. 重新載入systemctl配置
# systemctl daemon-reload
4. 啟用服務
# systemctl enable my_service
5. 啟動服務
# systemctl start my_service
3. 使用systemd-timers來管理系統任務
systemd-timers可以作為一個簡單而靈活的任務管理器,用於計劃運行和定時任務的執行。systemd-timers功能非常強大,可以實現定時執行命令、重複運行任務等作業調度功能。
systemd-timers是基於systemd的,因此可以像管理其他服務一樣管理它們。
使用systemd-timers的步驟如下:
1. 創建定時任務文件(.timer)
# touch /etc/systemd/system/my_timer.timer
2. 編寫定時任務的配置
[Unit]
Description=My Timer
[Timer]
OnCalendar=*-*-* 12:30:00
Unit=my_service.service
[Install]
WantedBy=timers.target
3. 創建服務文件(.service)
# touch /etc/systemd/system/my_service.service
4. 編寫服務的配置
[Unit]
Description=My Service
After=network-online.target
Wants=network-online.target
[Service]
User=root
ExecStart=/usr/bin/my_service
[Install]
WantedBy=multi-user.target
5. 重新載入systemctl配置
# systemctl daemon-reload
6. 啟用定時任務
# systemctl enable my_timer.timer
7. 啟動定時任務
# systemctl start my_timer.timer
三、總結
systemd是一個非常強大的Linux系統管理工具,可以用來管理系統和服務,實現更方便的操作和配置,同時也提供了更強大的監控和故障排除功能。
通過創建和管理服務、管控進程和socket、以及使用systemd-timers管理系統任務,我們可以更進一步提升Linux系統的服務管理能力。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/278856.html