Red Hat Training

A Red Hat training course is available for RHEL 8

17.8. 将 SysV init 脚本转换为单元文件

在花费时间将 SysV 初始化脚本转换为单元文件之前,请确保在别处尚未执行转换。Red Hat Enterprise Linux 上安装的所有核心服务都有默认的单元文件,这同样适用于许多第三方软件包。

将初始化脚本转换成单元文件需要分析脚本并从中提取所需信息。基于这个数据,您可以创建一个单元文件。因为初始化脚本可能会随服务类型有很大的变化,因此您可能需要使用比本章中所介绍的更多的配置选项来进行转换。请注意,systemd 单元不再支持 init 脚本提供某种级别的定制。

转换所需的大部分信息是在脚本标头中提供的。以下示例显示了用于在 Red Hat Enterprise Linux 6 上启动 postfix 服务的初始化脚本的开头部分:

#!/bin/bash
# postfix      Postfix Mail Transfer Agent
# chkconfig: 2345 80 30
# description: Postfix is a Mail Transport Agent, which is the program that moves mail from one machine to another.
# processname: master
# pidfile: /var/spool/postfix/pid/master.pid
# config: /etc/postfix/main.cf
# config: /etc/postfix/master.cf
### BEGIN INIT INFO
# Provides: postfix MTA
# Required-Start: $local_fs $network $remote_fs
# Required-Stop: $local_fs $network $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop postfix
# Description: Postfix is a Mail Transport Agent, which is the program that moves mail from one machine to another.
### END INIT INFO

在上面的例子中,只有以 # chkconfig# description 开头的行是强制的,因此您可能不会在不同的 init 文件中找到其他行。BEGIN INIT INFO END INIT INFO 行之间连接的文本名为 Linux Standard Base (LSB) header。如果指定了,LSB 标头包含定义服务描述、依赖项和默认运行级别的指令。下面是一个分析任务概述,旨在收集新单元文件所需的数据。postfix 初始化脚本被用作一个示例。