Service 将具有动态实例的Upstart配置转换为Systemd服务

Service 将具有动态实例的Upstart配置转换为Systemd服务,service,ubuntu-16.04,systemd,upstart,ubuntu-server,Service,Ubuntu 16.04,Systemd,Upstart,Ubuntu Server,我有一个可以运行多个实例的Upstart服务。可以在任意组合中指定两个动态参数 有没有办法将其转换为systemd.service文件 start on (net-device-up and local-filesystems and runlevel [2345]) stop on runlevel [016] instance $C,$B exec [...] $C $B respawn systemd支持可用于使用单个模板启动服务的多个实例的模板。从人工系统单位中的文档: 或者,可

我有一个可以运行多个实例的Upstart服务。可以在任意组合中指定两个动态参数

有没有办法将其转换为systemd.service文件

start on (net-device-up and local-filesystems and runlevel [2345])
stop on runlevel [016]

instance $C,$B

exec [...] $C $B

respawn

systemd支持可用于使用单个模板启动服务的多个实例的模板。从
人工系统单位
中的文档:

或者,可以从runtie的模板文件实例化单元。这允许创建 单个配置文件中的多个单元。如果systemd查找单元配置文件,则 将首先在文件系统中搜索文字单位名称。如果tat不成功且单元名称包含“@”字符,systemd将查找共享相同名称但 删除实例字符串(即“@”字符和后缀之间的部分)。示例:如果 服务getty@tty3.service已请求,但未找到该名称的文件,systemd将查找 getty@.service并从该配置文件实例化服务(如果找到)

要从配置文件中引用实例字符串,可以在许多配置选项中使用特殊的“%i”说明符

在您的情况下,启动动态参数“c”和“b”的服务可能如下所示:

 systemctl start myservice@b-c.service

由于systemd只支持实例名中的一个变量,因此可能需要编写包装器外壳脚本,将实例名“b-c”解包为单独的“b”和“c”值,以传递给底层服务

systemd支持使用单个模板启动多个服务实例的模板。从
人工系统单位
中的文档:

或者,可以从runtie的模板文件实例化单元。这允许创建 单个配置文件中的多个单元。如果systemd查找单元配置文件,则 将首先在文件系统中搜索文字单位名称。如果tat不成功且单元名称包含“@”字符,systemd将查找共享相同名称但 删除实例字符串(即“@”字符和后缀之间的部分)。示例:如果 服务getty@tty3.service已请求,但未找到该名称的文件,systemd将查找 getty@.service并从该配置文件实例化服务(如果找到)

要从配置文件中引用实例字符串,可以在许多配置选项中使用特殊的“%i”说明符

在您的情况下,启动动态参数“c”和“b”的服务可能如下所示:

 systemctl start myservice@b-c.service
由于systemd只支持实例名中的一个变量,因此可能需要编写包装器外壳脚本,将实例名“b-c”解包为单独的“b”和“c”值,以传递给底层服务