在Ubuntu启动时启动恶魔进程的问题

我尝试了启动Deamon进程。 我试图在启动期间运行此命令以使用命令dtnd -c DTN2/dtn/dtn.conf -o DTN2/dtn/log -d在ubuntu 14.04中启动DTN2 dtnd -c DTN2/dtn/dtn.conf -o DTN2/dtn/log -d

我在计算机的一个位置将其作为shell脚本,并将其添加到rc.local例如sh '/pathtoscript/script.sh' 。 它在我使用sudo /etc/init.d/rc.local start 。 但是重启后它没有启动。 我怎样才能确保这个运行? 使用init.d创建脚本或添加Upstart作业将是在ubuntu 14.04启动时运行deamon的更好方法。

现在,Ubuntu回答。

您正在使用Ubuntu Linux。 您已经拥有upstart或systemd(在此特定情况下为前者)。 不要从编写System 5 rc脚本开始。

/etc/rc.local是一种双向后兼容机制,因为它是一种机制的向后兼容机制,它本身就是System 5 rc的兼容机制。 正如https://askubuntu.com/a/618138/43344解决的问题所示,使用/etc/rc.local可能会出现严重错误。 不要以使用rc.local开头。

新贵和版本14

所以写一个upstart作业文件。

它看起来像这样:

 #etet/init/dtnd.conf

描述“DTN2守护进程”

从文件系统和静态网络开始
在运行级别停止[016]

 env DAEMON ='/ usr / sbin / dtnd'

重生

 exec / usr / sbin / dtnd -c /etc/dtn/dtn.conf -o / var / log / dtn / log

调整您的日志和配置设置; 并以通常的方式使用initctl startinitctl stop等作为upstart作业。

不要使用-d选项。 该程序已经在服务管理器下运行, 已经 “守护进程”。

systemd和版本15

所以写一个systemd服务单元。

迁移到systemd的第一条规则适用于…… 有人已经这样做了。 有关示例,请参阅2012年由假名撰写的dtnd.service

再次: 不要使用-d选项。 该程序已经在服务管理器下运行, 已经 “守护进程”。

另请注意,您不需要-o选项。 以普通方式记录到标准输出/标准错误,systemd将其写入日志。

以通常的方式用作systemctl startsystemctl stopsystemctl status等作为systemd服务。 特别是,使用systemctl enable确保在系统引导程序中自动启动服务。