CentOS上如何自定义开机启动服务

一:简单的例子

在CentOS7之后自定义开机启动服务,可以通过创建一个systemd服务单元文件来实现。以下是创建自定义服务并设置其开机启动的步骤:

1,编辑服务文件,并添加以下内容:

[Unit]
Description=My custom startup service
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/my_service.sh

[Install]
WantedBy=multi-user.target

2,使服务文件可执行:

chmod +x /etc/systemd/system/my_service.service

3,重新加载systemd管理器配置:

systemctl daemon-reload

4,启用服务以在开机时启动:

systemctl enable my_service.service

5,(可选)立即启动服务,而不需要重启:
 

systemctl start my_service.service

二:语法

1,文件存放

CentOS 7的服务systemctl脚本存放在/usr/lib/systemd/,有系统(system)和用户(user)之分,需要开机不登陆就能运行的程序,还是存在系统服务里,即/usr/lib/systemd/system目录下。每一个服务以.service结尾,一般会分为3部分:[Unit]、[Service]和[Install]
 

2, gdm例子

cat gdm.service 
[Unit]
Description=GNOME Display Manager


# replaces the getty
Conflicts=getty@tty1.service
After=getty@tty1.service


# replaces plymouth-quit since it quits plymouth on its own
Conflicts=plymouth-quit.service
After=plymouth-quit.service


# Needs all the dependencies of the services it's replacing
# pulled from getty@.service and plymouth-quit.service
# (except for plymouth-quit-wait.service since it waits until
# plymouth is quit, which we do)
After=rc-local.service plymouth-start.service systemd-user-sessions.service


# GDM takes responsibility for stopping plymouth, so if it fails
# for any reason, make sure plymouth still stops
OnFailure=plymouth-quit.service


[Service]
ExecStart=/usr/sbin/gdm
ExecStartPost=-/bin/bash -c "TERM=linux /usr/bin/clear > /dev/tty1"
KillMode=mixed
Restart=always
IgnoreSIGPIPE=no
BusName=org.gnome.DisplayManager
StandardOutput=syslog
StandardError=inherit
EnvironmentFile=-/etc/locale.conf
ExecReload=/bin/kill -SIGHUP $MAINPID


[Install]
Alias=display-manager.service

首先,gdm.service是一个systemd服务单元文件,用于定义GNOME Display Manager (GDM)的启动、停止和管理方式。Systemd是Linux系统的一个初始化系统和服务管理器,它用于启动和管理系统服务。接下来,我会逐段解释这个文件的内容:

[Unit]

Description=GNOME Display Manager:为服务提供一个描述,这里是“GNOME Display Manager”。
Conflicts=getty@tty1.service 和 After=getty@tty1.service:这表示GDM与getty@tty1.service有冲突,并且GDM应在getty@tty1.service之后启动。
Conflicts=plymouth-quit.service 和 After=plymouth-quit.service:同样,这表示GDM与plymouth-quit.service有冲突,并且GDM应在plymouth-quit.service之后启动。
After=rc-local.service plymouth-start.service systemd-user-sessions.service:这表示GDM应在这些服务之后启动。
OnFailure=plymouth-quit.service:如果GDM启动失败,则尝试启动plymouth-quit.service。
[Service]

ExecStart=/usr/sbin/gdm:定义启动GDM的命令。
ExecStartPost=-/bin/bash -c "TERM=linux /usr/bin/clear > /dev/tty1":在GDM启动后执行的命令。这里使用bash来清除/dev/tty1的内容。
KillMode=mixed:定义如何停止服务。mixed意味着首先尝试SIGTERM,然后SIGKILL。
Restart=always:无论何种情况,只要GDM退出,就总是重启它。
IgnoreSIGPIPE=no:是否忽略SIGPIPE信号。在这里,我们不忽略它。
BusName=org.gnome.DisplayManager:服务的DBus名称。
StandardOutput=syslog:将标准输出发送到系统日志。
StandardError=inherit:标准错误继承父进程的设置。
EnvironmentFile=-/etc/locale.conf:加载/etc/locale.conf文件以设置环境变量。
ExecReload=/bin/kill -SIGHUP $MAINPID:重新加载服务的命令。这里发送SIGHUP信号给主进程。
[Install]

Alias=display-manager.service:为服务定义一个别名,这样你可以使用display-manager.service来引用这个服务。
总的来说,这个服务单元文件定义了GDM的启动方式、依赖关系、启动后的操作以及重启策略等。它是systemd用来管理GDM服务的关键配置文件。	 

相关推荐

  1. CentOS如何定义开机启动服务

    2024-05-01 23:36:04       38 阅读
  2. 定义服务启动失败

    2024-05-01 23:36:04       48 阅读
  3. centos安装服务及设置启动

    2024-05-01 23:36:04       30 阅读
  4. CentOS配置应用服务启动

    2024-05-01 23:36:04       28 阅读
  5. linux定义开机启动

    2024-05-01 23:36:04       29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-01 23:36:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-01 23:36:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-01 23:36:04       82 阅读
  4. Python语言-面向对象

    2024-05-01 23:36:04       91 阅读

热门阅读

  1. Centos卸载mysql

    2024-05-01 23:36:04       33 阅读
  2. 编程新手如何快速提升编码能力?

    2024-05-01 23:36:04       36 阅读
  3. 【C++STL】String类的常用函数用法总结

    2024-05-01 23:36:04       34 阅读
  4. 队列——用数组来表示

    2024-05-01 23:36:04       32 阅读
  5. CSS面试题

    2024-05-01 23:36:04       29 阅读
  6. 【经验总结】 PostgreSQL的COALESCE 函数用法

    2024-05-01 23:36:04       28 阅读