Upstart 脚本无法启动

Upstart 脚本无法启动

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不能在脚本中使用等等。

我会尝试从头开始创建文件(仅使用startstop等等),然后通过添加越来越多的行并通过 进行测试来慢慢构建它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 配置。

相关内容