Menu Close

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

在将 SysV init 脚本转换为单元文件前,请确保在其它位置还没有进行相关的转换。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 init 脚本用作示例。