CentOS 7下systemd管理的详解
简介
systemd是Linux系统管理和初始化的系统和服务管理器。它是CentOS 7及以上版本的默认init系统。它允许用户管理和配置系统服务,提供更好的管理和日志功能。本文将详细讲解CentOS 7下如何使用systemd进行服务管理。
systemd 的基本管理命令
以下是常用的systemd管理命令:
启动服务
systemctl start service-name
停止服务
systemctl stop service-name
重启服务
systemctl restart service-name
查看服务状态
systemctl status service-name
开机启动服务
systemctl enable service-name
取消开机启动服务
systemctl disable service-name
systemd 服务文件格式
systemd 服务文件被存放在 /etc/systemd/system/
目录下。一个服务文件通常由以下几个块组成:
[Unit]
描述了服务的基本信息,包括服务名、服务描述、依赖关系等。以下是一个示例:
[Unit]
Description=My Service
After=network.target
[Service]
描述了服务的启动信息,包括服务执行的命令、运行环境、工作目录等。以下是一个简单的示例:
[Service]
Type=simple
ExecStart=/usr/local/bin/my-service
[Install]
描述服务的安装信息,包括要安装的路径等。以下是一个简单的示例:
[Install]
WantedBy=multi-user.target
示例
安装一个简单的服务
假设我们有一个简单的服务,该服务只是输出一行文本,我们可以使用以下步骤在CentOS 7中创建一个systemd服务:
- 在
/usr/local/bin
目录下创建一个名为 my-service 的文件,其中包含以下代码:
#!/bin/bash
echo "Hello, World!"
- 在
/etc/systemd/system/
目录下创建一个 my-service.service 文件,其中包含以下代码:
```
[Unit]
Description=My Service
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/my-service
[Install]
WantedBy=multi-user.target
```
- 重新加载 systemd daemon
systemctl daemon-reload
- 启动 my-service 服务并查看状态
systemctl start my-service
systemctl status my-service
输出应该是:
```
● my-service.service - My Service
Loaded: loaded (/etc/systemd/system/my-service.service; disabled; vendor preset: disabled)
Active: active (running) since Tue 2020-05-05 17:36:25 CST; 8min ago
Main PID: 26470 (my-service)
CGroup: /system.slice/my-service.service
└─26470 /bin/bash /usr/local/bin/my-service
May 05 17:36:25 centos7 systemd[1]: Started My Service.
May 05 17:36:25 centos7 bash[26470]: Hello, World!
```
系统已经成功加载了my-service服务,并且运行良好。
安装并启动一个Node.js应用程序
如果你有一个Node.js应用程序,并希望将其作为系统服务来管理,可以采用以下步骤:
-
在
/opt/my-app
目录下创建一个你的Node.js应用程序,确保程序拥有可执行权限。 -
创建一个名为 my-app.service 的文件,其中包含以下代码:
```
[Unit]
Description=My Node.js App
[Service]
ExecStart=/usr/bin/node /opt/my-app/app.js
WorkingDirectory=/opt/my-app/
Restart=always
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
```
- 重新加载 systemd daemon
systemctl daemon-reload
- 启动 my-app 服务并查看状态
systemctl start my-app
systemctl status my-app
输出应该是:
```
● my-app.service - My Node.js App
Loaded: loaded (/etc/systemd/system/my-app.service; disabled; vendor preset: disabled)
Active: active (running) since Tue 2020-05-05 17:36:25 CST; 8min ago
Main PID: 26470 (node)
CGroup: /system.slice/my-app.service
└─26470 /usr/bin/node /opt/my-app/app.js
May 05 17:36:25 centos7 systemd[1]: Started My Node.js App.
```
这时应用程序已经作为系统服务运行,并将在系统启动时启动。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:CentOS 7下systemd管理的详解 - Python技术站