本文将详细介绍Linux系统服务管理的基础知识,包括systemd服务管理工具。风哥教程参考Linux官方文档System administration章节内容,为读者提供全面的系统服务管理指南。
参考Red Hat Enterprise Linux 10官方文档中的System administration章节
Part01-基础概念与理论知识
1.1 系统服务概述
系统服务是Linux系统中运行的后台程序,它们在系统启动时自动启动,为系统提供各种功能。服务管理是系统管理的重要组成部分,包括服务的启动、停止、重启等操作。更多视频教程www.fgedu.net.cn
1.2 systemd概述
systemd是Linux系统的初始化系统和服务管理器,它是现代Linux发行版的默认初始化系统。systemd提供了并行启动、依赖管理、日志集成等功能,大大提高了系统启动速度和服务管理效率。
1.3 服务单元
systemd使用单元(unit)来管理系统资源,包括服务(. service)、套接字(.socket)、挂载点(.mount)等。服务单元文件定义了服务的启动、停止、重启等行为。
Part02-生产环境规划与建议
2.1 服务管理建议
服务管理建议:
- 只启用必要的服务
- 配置服务自动启动
- 监控服务运行状态
- 配置服务依赖关系
- 定期检查服务日志
2.2 服务优化建议
服务优化建议:
- 优化服务启动顺序
- 配置服务资源限制
- 禁用不必要的服务
- 配置服务超时时间
- 优化服务配置参数
2.3 安全建议
服务管理的安全建议:
- 限制服务访问权限
- 配置服务运行用户
- 配置服务资源限制
- 监控服务异常行为
- 定期更新服务软件
Part03-生产环境项目实施方案
3.1 服务基础操作
服务基础操作:
$ systemctl list-unit-files –type=service | head -20
UNIT FILE STATE
autovt@.service disabled
auditd.service enabled
chronyd.service enabled
crond.service enabled
dbus.service static
dm-event.service static
dmraid-activation.service static
dnf-makecache.service static
dnf-systemd.timer disabled
firewalld.service enabled
getty@.service enabled
initrd-cleanup.service static
initrd-parse-etc.service static
initrd-switch-root.service static
iprd.service static
kdump.service disabled
# 步骤2:查看运行中的服务
$ systemctl list-units –type=service –state=running
UNIT LOAD ACTIVE SUB DESCRIPTION
auditd.service loaded active running Security Auditing Service
chronyd.service loaded active running NTP client/server
crond.service loaded active running Command Scheduler
dbus.service loaded active running D-Bus System Message Bus
firewalld.service loaded active running firewalld – dynamic firewall daemon
getty@tty1.service loaded active running Getty on tty1
NetworkManager.service loaded active running Network Manager
sshd.service loaded active running OpenSSH server daemon
systemd-journald.service loaded active running Journal Service
systemd-logind.service loaded active running User Login Management
systemd-udevd.service loaded active running Rule-based Manager for Device Events and Files
# 步骤3:查看服务状态
$ sudo systemctl status sshd
● sshd.service – OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2026-04-02 10:00:00 CST; 1h ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 1234 (sshd)
Tasks: 1 (limit: 4915)
Memory: 5.2M
CGroup: /system.slice/sshd.service
└─1234 /usr/sbin/sshd -D
# 步骤4:启动服务
$ sudo systemctl start nginx
$ sudo systemctl status nginx
● nginx.service – The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
Active: active (running) since Wed 2026-04-02 10:00:00 CST; 10s ago
Docs: man:nginx(8)
http://nginx.org/en/docs/
Main PID: 1235 (nginx)
Tasks: 3 (limit: 4915)
Memory: 3.5M
CGroup: /system.slice/nginx.service
├─1235 “nginx: master process”
├─1236 “nginx: worker process”
└─1237 “nginx: worker process”
# 步骤5:停止服务
$ sudo systemctl stop nginx
$ sudo systemctl status nginx
● nginx.service – The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
Active: inactive (dead) since Wed 2026-04-02 10:00:00 CST; 10s ago
Docs: man:nginx(8)
http://nginx.org/en/docs/
# 步骤6:重启服务
$ sudo systemctl restart sshd
$ sudo systemctl status sshd
● sshd.service – OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2026-04-02 10:00:00 CST; 5s ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 1238 (sshd)
Tasks: 1 (limit: 4915)
Memory: 5.2M
CGroup: /system.slice/sshd.service
└─1238 /usr/sbin/sshd -D
# 步骤7:重载服务配置
$ sudo systemctl reload nginx
$ sudo systemctl status nginx
● nginx.service – The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
Active: active (running) since Wed 2026-04-02 10:00:00 CST; 1h ago
Docs: man:nginx(8)
http://nginx.org/en/docs/
Main PID: 1235 (nginx)
Tasks: 3 (limit: 4915)
Memory: 3.5M
CGroup: /system.slice/nginx.service
├─1235 “nginx: master process”
├─1236 “nginx: worker process”
└─1237 “nginx: worker process”
3.2 服务启动管理
服务启动管理:
$ sudo systemctl enable nginx
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.
# 步骤2:查看服务启动状态
$ systemctl is-enabled nginx
enabled
# 步骤3:禁用服务自动启动
$ sudo systemctl disable nginx
Removed /etc/systemd/system/multi-user.target.wants/nginx.service.
# 步骤4:查看服务启动状态
$ systemctl is-enabled nginx
disabled
# 步骤5:启用并启动服务
$ sudo systemctl enable –now nginx
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.
# 步骤6:禁用并停止服务
$ sudo systemctl disable –now nginx
Removed /etc/systemd/system/multi-user.target.wants/nginx.service.
# 步骤7:查看所有启用的服务
$ systemctl list-unit-files –type=service | grep enabled
auditd.service enabled
chronyd.service enabled
crond.service enabled
dbus.service static
firewalld.service enabled
getty@.service enabled
NetworkManager.service enabled
sshd.service enabled
systemd-journald.service static
systemd-logind.service static
systemd-udevd.service static
3.3 服务依赖管理
服务依赖管理:
$ systemctl show nginx | grep -i requires
Requires=network-online.target
Wants=system.slice
# 步骤2:查看服务被依赖情况
$ systemctl show nginx | grep -i wanted
WantedBy=multi-user.target
# 步骤3:查看服务启动顺序
$ systemctl list-dependencies nginx
nginx.service
● ├─network-online.target
│ └─NetworkManager-wait-online.service
└─system.slice
# 步骤4:查看目标依赖
$ systemctl list-dependencies multi-user.target
multi-user.target
● ├─auditd.service
● ├─chronyd.service
● ├─crond.service
● ├─firewalld.service
● ├─NetworkManager.service
● ├─sshd.service
● ├─systemd-logind.service
● └─systemd-udevd.service
# 步骤5:创建自定义服务
$ sudo vi /etc/systemd/system/fgedu-app.service
[Unit]
Description=FGEdu Application Service
After=network.target
[Service]
Type=simple
User=fgedu
Group=fgedu
WorkingDirectory=/fgedu/app
ExecStart=/usr/bin/python3 /fgedu/app/app.py
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
# 步骤6:重载systemd配置
$ sudo systemctl daemon-reload
# 步骤7:启动自定义服务
$ sudo systemctl start fgedu-app
$ sudo systemctl status fgedu-app
● fgedu-app.service – FGEdu Application Service
Loaded: loaded (/etc/systemd/system/fgedu-app.service; disabled; vendor preset: disabled)
Active: active (running) since Wed 2026-04-02 10:00:00 CST; 10s ago
Main PID: 1239 (python3)
Tasks: 1 (limit: 4915)
Memory: 15.2M
CGroup: /system.slice/fgedu-app.service
└─1239 /usr/bin/python3 /fgedu/app/app.py
# 步骤8:启用自定义服务
$ sudo systemctl enable fgedu-app
Created symlink /etc/systemd/system/multi-user.target.wants/fgedu-app.service → /etc/systemd/system/fgedu-app.service.
Part04-生产案例与实战讲解
4.1 企业服务管理案例
某企业服务管理的案例:
- 管理内容:配置服务自动启动,优化服务启动顺序
- 监控措施:监控服务运行状态,配置服务告警
- 成果:服务管理规范化,系统启动时间缩短40%
4.2 服务监控脚本
服务监控脚本:
# service_monitor.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# 服务列表
SERVICES=(
“sshd”
“nginx”
“mariadb”
“redis”
“fgedu-app”
)
# 检查服务状态
echo “=== Service Status ===”
for SERVICE in “${SERVICES[@]}”; do
if systemctl is-active –quiet “$SERVICE”; then
echo “OK: $SERVICE is running”
else
echo “ERROR: $SERVICE is not running”
# 尝试启动服务
echo “Attempting to start $SERVICE…”
sudo systemctl start “$SERVICE”
if systemctl is-active –quiet “$SERVICE”; then
echo “OK: $SERVICE started successfully”
else
echo “ERROR: Failed to start $SERVICE”
fi
fi
done
# 查看服务详细信息
echo “”
echo “=== Service Details ===”
for SERVICE in “${SERVICES[@]}”; do
echo “”
echo “=== $SERVICE ===”
systemctl status “$SERVICE” –no-pager | head -15
done
# 执行脚本
$ chmod +x service_monitor.sh
$ ./service_monitor.sh
=== Service Status ===
OK: sshd is running
OK: nginx is running
OK: mariadb is running
OK: redis is running
OK: fgedu-app is running
=== Service Details ===
=== sshd ===
● sshd.service – OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2026-04-02 10:00:00 CST; 1h ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 1234 (sshd)
Tasks: 1 (limit: 4915)
Memory: 5.2M
CGroup: /system.slice/sshd.service
└─1234 /usr/sbin/sshd -D
=== nginx ===
● nginx.service – The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2026-04-02 10:00:00 CST; 1h ago
Docs: man:nginx(8)
http://nginx.org/en/docs/
Main PID: 1235 (nginx)
Tasks: 3 (limit: 4915)
Memory: 3.5M
CGroup: /system.slice/nginx.service
├─1235 “nginx: master process”
├─1236 “nginx: worker process”
└─1237 “nginx: worker process”
4.3 服务优化脚本
服务优化脚本: from LinuxDBA视频:www.itpux.com
# service_optimize.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# 禁用不必要的服务
echo “Disabling unnecessary services…”
UNNECESSARY_SERVICES=(
“bluetooth.service”
“cups.service”
“avahi-daemon.service”
)
for SERVICE in “${UNNECESSARY_SERVICES[@]}”; do
if systemctl is-active –quiet “$SERVICE”; then
echo “Stopping $SERVICE…”
sudo systemctl stop “$SERVICE”
sudo systemctl disable “$SERVICE”
echo “OK: $SERVICE stopped and disabled”
else
echo “INFO: $SERVICE is not running”
fi
done
# 优化服务启动顺序
echo “”
echo “Optimizing service startup order…”
# 确保网络服务在应用服务之前启动
sudo systemctl set-default multi-user.target
# 配置服务资源限制
echo “”
echo “Configuring service resource limits…”
# 配置nginx服务资源限制
sudo mkdir -p /etc/systemd/system/nginx.service.d
sudo tee /etc/systemd/system/nginx.service.d/override.conf << 'EOF'
[Service]
LimitNOFILE=65535
LimitNPROC=4096
MemoryMax=512M
EOF
# 重载systemd配置
sudo systemctl daemon-reload
# 重启nginx服务
echo "Restarting nginx service..."
sudo systemctl restart nginx
# 查看nginx服务状态
echo ""
echo "=== Nginx Service Status ==="
sudo systemctl status nginx
# 查看系统启动时间
echo ""
echo "=== System Boot Time ==="
systemd-analyze
systemd-analyze blame | head -10
# 执行脚本
$ chmod +x service_optimize.sh
$ ./service_optimize.sh
Disabling unnecessary services...
INFO: bluetooth.service is not running
INFO: cups.service is not running
INFO: avahi-daemon.service is not running
Optimizing service startup order...
Configuring service resource limits...
Restarting nginx service...
=== Nginx Service Status ===
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/nginx.service.d/override.conf
Active: active (running) since Wed 2026-04-02 10:00:00 CST; 10s ago
Docs: man:nginx(8)
http://nginx.org/en/docs/
Main PID: 1240 (nginx)
Tasks: 3 (limit: 4915)
Memory: 3.5M
CGroup: /system.slice/nginx.service
├─1240 "nginx: master process"
├─1241 "nginx: worker process"
└─1242 "nginx: worker process"
=== System Boot Time ===
Startup finished in 2.345s (kernel) + 15.678s (userspace) = 18.023s
multi-user.target 15.678s
network.target 12.345s
remote-fs.target 5.678s
sysinit.target 3.456s
basic.target 2.345s
Part05-风哥经验总结与分享
5.1 服务管理建议
风哥提示:服务管理的建议:
- 最小化服务:只启用必要的服务,减少攻击面
- 监控服务:监控服务运行状态,及时发现异常
- 优化启动:优化服务启动顺序,提高启动速度
- 配置依赖:合理配置服务依赖关系
- 定期检查:定期检查服务状态和日志
5.2 常见问题与解决方案
服务管理的常见问题与解决方案:
- 服务启动失败:查看服务日志,检查配置文件
- 服务无法停止:检查服务依赖,强制停止服务
- 服务启动慢:优化服务启动顺序,配置并行启动
- 服务资源占用高:配置资源限制,优化服务配置
5.3 最佳实践
服务管理的最佳实践:
- 建立服务管理制度
- 使用脚本自动化服务管理
- 配置服务监控和告警
- 定期检查服务状态
- 优化服务启动顺序和资源使用
通过本文的介绍,相信读者对Linux系统服务管理基础有了更全面的了解。掌握这些知识有助于更好地管理系统服务。学习交流加群风哥QQ113257174
更多学习教程公众号风哥教程itpux_com
from Linux:www.itpux.com
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
