脚本没有在启动时运行,systemd ubuntu

时间:2016-10-10 15:43:04

标签: ubuntu crontab systemd luigi

我正在尝试在我的Ubuntu服务器打开时启动Luigid,我尝试了几种技术,包括rc.local,cronjob(@reboot),upstart,systemd,但它们似乎都没有工作。

我应该指出,如果我手动执行该命令运行正常,我只需要它在启动时运行。在这一点上,我真的没有任何关注我的工作方式,所以这里有一些我尝试过的东西 -

的Cron:

使用

sudo crontab -e

并输入

@reboot luigid --background --logdir /home/myuser/luigilog

Systemd:

我在/ usr / bin中有一个名为luigid的脚本,其中包含以下内容,它被标记为可执行文件,我已尝试使用和不使用“exit 0”,因为可能需要正确的退出代码 -

#!/bin/sh
exec luigid --background --logdir /home/myuser/luigilog

和/ etc / systemd / system /中的服务文件名为luigid.service -

[Unit]
Description=Luigid Service

[Service]
Type=forking
ExecStart=/usr/bin/luigid

[Install]
WantedBy=multi-user.target

我试过forking(并在服务和lugid命令中指定PIDfile,somehot和simple作为没有运气的类型。

我已使用 -

启用了该服务
systemctl enable luigid.service

它似乎尝试启动服务,因为使用

检查状态

systemctl status luigid.service

显示

luigid.service - Luigid Service
   Loaded: loaded (/etc/systemd/system/luigid.service; enabled; vendor preset: enabled)
   Active: failed (Result: timeout) since Mon 2016-10-10 15:18:00 UTC; 18min ago

Oct 10 15:16:29 Analytics systemd[1]: Starting Luigid Service...
Oct 10 15:18:00 Analytics systemd[1]: luigid.service: Start operation timed out. Terminating.
Oct 10 15:18:00 Analytics systemd[1]: Failed to start Luigid Service.
Oct 10 15:18:00 Analytics systemd[1]: luigid.service: Unit entered failed state.
Oct 10 15:18:00 Analytics systemd[1]: luigid.service: Failed with result 'timeout'.

必须有一些明显我缺失的东西,在启动时运行命令真的不是很难!

1 个答案:

答案 0 :(得分:4)

查看启动选项:" rc.local"和" cron @ reboot"如果服务稍后崩溃,它会帮助你,所以它们并不理想。既然看起来你有一个基于systemd的系统,那么Upstart并不是一个真正的选择。 systemd是一个很好的选择,因为它不仅可以启动您的流程,还可以在崩溃时重新启动它。

我不知道Type=对于此服务的正确选项,但它确实很重要。查看Type=man systemd.service的文档,以确定哪一个对您的服务是正确的。

不应该要求您的包装脚本。您应该能够拥有ExecStart=这样的行:

ExecStart=/usr/bin/luigid --background --logdir /home/myuser/luigilog

如果您还没有尝试过这种组合,我还会尝试删除--background选项并将Type=设置为simple

如果你无法让它发挥作用,请尝试让你的守护进程提供更详细的日志记录,说明它无法启动的原因,或者将/usr/bin/strace添加到ExecStart=的开头。 1}}行以获取二进制文件在启动期间进行的系统调用的详细日志记录。最后的几个电话之一可能指向它挂起的地方。