您的位置:首页 > 汽车 > 时评 > 域名停靠应用下载软件_淄博网站制作建设优化_关键词搜索排名推广_酒泉网站seo

域名停靠应用下载软件_淄博网站制作建设优化_关键词搜索排名推广_酒泉网站seo

2025/4/2 16:16:51 来源:https://blog.csdn.net/zhangzehai2234/article/details/146431494  浏览:    关键词:域名停靠应用下载软件_淄博网站制作建设优化_关键词搜索排名推广_酒泉网站seo
域名停靠应用下载软件_淄博网站制作建设优化_关键词搜索排名推广_酒泉网站seo

Centos中的Systemd介绍


CentOS 中的 Systemd 详细介绍

Systemd 是 Linux 系统的初始化系统和服务管理器,自 CentOS 7 起取代了传统的 SysVinit,成为默认的初始化工具。它负责系统启动、服务管理、日志记录等核心功能,显著提升了系统的启动速度和资源管理效率。


1. Systemd 的核心作用

服务管理:启动、停止、重启服务,管理服务依赖关系。
系统初始化:并行化启动进程,加速系统启动。
资源监控:跟踪进程状态、资源占用(CPU、内存等)。
日志管理:通过 journald 统一收集和存储系统及服务日志。
挂载点管理:自动挂载文件系统(替代 /etc/fstab 的部分功能)。


2. Systemd 的核心组件
组件功能
systemd主进程,负责初始化系统和管理其他组件。
systemctl用于管理服务的命令行工具(如启动、停止、重启服务)。
journald日志服务,记录系统、内核及所有服务的日志。
unit系统资源单元(如服务、挂载点、设备等),通过 .service.target 等文件定义。

3. 常用 Systemd 命令
(1) 服务管理
# 启动服务
sudo systemctl start nginx.service# 停止服务
sudo systemctl stop nginx# 重启服务
sudo systemctl restart nginx# 查看服务状态
sudo systemctl status nginx# 设置开机自启
sudo systemctl enable nginx# 禁用开机自启
sudo systemctl disable nginx# 查看所有已启动的服务
systemctl list-units --type=service
(2) 日志管理(journald)
# 查看所有日志(默认显示当前启动的日志)
journalctl# 查看指定服务的日志
journalctl -u nginx.service# 按时间过滤(例如最近1小时)
journalctl --since "1 hour ago"# 实时跟踪日志
journalctl -f# 查看内核日志
journalctl -k
(3) 系统状态与维护
# 查看系统启动时间
systemd-analyze# 分析各服务的启动耗时
systemd-analyze blame# 重新加载修改的 unit 文件
sudo systemctl daemon-reload# 重启 systemd 管理器(仅在紧急情况下使用)
sudo systemctl daemon-reexec

4. Systemd Unit 文件

Systemd 通过 Unit 文件(单元文件)定义系统资源,常见类型包括:
.service:服务单元(如 Nginx、MySQL)。
.target:目标单元(类似 SysVinit 的运行级别,如 multi-user.target)。
.mount:挂载点单元(替代 /etc/fstab)。
.socket:套接字单元(管理网络或 IPC 套接字)。

Unit 文件路径

系统默认配置/usr/lib/systemd/system/
用户自定义配置/etc/systemd/system/

示例:自定义 Service 文件

创建 /etc/systemd/system/myapp.service

[Unit]
Description=My Custom Application
After=network.target[Service]
Type=simple
ExecStart=/usr/bin/python3 /opt/myapp/app.py
Restart=on-failure
User=myuser
Group=mygroup[Install]
WantedBy=multi-user.target
关键字段解释

[Unit]:定义依赖关系和元数据(如 After 表示启动顺序)。
[Service]:配置服务行为(如启动命令、重启策略)。
[Install]:定义如何启用服务(如 WantedBy 指定关联的目标)。


5. Systemd 的日志持久化

默认情况下,journald 的日志存储在内存中(/run/log/journal/),重启后丢失。若需持久化日志:

  1. 创建日志目录:
sudo mkdir -p /var/log/journal
sudo systemd-tmpfiles --create --prefix /var/log/journal
  1. 重启 journald
sudo systemctl restart systemd-journald

6. Systemd 与 SysVinit 的对比
特性SystemdSysVinit
启动速度并行启动,速度更快串行启动,速度较慢
服务管理支持依赖关系、按需启动依赖脚本顺序
日志系统统一日志(journald分散在 /var/log/
配置方式通过 Unit 文件定义通过 /etc/init.d/ 脚本管理
兼容性兼容 SysVinit 脚本(但不推荐)仅支持传统脚本

7. 注意事项与最佳实践
  1. 避免直接修改系统默认 Unit 文件
    如需覆盖配置,在 /etc/systemd/system/ 中创建同名文件或使用 systemctl edit

  2. 使用 systemctl enable 而非手动创建符号链接
    确保依赖关系正确处理。

  3. 调试服务启动失败
    • 使用 systemctl status <service> 查看详细错误。
    • 结合 journalctl -u <service> 分析日志。

  4. 定期清理日志

# 保留最近7天的日志
journalctl --vacuum-time=7d

8. 典型问题解决

服务启动超时
在 Unit 文件中增加 TimeoutStartSec=300(单位:秒)。

依赖服务未就绪
使用 AfterRequires 字段明确依赖关系。

自定义环境变量
在 Unit 文件的 [Service] 段添加 Environment="KEY=value"


Systemd 是 CentOS 系统管理的核心工具,熟练掌握其用法可以显著提升运维效率。理解 Unit 文件的设计和日志管理机制,是优化服务稳定性和排查问题的关键!

自建Es进程通过Systemd管理


1. 创建 Elasticsearch 系统用户

# 创建 elasticsearch 用户及用户组(禁止登录)
sudo groupadd es
sudo useradd -g es -s /sbin/nologin elasticsearch# 赋予用户对 ES 安装目录、数据目录、日志目录的权限
sudo chown -R es:elasticsearch /opt/elasticsearch/
sudo chown -R elasticsearch:elasticsearch /var/data/elasticsearch/
sudo chown -R elasticsearch:elasticsearch /var/log/elasticsearch/

2. 编写 Systemd Unit 文件

创建文件 /etc/systemd/system/elasticsearch.service,内容如下:

[Unit]
Description=Elasticsearch 7.x Service
Documentation=https://www.elastic.co/guide/en/elasticsearch/reference/7.x/index.html
After=network.target[Service]
User=es
Group=es
Environment="ES_HOME=/opt/elasticsearch"
Environment="ES_PATH_CONF=/etc/elasticsearch"# 限制资源使用(按需调整)
LimitNOFILE=65536
LimitMEMLOCK=infinityExecStart=/opt/elasticsearch/bin/elasticsearch
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=30s# 内存限制(建议根据服务器配置调整)
Environment="ES_JAVA_OPTS=-Xms4g -Xmx4g"# 安全配置(若启用 xpack)
# Environment="ES_SECURITY_TYPE=trial"[Install]
WantedBy=multi-user.target

3. 加载并启动服务

# 重新加载 Systemd 配置
sudo systemctl daemon-reload# 启动 Elasticsearch
sudo systemctl start elasticsearch# 设置开机自启
sudo systemctl enable elasticsearch# 查看服务状态
systemctl status elasticsearch# 查看实时日志
journalctl -u elasticsearch -f

5. 验证 Elasticsearch 运行

# 检查 ES 是否监听端口 9200
curl http://localhost:9200# 输出示例:
{"name" : "node-1","cluster_name" : "my-es-cluster","cluster_uuid" : "abc123","version" : {"number" : "7.17.3","build_flavor" : "default","build_type" : "tar","build_hash" : "abc123","build_date" : "2023-01-01","build_snapshot" : false,"lucene_version" : "8.11.1","minimum_wire_compatibility_version" : "6.8.0","minimum_index_compatibility_version" : "6.0.0"},"tagline" : "You Know, for Search"
}

6. 常见问题与解决

(1) 启动失败:权限不足
# 检查目录权限
sudo chown -R elasticsearch:elasticsearch /opt/elasticsearch
sudo chown -R elasticsearch:elasticsearch /var/data/elasticsearch# 查看详细错误日志
journalctl -u elasticsearch --no-pager -n 50
(2) 内存分配失败

/etc/sysconfig/elasticsearch 中调整 JVM 参数:

# 减少堆内存(例如 2GB)
ES_JAVA_OPTS="-Xms2g -Xmx2g"
(3) 最大文件描述符限制
# 临时生效
ulimit -n 65536# 永久生效(编辑 /etc/security/limits.conf)
echo "elasticsearch - nofile 65536" | sudo tee -a /etc/security/limits.conf

7. 安全配置(可选)

若启用了 Elasticsearch 安全功能(如 xpack),需在 elasticsearch.yml 中添加配置:

# 编辑配置文件 /etc/elasticsearch/elasticsearch.yml
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true

生成密码并保存:

# 进入 ES 安装目录的 bin 文件夹
cd /opt/elasticsearch/bin# 交互式生成所有内置用户密码
./elasticsearch-setup-passwords interactive

8. 完整配置示例

配置示例

/etc/elasticsearch/elasticsearch.yml

cluster.name: my-es-cluster
node.name: node-1
path.data: /var/data/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["node-1", "node-2"]
cluster.initial_master_nodes: ["node-1"]

通过以上步骤,Elasticsearch 7.x 将被 Systemd 托管,实现开机自启、服务监控和日志统一管理。遇到问题时,优先通过 journalctl 分析日志定位原因。

拓展

  • 1、查看当前用户的group
id

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com