Linux 自定义系统服务

目录

前言

作用

自定义系统服务(时间为例)

编写脚本

给脚本设置可执行的权限

进入/etc/systemd/system/目录并编写配套服务单元文件

 解释

设置SELinux

重新载入配置文件,使设置生效

启动服务并查询服务启动状态

查看日志

结束语


前言

Linux自定义系统服务是指用户根据特定需求创建的后台服务或任务,这些服务或任务使用Systemd等系统和服务管理器来管理其启动、停止、重启和状态。通过这种方式,用户可以将自己的应用程序或脚本作为服务运行,并受到Systemd的监控和管理。

在Linux中,Systemd是一个核心的系统和服务管理器,它负责在系统引导过程中启动服务、管理守护进程以及维护系统状态。自定义系统服务为用户提供了一个框架,使他们能够定义服务的属性、依赖关系以及启动和停止的行为,从而满足特定的业务需求。

创建自定义系统服务通常涉及编写一个服务单元文件(.service文件),该文件描述了服务的各项属性和行为。这些文件通常放置在特定的目录中,如/usr/lib/systemd/system/,以便Systemd能够识别和管理它们。

自定义系统服务为Linux用户提供了极大的灵活性和便利性,使他们能够根据自己的需求定制和优化系统服务,从而提高系统的性能和稳定性。

作用

  1. 满足特定业务需求:通过自定义系统服务,用户可以根据特定的业务需求创建并管理后台服务或任务。无论是需要定期执行的任务、持续运行的守护进程,还是其他类型的后台服务,都可以通过自定义系统服务来实现。
  2. 提高系统灵活性:标准的系统服务往往只能满足一些通用的需求,而自定义系统服务则可以根据具体的应用场景进行定制。这使得Linux系统更加灵活,能够适应各种不同的使用场景和需求。
  3. 优化系统性能:通过精确控制服务的启动、停止和重启等行为,自定义系统服务可以帮助优化系统的性能。例如,可以根据系统负载情况动态调整服务的运行状态,或者设置服务在特定时间点或条件下自动启动,从而提高系统的运行效率。
  4. 方便管理与监控:自定义系统服务通常会被集成到系统的服务管理框架中,如systemd。这使得服务的管理和监控变得更加方便。管理员可以通过标准的系统命令或工具来启动、停止、重启和查询服务的状态,而无需编写复杂的脚本或程序。

自定义系统服务(时间为例)

编写脚本

可随意命名,此处以时间为例,编写一个监控时间的脚本,以两秒的间隔输出,写入临时目录/tmp.txt文件中

注意:此处为反引号

反引号(``)的主要作用是命令替换。具体来说,当反引号中的内容是一个命令时,shell会先执行该命令,并将命令的输出结果替换掉反引号中的内容。这提供了一种方便的方式,将命令的输出作为其他命令的输入或赋值给变量

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

给脚本设置可执行的权限

注意:为什么要给脚本执行权限?

  1. 直接执行:当脚本具有可执行权限时,用户可以直接通过命令行来运行它,无需使用解释器(如bash、python等)来手动执行。这使得脚本的使用更加便捷,符合用户的日常操作习惯

  2. 明确意图:设置脚本为可执行文件,可以明确表明该文件的用途是作为一个程序或命令来运行。这有助于其他用户或管理员理解文件的用途,避免误操作或误用

进入/etc/systemd/system/目录并编写配套服务单元文件

可按自己要求写自己的服务单元文件

[Unit]
Description=Mydate
                                                             
[Service]
Type=simple
ExecStart=/root/mydate.sh

[Install]
WantedBy=multi-user.target
 解释

服务单元文件(通常具有.service扩展名)在Linux中用于定义和管理系统服务。这些文件包含了关于服务如何启动、运行和停止的详细信息,以及服务的依赖关系和其他相关配置

常见字段解释:

  1. [Unit] 部分:
    • Description=: 描述服务的文字信息,用于提供关于该服务的简要说明。
    • Requires=: 指定当前服务所依赖的其他服务。如果这些依赖的服务没有运行,则当前服务将无法启动。
    • After=: 指定当前服务需要在哪些其他服务之后启动。这有助于确定服务的启动顺序。
  2. [Service] 部分:
    • Type=: 定义服务的启动类型。例如,forking表示服务将以后台模式运行。
    • ExecStart=: 指定启动服务时要执行的命令或脚本。
    • WorkingDirectory=: 指定服务的工作目录。
    • User= 和 Group=: 指定以哪个用户和组的身份来运行该服务。
    • Restart=: 定义服务在退出或崩溃时是否以及如何重新启动。例如,always表示无论退出状态如何,都始终重新启动服务。
  3. [Install] 部分:
    • WantedBy=: 指定该服务应该被哪个目标(target)所启用。目标通常代表系统的不同运行状态,如多用户目标(multi-user target)。

设置SELinux

注意:成为permissive模式,临时关闭selinux防火墙

重新载入配置文件,使设置生效

sudo systemctl daemon-reload

启动服务并查询服务启动状态

注意:此处为active为正常启动状态

查看日志

此处,可以另开一个终端,查看日志

-f 输出日志的最后一行

注意:此处设置的为两秒输出,可以查看是否相隔两秒

结束语

通过自定义系统服务,我们得以将那些需要持续运行、定期执行或响应特定事件的任务,转化为后台守护进程,从而实现无人值守的自动化操作。这极大地提高了工作效率,降低了人为干预的错误率,为企业的稳定运行提供了有力保障。

同时,自定义系统服务也让我们能够更好地掌控系统的资源分配和性能优化。通过精确控制服务的启动、停止和重启,我们可以确保系统资源得到合理利用,避免因某个服务的异常而影响到整个系统的稳定性。

当然,要充分利用自定义系统服务的优势,我们还需要不断学习和探索。掌握Linux系统的基本知识和服务管理的最佳实践,编写高效稳定的服务脚本,这些都是我们在实践中需要不断提升的技能。

最后,我要感谢每一位阅读这篇博客的朋友,是你们的支持和关注让我有动力继续分享关于Linux系统的知识和经验。如果你对自定义系统服务还有其他问题或建议,欢迎随时与我交流。期待我们在未来的日子里,一起探索更多Linux系统的奥秘!

  • 81
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值