将基本的新贵脚本迁移到systemd


17

我刚刚将服务器从Ubuntu 14.10升级到15.04,并且通过自定义upstart脚本启动的一些服务不再运行。

我的理解是我需要将它们重新编写为systemd服务,但是systemd一夜之间学习整个系统的想法有些令人生畏。

upstart脚本只是autossh在启动时启动,而我还有其他两个类似的脚本,它们可以启动长时间运行的进程。

#/etc/init/autossh.conf

description "Maintain a permanent SSH tunnel to <other_server>"

start on started mountall
stop on shutdown

exec autossh -N other_server

如何将其重写为systemd服务?


3
为Upstart用户使用Systemd是一个很好的起点。
muru

Answers:


13

迁移到systemd的第一条规则

在这一点上,在2015年,很可能有人已经做到了。

systemd已经存在了很多年。整个家庭手工业都在编写单元文件并将其发布。尤其是GitHub,似乎吸引了服务单元集合的存储库。

确实只是在WWW上搜索autossh.service(作为短语):

模板单元

就是说,正如我仅在StackExchange上的几个地方所指出的那样,这种迁移不是一个机械过程,有时只是自动地从一个人拥有的文件转换为一个单位文件是在做错事,或者至少做得不好。在这种情况下,autossh可以使用模板单元进行积极地喘气,将其实例化为实际服务单元,并通过目标名称进行参数化。因此/etc/systemd/system/autossh@.service,具有:

[单元]
Description =用于来自%i的反向隧道的AutoSSH服务 
之后= network.target

[服务]
用户= autossh
EnvironmentFile = / etc /%p /%i.conf
ExecStart = / usr / bin / autossh -M 0 -q -N $ SSH_USER @%i $ SSH_OPTIONS

[安装]
WantedBy =多用户目标

创建一个至少命名为的文件/etc/autossh/other_server.example.conf

SSH_USER =乔

然后,将应用所有常规控件:

  • systemctl enable autossh@other_server.example —允许实例在引导时自动启动。
  • systemctl start autossh@other_server.example —立即手动启动该实例。
  • systemctl status autossh@other_server.example —查看其状态。

是的,第一个规则甚至适用于此。搜索时,可以发现在不到两周的时间里,OpenSUSE的Greg Freemyer击败了我。


谢谢-我想出了类似的内容,但我不知道“模板单元”的概念
trvrm 2015年

@JdeBP我在这里也有类似的问题。想看看是否可以帮助我。
user1950349
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.