Linux自定义系统服务

目录

Linux自定义系统服务

背景:

具体步骤:

1.进入Linux虚拟机,并进行远程连接

2.进入到根目录(/root)下,编写一个任务脚本

3.给任务脚本添加可执行权限

4.执行任务脚本,并查看脚本是否正常运行

5.编写一个与脚本文件配套的服务单元文件

6. 重新装载单元文件, 并使mydate服务开机启动

7.查看服务运行状态

8.检验服务是否还在正常运行


Linux自定义系统服务

背景:

Systemd是一种Linux系统下的初始化系统和服务管理器,它的目标是提供更优秀的框架来表示系统服务间的依赖关系,并依此实现系统初始化时服务的并行启动,同时降低Shell的系统开销。它取代了早期的SysV init和Upstart等初始化系统,成为了现代Linux系统中的标准初始化系统。Systemd在Linux启动时负责初始化系统,启动用户空间和系统服务,以及管理系统进程的生命周期。它是Linux启动过程中的第一个用户空间进程。此外,Systemd还接管了后台服务、结束、状态查询,以及日志归档、设备管理、电源管理、定时任务等许多职责。它支持通过特定事件(如插入特定USB设备)和特定端口数据触发的按需任务。

在最新的Linux系统中,如RedHat 7、CentOS 7和Ubuntu 15等,都采用了systemd进行管理。在CentOS 7中,systemd支持开机并行启动服务,显著提高了开机启动效率,并且只关闭正在运行的服务,而不是像CentOS 6那样全部关闭一次。此外,CentOS 7还使用systemd解决了原有模式的缺陷,如原有service不会关闭程序产生的子进程等问题。 

具体步骤:

1.进入Linux虚拟机,并进行远程连接

2.进入到根目录(/root)下,编写一个任务脚本

这个脚本被命名为:mydate.sh,且内容如下:

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

这个脚本的意义是:将系统时间写入root目录下的日志文件中,而且每两秒重复一次。(注:内容中的 反单引号是引用的含义,date指系统时间,sleep 2指每隔两秒显示一次)

3.给任务脚本添加可执行权限

执行 chmod +x mydate.sh目录给任务脚本添加可执行的权限。

4.执行任务脚本,并查看脚本是否正常运行

执行Bash(.) mydate.sh命令执行任务脚本。

执行cat /root/log.txt命令查看脚本的运行情况。

如果在root目录下的日志文件中每隔两秒显示一次系统时间,则说明脚本正常运行。(这里通常是要再开一个终端用来查看脚本运行情况的,因为前面那个脚本在运行时,无法退出运行状态)

5.编写一个与脚本文件配套的服务单元文件

我们在这个命名为example.service,并且将这个文件放到/etc/systemd/system目录下。文件内容如下:

[Unit]
Description=mydate

[Service]
Type=simple
ExecStart=/bin/bash /root/mydate.sh
Reatart=always

[Install]
WantedBy=multi-user.target

6. 重新装载单元文件, 并使mydate服务开机启动

重新加载systemd服务,并启动mydate服务。

Systemctl daemon-reload
Systemctl start example.service

7.查看服务运行状态

Systemctl status example.service

这里我们可以看到example.service是active(running)状态,也就是正常运行状态。

8.检验服务是否还在正常运行

Cat /root/log.txt

综上所述,Linux自定义系统服务就创建完成了。

常见的问题:

1.服务配置错误

服务配置文件可能包含错误的参数或格式,导致服务无法正确启动或运行。这通常发生在编辑或更新服务配置文件时,比如systemd的.service文件。(这个问题是最为常见的,因为每每进行配置文件的编辑时,总会有那么几个单词的错误导致后续的运行失败)

2.权限问题

服务可能需要以特定的用户或用户组身份运行,以确保其拥有足够的权限访问必要的资源。如果权限设置不当,服务可能无法启动或执行其任务。

3.启动失败

服务在启动时可能因各种原因失败,如待执行的文件找不到、文件无执行权限、Python依赖的包无法执行等。这通常涉及到检查服务的启动脚本、文件路径和权限设置。

4.日志和状态检查

当服务出现问题时,检查服务的日志和状态通常是解决问题的第一步。如果日志记录不足或状态信息不明确,可能会增加诊断和解决问题的难度。

相关推荐

  1. linux系统zabbix监控定义监控

    2024-04-09 18:16:02       33 阅读
  2. linux下python服务定时)启动

    2024-04-09 18:16:02       13 阅读
  3. Android11 Framework Vendor下定义系统服务

    2024-04-09 18:16:02       44 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-09 18:16:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-09 18:16:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-09 18:16:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-09 18:16:02       20 阅读

热门阅读

  1. 【Leetcode】【2024048】1544. Make The String Great

    2024-04-09 18:16:02       14 阅读
  2. react api:createContext

    2024-04-09 18:16:02       15 阅读
  3. go 获取terraform output输出

    2024-04-09 18:16:02       14 阅读
  4. 5.2 SSH和交换机端口安全概述

    2024-04-09 18:16:02       12 阅读
  5. 通过GDB推进数据库SCN(适用于12c及以上)

    2024-04-09 18:16:02       16 阅读
  6. 多数据源解决事务问题

    2024-04-09 18:16:02       14 阅读
  7. 单例模式

    2024-04-09 18:16:02       13 阅读
  8. TLC3702双微功耗电压比较器

    2024-04-09 18:16:02       15 阅读
  9. 除了sql外还有那些查询语言

    2024-04-09 18:16:02       16 阅读
  10. C++:std命名空间及输入输出流

    2024-04-09 18:16:02       15 阅读