wordpress站长地图,兰州建设局网站,西部数码网站建设,企业网站建设教程pdf博文目录 文章目录 Systemd操作方式配置方式配置示例参考 Systemd
Systemd 是一个用于启动、管理和监控 Linux 系统的初始化系统。它是许多现代 Linux 发行版中默认的初始化系统#xff0c;取代了传统的 SysVinit 和 Upstart。
Systemd 的引入在 Linux 社区引起了一些争议取代了传统的 SysVinit 和 Upstart。
Systemd 的引入在 Linux 社区引起了一些争议因为它与传统的初始化系统有很大的差异。然而它的设计目标和功能使得管理和维护 Linux 系统变得更加高效和便捷。它已经成为许多主流 Linux 发行版的标准选择并得到了广泛的应用和支持。
Systemd 的设计目标是提供更快的启动速度、更好的资源管理和更强大的系统监控功能。它引入了一些新的概念和功能包括以下几个主要方面
单位UnitSystemd 使用单位Unit作为系统组件的基本单元。单位可以是服务service、套接字socket、设备device、挂载点mount等。每个单位都有一个对应的配置文件用于描述其行为和依赖关系。依赖关系管理Systemd 可以自动解决单位之间的依赖关系。每个单位可以指定其所依赖的其他单位Systemd 将根据依赖关系自动按需启动或停止单位。并行启动Systemd 支持并行启动系统单位以提高系统的启动速度。它可以通过并行处理单位的依赖关系来最大程度地利用系统资源加快启动过程。日志管理Systemd 引入了 Journal日志系统用于管理和存储系统日志。Journal 提供了结构化的日志记录和高效的日志查询功能可以方便地检查系统的运行状态和故障排查。服务管理Systemd 提供了强大的服务管理功能可以启动、停止、重启和管理系统服务。它支持服务的自动重启、进程监控和故障恢复等功能提高了系统的可靠性和可用性。控制接口Systemd 提供了命令行工具和控制接口用于管理和监控系统。通过 systemctl 命令可以查看和控制单位的状态启动和停止服务查看系统日志等。
最直观的体验就是, 通过 Systemd 配置程序开机启动会非常简单且统一, 体验非常好
操作方式
# 所有指令都可以省略 后缀 .service, 如 systemctl enable myapp
# 设置开机自启
systemctl enable myapp.service
# 取消开机自启
systemctl disable myapp.service
# 启动
systemctl start myapp
# 停止
systemctl stop myapp
# 重载
systemctl reload myapp配置方式
需要创建一个 Systemd 服务单元文件并在其中指定要在启动时运行的命令或程序。 据说, 通过二进制方式安装的程序才需要手动创建 Systemd 服务单元文件, 如 xxxx.service, 通过 yum 等安装的程序会自带该文件且会自动放到合适的位置, 可以直接执行 systemctl enable xxxx.service 来启用 创建服务单元文件在 /etc/systemd/system/ 或 /usr/lib/systemd/system 目录下创建一个以 .service 为后缀的服务单元文件例如myapp.service。
编辑服务单元文件使用文本编辑器打开刚刚创建的服务单元文件并将以下内容粘贴到文件中
[Unit]
DescriptionMy App
Afternetwork.target[Install]
WantedBymulti-user.target[Service]
ExecStart/path/to/your/app
Restartalways
Useryour_username
Groupyour_groupname
EnvironmentPATH/usr/bin ANOTHER_ENV_VARsome_value根据实际需求进行适当修改
Description服务的描述。 After指定服务启动的依赖项。如果应用需要网络连接请设置为 network.target。 ExecStart指定要在启动时运行的命令或程序的完整路径。将/path/to/your/app替换为实际命令或程序的路径。 Restart设置服务在出现问题时自动重启。 User和Group指定运行服务的用户和组。将your_username和your_groupname替换为实际用户和组名。 Environment设置环境变量。可以根据需要添加多个环境变量。 WantedBy指定服务所属的运行级别。将 multi-user.target 替换为所需的运行级别。
保存并关闭文件。
重新加载Systemd配置在终端中执行以下命令以重新加载Systemd配置并启用新创建的服务单元文件
systemctl daemon-reload
systemctl enable myapp.service这将使 Systemd 在启动时自动加载并运行指定的服务。
启动服务
systemctl start myapp.service检查服务状态
systemctl status myapp.service如果一切正常应该看到服务的状态为 绿色 “active”。
现在服务已经配置为开机自启。在下一次重启系统后Systemd 将自动加载并运行该服务。
配置示例
# mysql
# https://dev.mysql.com/doc/mysql-secure-deployment-guide/8.0/en/secure-deployment-post-install.html[Unit]
DescriptionMySQL Server
Documentationman:mysqld(8)
Documentationhttp://dev.mysql.com/doc/refman/en/using-systemd.html
Afternetwork.target
Aftersyslog.target[Install]
WantedBymulti-user.target[Service]
Usermysql
Groupmysql# Have mysqld write its state to the systemd notify socket
Typenotify# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec0# Start main service
ExecStart/usr/local/mysql/bin/mysqld --defaults-file/etc/my.cnf $MYSQLD_OPTS # Use this to switch malloc implementation
EnvironmentFile-/etc/sysconfig/mysql# Sets open_files_limit
LimitNOFILE 10000Restarton-failureRestartPreventExitStatus1# Set environment variable MYSQLD_PARENT_PID. This is required for restart.
EnvironmentMYSQLD_PARENT_PID1PrivateTmpfalse# redis
[Unit]
DescriptionRedis Server
Afternetwork.target[Install]
WantedBymulti-user.target[Service]
ExecStart/usr/local/bin/redis-server /usr/local/bin/redis.conf
Typeforking
PrivateTmptrue# tomcat
[Unit]
DescriptionTomcat 8.5.70
Afternetwork.target[Install]
WantedBymulti-user.target[Service]
ExecStart/usr/local/bid/apache-tomcat-8.5.70/bin/startup.sh
Typeforking
PrivateTmptrue参考 官方文档 MySQL 8.0 参考手册 - 在 Linux 安装 MySQL - 使用 Systemd 管理 MySQL - MySQL 8.0 安全部署向导 - 安装后操作 - 使用 Systemd 启动 MySQL Server