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

Но ... [ 119]

# start pure-ftpd
start: Unknown job: pure-ftpd

и

# service pure-ftpd start
start: Unknown job: pure-ftpd


В чем проблема?
Нужно ли делать что-то еще?
Нужно ли создавать один скрипт и в /etc/init.d?

33
задан 27 July 2018 в 11:24

6 ответов

В любом случае, я здесь, потому что у меня была та же проблема, но мой синтаксис был на 100% правильным.

После некоторой отладки я обнаружил еще одну проблему, которая может вызвать эту ошибку «Неизвестная работа» :

выскочки использует inotify для мониторинга. изменения в файле conf и задания автоматической установки, это очень круто (для этого вам не нужно что-то вроде update.rc с upstart!) , но это может быть не идеально, если вы (как и я в этом случае) используете В некоторых программах FTP / SCP GUI для загрузки и редактирования конфигураций на удаленных серверах задание может быть автоматически удалено программой upstart при редактировании файла таким образом.

чтобы исправить, просто сделайте это (что спасло меня)

touch /etc/init/*

он будет генерировать события inotify, чтобы обновить все выскочки конф.

0
ответ дан 27 July 2018 в 11:24

Обычно это означает, что у вас есть ошибка в файле .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
0
ответ дан 27 July 2018 в 11:24

Наиболее релевантная ссылка на синтаксис файла задания будет доступна при запуске команды:

man 5 init

в вашей системе. Для Ubuntu 10.04, как вы обнаружили в предыдущем ответе, синтаксис файла pid неверен.

Каждый раз, когда вы получаете сообщение об ошибке «неизвестное задание», полезно проверить журналы (до 11.04, /var/log/daemon.log, 11.04 и выше, все идет в / var / log / syslog) 114]

Вы можете увидеть такую ​​ошибку:

init: /etc/init/test.conf:2: Unknown stanza
0
ответ дан 27 July 2018 в 11:24

Во-первых, вы можете проверить, что ваша работа на самом деле известна как выскочка:

sudo initctl list | grep your_job_name

... где your_job_name - имя вашего скрипта выскочки без расширения .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 раньше, у вас, возможно, уже есть некоторые.

0
ответ дан 27 July 2018 в 11:24

У меня была та же проблема с моими контейнерами Ubuntu 14.04 Docker. Как оказалось, образ Ubuntu 14.04 (если не другие) для Docker не поддерживает Upstart так же, как полноценная виртуальная машина.

Чтобы ответить на этот вопрос, почему служба не запускается, это потому, что initctl не является реальной программой Upstart: она сопоставлена ​​с /bin/true.

Чтобы проверить, выполните следующие действия для контейнера Ubuntu 14.04 Docker против Vagrant и против капли DigitalOcean

$ ls -al /sbin/initctl

Вы увидите, что initctl в Docker отличается от других. 115]

Ссылка, которая может углубить ваше понимание .. https://github.com/docker/docker/issues/1024

0
ответ дан 27 July 2018 в 11:24

Вы также можете запустить init-checkconf для проверки синтаксиса

init-checkconf /etc/init/job.conf
File /etc/init/job.conf: syntax ok
0
ответ дан 27 July 2018 в 11:24

Другие вопросы по тегам:

Похожие вопросы: