最牛逼的Linux自定义系统服务博客,让你一眼秒懂

本文详细介绍了在Linux系统中如何通过systemd创建和管理自定义服务,包括编写脚本文件、赋予权限、配置服务单元、重启和监控。重点强调了自定义服务在开机启动、集中管理、可靠性提升和资源控制等方面的优势。
摘要由CSDN通过智能技术生成

目录

一、在Linux系统中自定义服务的主要用途

二、编写脚本文件

三、给脚本增加权限

四、编写配套服务单元文件

五、重新采用配置文件

六、总结


先赞后看已成习惯

一、在Linux系统中自定义服务的主要用途

在Linux系统中自定义服务的主要用途包括:

  • 开机启动: 用户可以根据需求创建自己的服务,并确保该服务在操作系统启动时自动运行,无需人工干预。这对于诸如数据库服务器、Web服务器、守护进程、定时任务或其他关键应用程序非常有用。
  • 集中化管理: 自定义服务可以利用systemd等系统服务管理器进行统一管理和监控。这允许通过systemctl等工具来控制服务的启动、停止、重启、查看状态以及设置服务依赖关系等。
  • 可靠性提升: 将应用程序作为系统服务运行可以确保其以正确的方式启动,例如,可以通过指定资源限制、环境变量、执行权限和用户账户等方式增强服务的稳定性和安全性。
  • 依赖管理: 自定义服务可以定义启动前后的依赖关系,确保相关服务按正确的顺序启动或停止,这对于服务间的协作至关重要。
  • 日志记录和错误处理: 系统服务通常会将标准输出和错误输出重定向到系统日志,便于运维人员跟踪和调试问题。
  • 服务隔离与资源分配: 可以通过systemd的cgroups特性对服务使用的系统资源(如CPU、内存、磁盘I/O等)进行限制和隔离。 举例来说,如果您开发了一个自定义的应用程序,而希望这个程序能够在系统启动时就运行且始终保持活跃,那么将其配置为一个自定义服务就是一种最佳实践。这样不仅可以简化维护工作,还能保证应用程序的高可用性。在现代Linux系统中,使用systemd编写自定义服务单元文件(.service 文件)是最常用的方法之一。

二、编写脚本文件

执行以下命令

在该文件中输入以下代码

#!/bin/bash
while true; do
        echo `date`>>/root/log.txt
        sleep 2
done

这段bash shell脚本的作用是无限循环地将当前日期时间追加写入到 /root/log.txt 文件中,并在每次写入之后暂停2秒。

具体说明如下:

  • #!/bin/bash 是shebang行,它告诉系统应该使用 /bin/bash 解释器来执行此脚本。

  • while true; do 开启了一个无限循环,条件始终为真,因此循环会一直执行下去,除非脚本被手动停止或系统崩溃。

  • echo date  这一行会执行内部命令 date,它会输出当前的系统日期和时间,然后通过反引号(或 $(),在新版本的bash中推荐使用后者)将命令的输出结果捕获并传递给 echo 命令,最终将这个日期时间字符串打印出来。

  • >> /root/log.txt 是输出重定向操作符,它将前面命令的标准输出追加到 /root/log.txt 文件中,而不是显示在屏幕上。这意味着每次循环都会将新的日期时间添加到该文件末尾,而不是覆盖原有的内容。

  • sleep 2 会让脚本暂停执行2秒,然后再继续下一个循环迭代。

综上所述,这个脚本实际上是一个简单的日志记录器,它每隔两秒就会记录一次当前的时间戳,可用于系统监控、审计或者其他需要持续记录时间点的应用场景。

然后保存

三、给脚本增加权限

chmod +x ac.sh

四、编写配套服务单元文件

输入以下命令

cd /etc/systemd/system
vim 1.service

写入文件

[Unit]
Description=One Shell
 
[Service]
Type=simple
ExecStart=/root/ac.sh
 
[Install]
WantedBy=multi-user.target

是Linux系统中Systemd服务管理器的一个服务单元文件(一般命名为ac.service)的配置内容。下面逐段解释:

  1. [Unit] 部分:

    • 描述(Description):这部分用于描述服务的简要信息,此处为 "One Shell",即表明这是一个与shell脚本相关的服务。
  2. [Service] 部分:

    • Type=simple:声明服务类型为简单型(simple)。对于simple类型的服务,Systemd会直接执行ExecStart指定的命令,不关心其是否fork子进程。
    • ExecStart=/root/ac.sh:这是服务启动时执行的命令,表示当这个服务启动时,将会执行位于 /root 目录下的名为 ac.sh 的shell脚本。
  3. [Install] 部分:

    • WantedBy=multi-user.target:这一行定义了服务的启动目标,意味着当系统进入多用户模式(即正常启动后可以登录的模式)时,这个服务应当被激活并启动。换句话说,在系统启动过程中,当multi-user.target阶段开始时,这个服务会被自动启动。

总结起来,这个配置文件定义了一个Systemd服务,它会在系统启动后自动运行 /root/ac.sh 这个shell脚本,并将其描述为 "One Shell"。

五、重新采用配置文件

重新加载配置

sudo systemctl daemon-reload

让服务自启

sudo systemctl enable 1.service

启动服务

sudo systemctl start 1.service

查看服务状态

sudo systemctl status 1.service

查看日志文件

tail -f /root/log.txt

六、总结

自定义服务系统在Linux操作系统中扮演着至关重要的角色,它为用户提供了一种强大的手段,使得自行编写的程序或脚本能够如同系统内置服务一样受到有序、高效且可靠的管理。本文主要围绕Linux环境下如何利用systemd等服务管理系统实现自定义服务进行了探讨。

首先,自定义服务的核心优势在于其灵活性和自动化程度。通过编写服务单元文件,用户能够将任意应用程序或脚本设定为系统级别的服务,实现开机自动启动,确保关键服务在操作系统启动之初即可投入使用。这种机制极大地简化了运维流程,提升了系统的整体稳定性。

其次,借助systemd等服务管理工具,自定义服务能够得到集中的管理和细致的控制。运维人员可通过systemctl命令行工具方便地进行服务的启动、停止、重启、查看状态等操作,同时也可以设定服务之间的依赖关系,保证系统服务按照预设的逻辑顺序启动和关闭。

此外,自定义服务还提供了丰富的配置选项以满足多样化的服务管理需求。例如,可为服务配置资源限制以防止资源滥用,设定特定的执行权限和用户账户以加强安全防护,重定向服务的日志输出以便于排查问题,甚至能利用cgroups技术实现服务运行环境的隔离和资源分配。

最后,一个实际的自定义服务示例生动展现了这些概念的实际应用。比如,通过编写包含[Unit][Service][Install]部分的systemd服务单元文件,我们可以轻松将一个shell脚本(如/ac.sh)定义为系统服务,使其在多用户模式下自动启动,并对其进行详尽的服务管理。

总之,自定义服务系统在Linux环境中发挥着优化系统运维、强化服务稳定性和提高工作效率的重要作用。掌握这项技能对于系统管理员和开发者而言,无疑是在Linux系统管理层面提升专业能力的关键一环。

  • 47
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值