在 Ubuntu 启动时启动守护进程的问题

在 Ubuntu 启动时启动守护进程的问题

我尝试启动守护进程。我尝试在启动期间运行此命令,以使用dtnd -c DTN2/dtn/dtn.conf -o DTN2/dtn/log -dubuntu 14.04 中的命令启动 DTN2 守护进程

我将其作为 shell 脚本放在计算机的某个位置,并将其添加到rc.local例如中sh '/pathtoscript/script.sh'。当我使用 时它可以工作sudo /etc/init.d/rc.local start。但是重启后它不会启动。我如何确保它运行?使用init.d或添加 Upstart 作业创建脚本是否是运行 ubuntu 14.04 启动时守护进程的更好方法。

答案1

现在,Ubuntu 给出了答案。

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

/etc/rc.local是一种双重向后兼容机制,因为它是一种向后兼容机制,而这种机制本身就是系统 5 中的兼容机制rc。正如混乱所示https://askubuntu.com/a/618138/43344地址,使用/etc/rc.local可能会出现严重错误。 不要从使用 开始rc.local

upstart 和版本 14

因此编写一个 upstart job 文件。

它看起来像这样:

#/etc/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 start使用initctl stop

不要使用该-d选项。该程序是已经通过在服务管理器下运行而被“守护”。

systemd 和版本 15

因此编写一个 systemd 服务单元。

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

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

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

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

相关内容