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 中创建一个脚本?
答案1
您还可以运行init-checkconf
来检查语法
init-checkconf /etc/init/job.conf
File /etc/init/job.conf: syntax ok
答案2
这通常意味着文件中有错误.conf
- 例如,我不确定该pid
节是否在 10.04 中受支持,stop
不能在脚本中使用等等。
我会尝试从头开始创建文件(仅使用start
,stop
等等),然后通过添加越来越多的行并通过 进行测试来慢慢构建它start pure-ftpd
。
例如:
# cat pure-ftpd.conf
start on filesystem
stop on runlevel S
respawn
respawn limit 10 5
# start pure-ftpd
pure-ftpd start/running
# cat pure-ftpd.conf
start on filesystem
stop on runlevel S
respawn
respawn limit 10 5
pid file /var/run/pure-ftpd.pid
# start pure-ftpd
start: Unknown job: pure-ftpd
答案3
首先,你可以检查你的工作是否确实为 upstart 所知:
sudo initctl list | grep your_job_name
...your_job_name
您的 upstart 脚本的名称减去.conf
扩展名是多少。
如果没有找到,您可以尝试重新加载配置,然后重新检查:
sudo initctl reload-configuration
# re-check
sudo initctl list | grep your_job_name
然后再次尝试开始你的工作:
sudo start your_job_name
/var/log/daemon.log
如果您在登录之前没有任何信息/var/log/syslog
,那么您现在可能会有一些。
答案4
无论如何我在这里是因为我遇到了同样的问题,但我的语法 100%正确。
经过一些调试后,我发现了另一个可能导致此问题的问题“未知的工作”错误:
新兴企业用途通知监控 .conf 文件的变化和自动安装作业,这很酷(为此你不需要像 upstart 那样的 update.rc !)但如果您(像我这种情况)使用某些 FTP/SCP GUI 程序来上传和编辑远程服务器上的配置,则可能并不完美,当您以这种方式编辑文件时,该作业可能会被 upstart 静默卸载。
只需这样做即可解决(这救了我)
touch /etc/init/*
它将生成 inotify 事件来刷新所有 upstart 配置。