Ubuntu 10.04
我创建了这个新贵脚本(/etc/init/pure-ftpd.conf):
# pure-ftpd - FTP server
description "Pure-FTPd server"
start on filesystem
stop on runlevel S
respawn
respawn limit 10 5
pid file /var/run/pure-ftpd.pid
console output
pre-start script
test -x /usr/local/sbin/pure-ftpd || { stop; exit 0; }
end script
exec /usr/local/sbin/pure-ftpd --maxclientsnumber 2 --maxclientsperip 10 --prohibitdotfileswrite --prohibitdotfilesread --noanonymous --chrooteveryone --dontresolve --nochmod --pidfile /var/run/pure-ftpd.pid
但...
# start pure-ftpd
start: Unknown job: pure-ftpd
和
# service pure-ftpd start
start: Unknown job: pure-ftpd
有什么问题?
是否有必要做更多的事情?
是否也需要在 /etc/init.d 中创建一个脚本?
您还可以运行
init-checkconf
以检查语法这通常意味着您的文件中有错误
.conf
- 例如,我不确定pid
10.04 中是否支持该节,stop
不能在脚本中使用等。我会尝试从头开始文件(仅使用
start
等stop
),然后通过添加越来越多的行并通过start pure-ftpd
.例如:
首先,您可以检查您的工作是否确实已知为暴发户:
...
your_job_name
您的新贵脚本的名称减去.conf
扩展名在哪里。如果没有找到,您可以尝试重新加载配置,然后重新检查:
然后再次尝试开始您的工作:
如果您没有登录
/var/log/daemon.log
或/var/log/syslog
之前没有登录,您现在可能有一些登录。运行命令时,将提供最相关的作业文件语法参考:
在您的系统上。对于 Ubuntu 10.04,正如您在上一个答案中发现的,pid 文件语法不正确。
每当您收到“未知作业”错误时,最好检查日志(11.04 之前、/var/log/daemon.log、11.04 及更高版本中的所有内容都在 /var/log/syslog 中)
您可能会看到如下错误:
无论如何,我在这里是因为我遇到了同样的问题,但我的语法是 100% 正确的。
经过一些调试后,我发现了另一个可能导致此“未知作业”错误的问题:
upstarts使用inotify来监视 .conf 文件更改和自动安装作业,这非常酷(为此,您不需要 update.rc 之类的 upstart !)但如果您(在这种情况下像我一样)使用它可能并不完美一些用于在远程服务器上上传和编辑配置的 FTP/SCP GUI 程序,当您以这种方式编辑文件时,新贵可以静默卸载该作业。
修复简单地做到这一点(这救了我)
它将生成 inotify 事件以刷新所有新贵的 confs。
我在 Ubuntu 14.04 Docker 容器中遇到了同样的问题。事实证明,Docker 的 Ubuntu 14.04 镜像(如果不是其他镜像)不像完整的虚拟机那样支持 Upstart。
要回答这个问题,为什么服务不启动,是因为 initctl 不是一个实际的 Upstart 程序:它映射到 /bin/true。
要验证在 Ubuntu 14.04 Docker 容器、Vagrant 和 DigitalOcean 液滴上运行以下命令
您会看到 initctl 在 Docker 中与其他不同。
一个可以进一步理解的链接.. https://github.com/docker/docker/issues/1024