CentOS设置自定义服务并开机自启动过程

 更新时间:2026年03月04日 09:14:34   作者:Marco1XIE  
文章介绍了如何编写自定义脚本并将其设置为系统服务,包括设置开机自启动和验证,同时,文章详细解释了systemd服务文件的各个部分及其参数,如Unit、Service和Install部分,帮助读者更好地理解和配置系统服务

1、编写自定义脚本

cat /root/test.sh

#!/bin/bash
#每隔5s打印当前时间并输出到指定文件里
while true
do
  echo "`date '+%Y-%m-%d %H:%M:%S'`" >> /root/a.log
  sleep 5
done

2、将脚本设置成服务

[root@XIEXC ~]# cat /usr/lib/systemd/system/zdy.service
[Unit]
Description=zidingyi-shell            #需修改
After=network.target

[Service]
Type=simple
User=root
ExecStart=/bin/bash /root/test.sh      #需修改,执行的命令
Restart=on-failure

[Install]
WantedBy=multi-user.target

3、设置开机自启动

systemctl start zdy.service #手动开启服务
systemctl enable zdy.service  #设置为开机自启动

查看开机服务项

[root@XIEXC ~]#  systemctl list-unit-files | grep enable | grep zdy*
zdy.service                                   enabled

4、验证

reboot后

tail -f /root/a.log

验证完记得删除此测试服务!!!

附:service文件参数详情

1、Unit部分

[Unit]
Description=zidingyi-shell
After=network.target

是启动顺序与依赖关系

  • 1)Description字段:给出当前服务的简单描述。
  • 2)After字段:表示本服务应该在某服务之后启动。(After和Before字段只涉及启动顺序,不涉及依赖关系。设置依赖关系,需要使用Wants字段和Requires字段。)
  • 3)Wants字段:表示本服务与某服务之间存在“依赖”系,如果被依赖的服务启动失败或停止运行,不影响本服务的继续运行。
  • 4)Requires字段,表示本服务与某服务之间存在“强依赖”系,如果被依赖的服务启动失败或停止运行,本服务也必须退出。

2、Service部分

[Service]
Type=simple
User=root
ExecStart=/bin/bash /root/test.sh
Restart=on-failure

1)Type字段:定义启动类型

  • simple(默认值):ExecStart字段启动的进程为主进程。forking:ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程。
  • oneshot:类似于simple,但只执行一次,Systemd会等它执行完,才启动其他服务。
  • dbus:类似于simple,但会等待D-Bus信号后启动。
  • notify:类似于simple,启动结束后会发出通知信号,然后Systemd再启动其他服务。
  • idle:类似于simple,但是要等到其他任务都执行完,才会启动该服务。​

2)ExecStart字段:启动服务时执行的命令,可以是可执行程序、系统命令或shell脚本

3)Restart字段:服务程序退出后,Systemd的重启方式

no(默认值):退出后不会重启;on-failure:非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启

3、Install部分

[Install]
WantedBy=multi-user.target

定义如何安装这个配置文件,即怎样做到开机启动

1)WantedBy字段:表示该服务所在的Target。

(Target的含义是服务组,表示一组服务。WantedBy=multi-user.target指的是,自定义脚本所在的Target是multi-user.target(多用户模式)。这个设置非常重要,因为执行systemctl enable zdy.service命令时,zdy.service会被链接到/etc/systemd/system/multi-user.target.wants目录之中,实现开机启动的功能。)

​总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Linux中定时任务与开机启动任务的配置完整指南

    Linux中定时任务与开机启动任务的配置完整指南

    这篇文章主要为大家详细介绍了Linux中定时任务与开机启动任务的配置相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-10-10
  • Ubuntu环境安装Anaconda3完整步骤

    Ubuntu环境安装Anaconda3完整步骤

    大家好,本篇文章主要讲的是Ubuntu环境安装Anaconda3完整步骤,感兴趣的同学快来看一看吧,对你有帮助的话记得收藏一下哦
    2021-11-11
  • linux系统的初始化配置浅析

    linux系统的初始化配置浅析

    本文给大家介绍linux系统的初始化配置,涉及到网络的初始化,主机名的修改,关闭firewalld和selinux的方法等知识点,本文介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-10-10
  • linux系统内核升级导致进不去系统的解决方案

    linux系统内核升级导致进不去系统的解决方案

    本文介绍了使用sudo apt-get update命令后,内核更新导致显示驱动不匹配的问题,提供了两种解决方法:重新安装系统驱动或进入旧内核系统删除新内核并更新GRUB,以恢复正常系统
    2026-01-01
  • centos7.2搭建nginx的web服务器部署uniapp项目

    centos7.2搭建nginx的web服务器部署uniapp项目

    这篇文章主要介绍了centos7.2搭建nginx的web服务器部署uniapp项目,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • linux下建站目录分配权限的经验技巧总结

    linux下建站目录分配权限的经验技巧总结

    在建站的时候给目录分配权限是非常重要的,也是建站的程序员们必须要会的,下面这篇文章主要给大家总结了在linux下建站目录分配权限的经验技巧,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-06-06
  • CentOS7—HAProxy安装与配置详解

    CentOS7—HAProxy安装与配置详解

    这篇文章主要介绍了CentOS7—HAProxy安装与配置详解,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-01-01
  • Linux 下rpm命令参数详解

    Linux 下rpm命令参数详解

    linux下的rpm常用命令,主要是用来安装rmp包,是linux下比较方便的东西
    2008-06-06
  • 在Linux中列出Systemd下所有正在运行的服务的方法指南

    在Linux中列出Systemd下所有正在运行的服务的方法指南

    Systemd是Linux的系统和服务管理器; init进程的替代品,与SysV 和LSB init脚本兼容,systemctl命令是管理systemd的主要工具,在这篇文章中,我们将演示如何 Linux中列出systemd下所有正在运行的服务,感兴趣的同学可以借鉴阅读
    2023-06-06
  • 如何解决yum无法安装epel-release的问题

    如何解决yum无法安装epel-release的问题

    这篇文章主要介绍了如何解决yum无法安装epel-release的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05

最新评论