TL; 博士
如何从旧的 system-V 服务生成“可编辑”的 systemd .service 文件?
最近,我们遇到了一个问题,我们的本土“服务器管理器”无法在“Ubuntu 16.04.1”服务器上启动服务,因为所述服务处于“活动(退出)”状态,而不是“非活动”状态。谷歌搜索告诉我我可以在服务文件中添加这样的内容:
Restart=always
RestartSec=3
Run Code Online (Sandbox Code Playgroud)
但是调用“systemctl edit myservice”会得到一个空文件。显然,systemd 会根据“/etc/init.d/myservice”文件生成一些默认的 .service 文件。使用find,我发现在“/run/systemd/generator.late/myservice.service”下有一个生成的文件。但它包含很多内容,可能是特定于这次“运行”的内容,例如“Before=”和“After=”,我不确定是否应该将其用作基础。
我不想从头开始编写 .service 文件,因为我对 systemd .service 格式一无所知,而且这是一个 24/7 全天候运行的高效服务器(没有我可以用来“练习”的测试服务器克隆)。
systemd-sysv-generator
您正在使用由 van Smoorenburg脚本生成的单元rc
,很可能带有 LSB 标头信息。 systemd-sysv-generator
采用一种一刀切的方法,并经过一些猜测进行修改。van Smoorenburgrc
脚本可能会也可能不会启动长时间运行的守护进程,可能会也可能不会使用 PID 文件,等等。 systemd-sysv-generator
尝试生成适应这几种可能性的服务单元。
自动生成的服务单元是RemainAfterExit=true
从带有 LSB 信息的 van Smoorenburg 脚本生成的rc
。因此,当执行脚本的进程退出并且没有留下任何正在运行的进程时,服务仍被视为“活动”,服务进程已退出。这就是退出后剩余的意思。因此,服务进入该active (exited)
状态。
您应该停止使用/etc/init.d/myservice
并停止依赖systemd-sysv-generator
将其包装在随机数服务单元中。建立正规、一流的服务单位档案。
您可以从给您的那个开始systemctl edit --full myservice
。但对于初学者来说,显然这是一个不正确的RemainAfterExit=true
设置。
当然,这也是不继续这样做并且不继续依赖自动生成的服务单元文件的一个很好的理由。
归档时间: |
|
查看次数: |
1942 次 |
最近记录: |