CentOS 7下systemd管理的详解

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服务:

  1. /usr/local/bin 目录下创建一个名为 my-service 的文件,其中包含以下代码:

#!/bin/bash
echo "Hello, World!"

  1. /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
```

  1. 重新加载 systemd daemon

systemctl daemon-reload

  1. 启动 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应用程序,并希望将其作为系统服务来管理,可以采用以下步骤:

  1. /opt/my-app 目录下创建一个你的Node.js应用程序,确保程序拥有可执行权限。

  2. 创建一个名为 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
```

  1. 重新加载 systemd daemon

systemctl daemon-reload

  1. 启动 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技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • 微信小程序实现列表下拉刷新上拉加载

    下面是关于微信小程序实现列表下拉刷新上拉加载的完整攻略。 一、概述 列表下拉刷新和上拉加载是列表展示的常规操作,用户可以通过下拉刷新获取最新数据,也可以通过上拉加载获取更多历史数据。本文介绍如何在微信小程序中实现列表下拉刷新上拉加载,以满足用户操作需求。 二、实现步骤 下拉刷新 (1) 在wxml文件中添加scroll-view组件,实现一个可滚动的区域,给…

    other 2023年6月25日
    00
  • transactionscope是什么

    Transactionscope 是什么? TransactionScope 是 .NET Framework 中的一个类,用于管理事务的范围。它提供了一种简单的方法来处理跨多个资源的事务,例如数据库、消息队列和文件系统等。使用 TransactionScope 可以确保所有资源都在同一个事务中提交或回滚,从而保证数据的一致性和完整性。 Transactio…

    other 2023年5月6日
    00
  • 条件数据库Android:sqllite的简单使用

    下面是“条件数据库Android:sqllite的简单使用”的完整攻略。 1. 前言 SQLite是一款功能强大的嵌入式关系型数据库,它被广泛应用在各个领域当中,而在Android中,SQLite是Android中的默认数据库,因此它也被广泛地应用在Android项目中。本篇文章将介绍在Android开发中如何使用SQLite数据库。 2. 实现SQLite…

    other 2023年6月26日
    00
  • 如何在vite里获取env环境变量浅析

    下面是如何在vite中获取环境变量的攻略: 什么是环境变量 环境变量是一个在操作系统中存储的值,可以通过环境变量来指定程序运行时的一些参数和配置。在 Node.js 或者前端项目中也可以使用环境变量来存储一些敏感信息,如 API 密钥等。 Vite 中如何使用环境变量 Vite 中支持使用 import.meta.env 来获取到环境变量。import.me…

    other 2023年6月27日
    00
  • 公开的免费STUN服务器

    关于“公开的免费STUN服务器”的完整攻略,我可以给您提供以下内容: 什么是STUN服务器 STUN服务器 (Session Traversal Utilities for NAT) 是一个协议,用于在网络中的NAT(网络地址转换)防火墙后建立点对点的通信。NAT防火墙会对本地网络(Private network)与公共互联网(Public Internet…

    other 2023年6月27日
    00
  • Objective-C中使用NSString类操作字符串的方法小结

    Objective-C中使用NSString类操作字符串的方法小结 Objective-C中的NSString类提供了许多方法来操作字符串。下面是一些常用的方法和示例说明: 1. 创建字符串 可以使用以下方法来创建字符串: NSString *str1 = @\"Hello, World!\"; // 直接使用字符串字面量创建 NSStr…

    other 2023年8月18日
    00
  • 关于python:使用numpy.take进行更快的花式索引

    以下是关于“使用numpy.take进行更快的花式索引”的完整攻略,包含两个示例。 使用numpy.take进行更快的花式索引 Python中,我们可以使用numpy.take方法进行更快的花式索引。以下是关于如何使用numpy.take方法的详细攻略。 1. 使用numpy.take方法 numpy.take方法可以根据索引数组从中获取元素。以下是一个示例…

    other 2023年5月9日
    00
  • docker.service启动失败:Unit not found的原因及解决办法

    当我们在启动docker服务时,可能会遇到以下错误:docker.service: Unit not found. 这是由于系统找不到docker服务的单元文件导致的,也就是说可能是服务安装不完整或者是单元文件被意外删除了。这个问题比较常见,下面我将提供解决办法的步骤并附带两个具体的示例说明: 解决docker.service启动失败的原因及解决办法: 检查…

    other 2023年6月26日
    00
合作推广
合作推广
分享本页
返回顶部