千家信息网

在Linux中创建自定义脚本和创建systemd服务单元文件的方法是什么

发表于:2024-11-30 作者:千家信息网编辑
千家信息网最后更新 2024年11月30日,今天就跟大家聊聊有关在Linux中创建自定义脚本和创建systemd服务单元文件的方法是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。前言
千家信息网最后更新 2024年11月30日在Linux中创建自定义脚本和创建systemd服务单元文件的方法是什么

今天就跟大家聊聊有关在Linux中创建自定义脚本和创建systemd服务单元文件的方法是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

前言

systemd是Linux操作系统的系统和服务管理器。当您从存储库安装任何应用程序时,它会将服务单元文件放入systemd目录中,您不应直接修改这些文件。

systemd单元文件将在以下三个目录中找到:

/usr/lib/systemd/system/:安装软件包时删除的systemd单元文件。

/run/systemd/system/:在运行时创建的systemd单元文件。

/etc/systemd/system/:由"systemctl enable"命令创建的systemd单元文件以及为扩展服务而添加的单元文件。

有时您可能需要为自定义应用程序或守护程序或脚本创建服务单元文件。有很多参数可以添加,但我们只会添加几个值以使单元文件更简单以便更好地理解。

例如:要在systemd系统启动时运行自定义脚本,您需要创建一个自定义服务单元文件。

创建自定义脚本

以下shell脚本将在文件中写入欢迎消息,如下所示:

$ sudo vi /usr/sbin/welcome.sh

#!/bin/bash

echo 'Welcome to Linux WORLD..!!!' >> /tmp/welcome.txt

参考:在Linux系统中运行.sh文件的两种方法。

创建systemd单元文件

您需要在"/etc/systemd/system/"目录下创建自定义服务单元文件,因为这是为自定义脚本保留的。‘/etc/systemd/system’中的任何单元文件都会覆盖‘/lib/systemd/system’中的相应文件。

语法:systemd单元文件由三部分组成:

Section-1 [Unit]Parameter 1..Parameter NSection-2 [Service]Parameter 1..Parameter NSection-3 [Install]Parameter 1

为了演示这一点,我们将创建一个名为"custom.service"的systemd服务单元文件:

$ sudo vi /etc/systemd/system/custom.service

[Unit]

Description=example systemd custom service unit file

After=network.target

[Service]

Type=notify

ExecStart=/bin/bash /usr/sbin/welcome.sh

[Install]

WantedBy=multi-user.target

1、Section-1:

Unit:本节提供有关服务的基本信息。

Description:服务单位的简短描述。当您执行"systemctl status UNIT.service"命令时,描述会出现在服务单元名称旁边。

After:定义单元启动的顺序。"custom.service"单元只有在"network.target"单元启动后才会启动。

2、Section-2:

Service:"Service"部分提供有关如何控制服务的说明。

Type:定义systemd服务的类型。它与"Type=simple"相同,但同时守护进程希望在准备就绪时向systemd发送信号。

ExecStart:它用于启动服务,其中包括实际服务可执行文件的完整路径。

3、Section-3:

Install:"Install"部分提供了有关如何安装systemd服务的说明。

WantedBy:"WantedBy"设置指示应该在哪个目标下启动给定的服务单元。在这个例子中,custom.service使用了multi-user.target,所以systemd在启动时加载multi-user.target时会启动custom.service。

将可执行权限设置为"custom.service":

$ sudo chmod a+x /etc/systemd/system/custom.service

要向systemd添加新服务,请运行:

$ sudo systemctl daemon-reload

要启动custom.service,请运行:

$ sudo systemctl start custom.service

要在启动时启用custom.service,请运行:

$ sudo systemctl enable custom.service

最后重新启动系统以检查custom.service是否通过验证输出文件在启动时按预期运行脚本:

$ sudo reboot

是的,它运作良好:

$ cat /tmp/welcome.txt

Welcome to Linux WORLD..!!!

什么是Linux系统

Linux是一种免费使用和自由传播的类UNIX操作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统,使用Linux能运行主要的Unix工具软件、应用程序和网络协议。

看完上述内容,你们对在Linux中创建自定义脚本和创建systemd服务单元文件的方法是什么有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

0