ILi*_*les 4 ubuntu init-script shell-script init.d
我的脚本未在 Ubuntu 下的 vagrant 框中启动时运行。
我的脚本看起来像这样 -
#!/bin/bash
# /etc/init.d/mailcatcher
### BEGIN INIT INFO
# Provides: scriptname
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
mailcatcher --http-ip 192.168.50.10
Run Code Online (Sandbox Code Playgroud)
我对文件的权限如下所示 -
-rwxr-xr-x 1 root root 352 Apr 30 09:59 mailcatcher.sh
Run Code Online (Sandbox Code Playgroud)
我运行命令 -
sudo update-rc.d "mailcatcher.sh" defaults
Run Code Online (Sandbox Code Playgroud)
如果我手动运行脚本,它会工作并启动 mailcatcher。如果我重新启动计算机,mailcatcher 守护程序不会启动。我错过了什么吗?
这是一个 Ubuntu Linux 问题,现在发布了 15 版。Ubuntu 世界现在已经有了 systemd。但即使在第 15 版之前,Ubuntu 世界也有新贵。真的没有理由编写 System 5rc
脚本;从那里开始当然没有充分的理由。
upstart 和 systemd 都做所有的“服务控制”。您需要做的就是描述服务。
要放置在 中的 systemd 服务单元 /etc/systemd/system/mailcatcher.service
是
[单元] 描述=Ruby MailCatcher 文档=http://mailcatcher.me/ [服务] # Ubuntu/Debian 约定: EnvironmentFile=-/etc/default/mailcatcher 类型=简单 ExecStart=/usr/bin/mailcatcher --foreground --http-ip 192.168.50.10 [安装] WantedBy=multi-user.target
这会自动获取所有 systemd 控件之一,例如:
systemctl enable mailcatcher.service
将服务设置为在启动时自动启动。systemctl preset mailcatcher.service
如果本地策略允许,将服务设置为在启动时自动启动。systemctl start mailcatcher.service
手动启动服务。systemctl status mailcatcher.service
查看服务状态。Upstart 是类似的,修改 Fideloper LLC 的 upstart 工作文件到这个问题给出了这个/etc/init/mailcatcher.conf
:
描述“邮件捕手” 从运行级别开始 [2345] 在运行级别停止 [!2345] 重生 exec /usr/bin/mailcatcher --foreground --http-ip=192.168.50.10
这会自动获得所有新贵控件之一,例如:
initctl start mailcatcher
手动启动服务。initctl status mailcatcher
查看服务状态。为了好玩,为了让任何通过 WWW 搜索找到这个的 daemontools-family-using 人娱乐,并展示另一个不从 System 5rc
脚本开始的原因,我通过nosh 工具集的 convert-systemd-units
命令运行该 systemd 服务单元来生成以下 daemontools-family 运行脚本:
#!/bin/nosh #运行从./mailcatcher.service生成的文件 #Ruby MailCatcher 目录 / read-conf --oknofile /etc/default/mailcatcher /usr/bin/mailcatcher --foreground --http-ip 192.168.50.10
实际上,该convert-systemd-units
命令会生成一个完整的 nosh服务包目录。使用指定依赖项和排序信息的目录,安装/var/sv/mailcatcher
在具有 nosh 的系统中,service-manager
可以获得所有 nosh 控件,例如:
system-control enable mailcatcher.service
将服务设置为在启动时自动启动。system-control start mailcatcher.service
手动启动服务。system-control status mailcatcher.service
查看服务状态。system-control preset mailcatcher.service
如果本地配置(systemd 样式的预设或/etc/rc.conf{,.local}
)允许,将服务设置为在启动时自动启动。rc
文件开始。查看SaltStack 用于 System 5脚本的这个模板rc
。即使消除了 SaltStack 参数化,也就是 59 行 shell 脚本代码,其中大部分是您必须重新发明和重写的通用样板。再次。Celada 已经指出你重新发明它的地方很糟糕。
systemd 单元文件有 11 行长。新贵的作业文件是 8 行。noshrun
脚本是 6。它们为您完成所有启动/停止/状态机制。不要从 System V 开始rc
,尤其是在 Ubuntu Linux 上。
归档时间: |
|
查看次数: |
13869 次 |
最近记录: |