Сценарий запуска не запускается

Вы должны запустить следующие команды, чтобы восстановить папку tmp.

sudo -i
# You now have a root prompt and do not need to continue typing sudo
mkdir /tmp
chmod 1777 /tmp
exit

Тогда вы все хорошо

33
задан 17 March 2011 в 20:30

47 ответов

Обычно это означает, что у вас есть ошибка в файле .conf - например, я не уверен, что строфа pid поддерживается в 10.04, stop не может использоваться в скрипте и т. д. [!d0 ]

Я бы попробовал запустить файл с нуля (только с 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
24
ответ дан 25 May 2018 в 22:31
  • 1
    Информация в вики очень устарела ( upstart.ubuntu.com/wiki ). С другой стороны, версия с выскочкой в ​​Lucid составляет 0.6.5-8, и файл pid должен поддерживаться: upstart.ubuntu.com/wiki/… – Juan Simón 18 March 2011 в 00:12
  • 2
    AFAIK pid stanza были удалены с версии 0.5.0 2008-08-12 "One of those deaf-mutes". Не используйте его. – arrange 18 March 2011 в 00:39
  • 3
    Кто-то знает, где обновленная документация? – Juan Simón 18 March 2011 в 02:50

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

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

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

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

Обычно это означает, что у вас есть ошибка в файле .conf - например, я не уверен, что строка pid поддерживается в 10.04, stop [ ! d2] не может использоваться в скрипте и т. д.

Я бы попробовал запустить файл с нуля (только с start , stop и т. д. ), а затем медленно наращивая его, добавляя все больше и больше строк и тестируя его с помощью start pure-ftpd .

Например:

   # cat pure-ftpd.conf начать с остановки файловой системы на уровне запуска S respawn respawn limit 10 5 # start pure-ftpd pure-ftpd start / running # cat pure-ftpd.conf начать с остановки файловой системы на уровне выполнения S respawn respawn limit 10 5 pid  file /var/run/pure-ftpd.pid # start pure-ftpd start: Неизвестная работа: pure-ftpd  
24
ответ дан 6 August 2018 в 03:55

Обычно это означает, что у вас есть ошибка в файле .conf - например, я не уверен, что строка pid поддерживается в 10.04, stop [ ! d2] не может использоваться в скрипте и т. д.

Я бы попробовал запустить файл с нуля (только с start , stop и т. д. ), а затем медленно наращивая его, добавляя все больше и больше строк и тестируя его с помощью start pure-ftpd .

Например:

   # cat pure-ftpd.conf начать с остановки файловой системы на уровне запуска S respawn respawn limit 10 5 # start pure-ftpd pure-ftpd start / running # cat pure-ftpd.conf начать с остановки файловой системы на уровне выполнения S respawn respawn limit 10 5 pid  file /var/run/pure-ftpd.pid # start pure-ftpd start: Неизвестная работа: pure-ftpd  
24
ответ дан 7 August 2018 в 21:52

Обычно это означает, что у вас есть ошибка в файле .conf - например, я не уверен, что строка pid поддерживается в 10.04, stop [ ! d2] не может использоваться в скрипте и т. д.

Я бы попробовал запустить файл с нуля (только с start , stop и т. д. ), а затем медленно наращивая его, добавляя все больше и больше строк и тестируя его с помощью start pure-ftpd .

Например:

   # cat pure-ftpd.conf начать с остановки файловой системы на уровне запуска S respawn respawn limit 10 5 # start pure-ftpd pure-ftpd start / running # cat pure-ftpd.conf начать с остановки файловой системы на уровне выполнения S respawn respawn limit 10 5 pid  file /var/run/pure-ftpd.pid # start pure-ftpd start: Неизвестная работа: pure-ftpd  
24
ответ дан 10 August 2018 в 10:06

Обычно это означает, что у вас есть ошибка в файле .conf - например, я не уверен, что строка pid поддерживается в 10.04, stop [ ! d2] не может использоваться в скрипте и т. д.

Я бы попробовал запустить файл с нуля (только с start , stop и т. д. ), а затем медленно наращивая его, добавляя все больше и больше строк и тестируя его с помощью start pure-ftpd .

Например:

   # cat pure-ftpd.conf начать с остановки файловой системы на уровне запуска S respawn respawn limit 10 5 # start pure-ftpd pure-ftpd start / running # cat pure-ftpd.conf начать с остановки файловой системы на уровне выполнения S respawn respawn limit 10 5 pid  file /var/run/pure-ftpd.pid # start pure-ftpd start: Неизвестная работа: pure-ftpd  
24
ответ дан 13 August 2018 в 16:26
  • 1
    Информация в вики очень устарела ( upstart.ubuntu.com/wiki ). С другой стороны, версия с выскочкой в ​​Lucid составляет 0.6.5-8, и файл pid должен поддерживаться: upstart.ubuntu.com/wiki/… – Juan Simón 18 March 2011 в 00:12
  • 2
    AFAIK pid stanza были удалены с версии 0.5.0 2008-08-12 «Один из этих глухих отключений» . Не используйте его. – arrange 18 March 2011 в 00:39
  • 3
    Кто-то знает, где обновленная документация? – Juan Simón 18 March 2011 в 02:50

Вы также можете запустить init-checkconf, чтобы проверить синтаксис

init-checkconf /etc/init/job.conf
File /etc/init/job.conf: syntax ok
45
ответ дан 25 May 2018 в 22:31
  • 1
    Команда не существует в 10.04, но она существует в 12.04. – Mark Stosberg 6 May 2013 в 21:52
  • 2
    Но он не работает на безголовом сервере Ubuntu 12.04 (пока). См. bugs.launchpad.net/upstart/+bug/881885 – FvD 14 July 2013 в 02:44
  • 3
    Нашел вопрос сразу! - Должен быть встроен в команду start, поэтому он дает более информативное сообщение об ошибке ... – A T 22 February 2015 в 14:55

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

sudo initctl list | grep your_job_name

Если она не найдена, вы можете попробовать перезагрузить конфигурацию, а затем повторить проверку:

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, у вас может быть несколько.

26
ответ дан 25 May 2018 в 22:31
  • 1
    И что, если это показывает, что задание неизвестно выскочкам, хотя синтаксис верен и находится в / etc / init? – FvD 14 July 2013 в 01:30
  • 2
    Вы пытались запустить sudo initctl reload-configuration " как было предложено? Вы проверяли разрешения, журналы, документы? – Mark Stosberg 15 July 2013 в 17:26
  • 3
    Я сделал это и снова прочитал ваш комментарий. Даже убедитесь, что пользователь был системным пользователем (useradd -r). Возможно, может быть что-то еще неправильное - не связанное с выскочкой - поэтому я отправил проблему разработчикам службы, которую я пытаюсь запустить (это блестящий сервер, который я пытаюсь запустить при загрузке). – FvD 15 July 2013 в 20:56
  • 4
    И ведь это были разрешения! даже несмотря на то, что при просмотре каталога все выглядело персиковым, только после того, как chmod 644 действительно запустил сценарий. Еще раз спасибо. – FvD 15 July 2013 в 23:10
  • 5
    ubuntu - это боль, я не помню, чтобы запускать все эти команды в rhel, просто обновляйте файл conf и запускайте. Зачем нужна перезагрузка? Это сработало, хотя спасибо. – radtek 3 September 2014 в 07:08

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

man 5 init

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

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

Вы можете увидеть ошибку, подобную этой:

init: /etc/init/test.conf:2: Unknown stanza
6
ответ дан 25 May 2018 в 22:31

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

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

upstarts использует inotify для мониторинга изменений файла .conf и заданий автоматической установки, это очень круто «Неизвестное задание» , но может быть не идеальным, если вы (как и я в этом случае) используете FTP / SCP GUI для загрузки и редактирования конфигураций на удаленных серверах, задание может быть тихо удалено выскочкой при редактировании файла таким образом.

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

touch /etc/init/*

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

3
ответ дан 25 May 2018 в 22:31

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

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

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

$ ls -al /sbin/initctl

Вы увидите, что initctl не то же самое в Docker и других.

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

2
ответ дан 25 May 2018 в 22:31
  • 1
    Идти в ту же проблему с докером: короче говоря, и суммировать, докер выполняет только один процесс за раз, поэтому он не может запускать выскочку и что-то еще. Чтобы перезапустить службу, если / когда она умирает, я закончил использование supervisord. PS: вы не должны запускать несколько сервисов в контейнере: весь смысл использования контейнеров заключается в создании микросервисов, поэтому создавайте куски в отдельных контейнерах и объединяйте их с Docker-Compose – MrE 14 June 2015 в 23:12
  • 2
    Я просто столкнулся с этой статьей, и это дает очень хороший совет о том, как разделить проблемы: blog.docker.com/2014/06/why-you-dont-need-to-run-sshd-in-docker , что, вероятно, является еще лучшей стратегией использования, чем использование супервизора – MrE 15 June 2015 в 22:23

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

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

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

$ ls -al /sbin/initctl

Вы увидите, что initctl не то же самое в Docker и других.

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

2
ответ дан 25 July 2018 в 22:20
  • 1
    Идти в ту же проблему с докером: короче говоря, и суммировать, докер выполняет только один процесс за раз, поэтому он не может запускать выскочку и что-то еще. Чтобы перезапустить службу, если / когда она умирает, я закончил использование supervisord. PS: вы не должны запускать несколько сервисов в контейнере: весь смысл использования контейнеров заключается в создании микросервисов, поэтому создавайте куски в отдельных контейнерах и объединяйте их с Docker-Compose – MrE 14 June 2015 в 23:12
  • 2
    Я просто столкнулся с этой статьей, и это дает очень хороший совет о том, как разделить проблемы: blog.docker.com/2014/06/why-you-dont-need-to-run-sshd-in-docker , что, вероятно, является еще лучшей стратегией использования, чем использование супервизора – MrE 15 June 2015 в 22:23

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

sudo initctl list | grep your_job_name

Если она не найдена, вы можете попробовать перезагрузить конфигурацию, а затем повторить проверку:

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, у вас может быть несколько.

26
ответ дан 25 July 2018 в 22:20
  • 1
    И что, если это показывает, что задание неизвестно выскочкам, хотя синтаксис верен и находится в / etc / init? – FvD 14 July 2013 в 01:30
  • 2
    Вы пытались запустить sudo initctl reload-configuration & quot; как было предложено? Вы проверяли разрешения, журналы, документы? – Mark Stosberg 15 July 2013 в 17:26
  • 3
    Я сделал это и снова прочитал ваш комментарий. Даже убедитесь, что пользователь был системным пользователем (useradd -r). Возможно, может быть что-то еще неправильное - не связанное с выскочкой - поэтому я отправил проблему разработчикам службы, которую я пытаюсь запустить (это блестящий сервер, который я пытаюсь запустить при загрузке). – FvD 15 July 2013 в 20:56
  • 4
    И ведь это были разрешения! даже несмотря на то, что при просмотре каталога все выглядело персиковым, только после того, как chmod 644 действительно запустил сценарий. Еще раз спасибо. – FvD 15 July 2013 в 23:10
  • 5
    ubuntu - это боль, я не помню, чтобы запускать все эти команды в rhel, просто обновляйте файл conf и запускайте. Зачем нужна перезагрузка? Это сработало, хотя спасибо. – radtek 3 September 2014 в 07:08

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

man 5 init

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

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

Вы можете увидеть ошибку, подобную этой:

init: /etc/init/test.conf:2: Unknown stanza
6
ответ дан 25 July 2018 в 22:20

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

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

upstarts использует inotify для мониторинга изменений файла .conf и заданий автоматической установки, это очень круто «Неизвестное задание» , но может быть не идеальным, если вы (как и я в этом случае) используете FTP / SCP GUI для загрузки и редактирования конфигураций на удаленных серверах, задание может быть тихо удалено выскочкой при редактировании файла таким образом.

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

touch /etc/init/*

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

3
ответ дан 25 July 2018 в 22:20
  • 1
    Команда не существует в 10.04, но она существует в 12.04. – Mark Stosberg 6 May 2013 в 21:52
  • 2
    Но он не работает на безголовом сервере Ubuntu 12.04 (пока). См. [D0] bugs.launchpad.net/upstart/+bug/881885 – FvD 14 July 2013 в 02:44
  • 3
    Нашел вопрос сразу! - Должен быть встроен в команду start, поэтому он дает более информативное сообщение об ошибке ... – A T 22 February 2015 в 14:55

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

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

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

$ ls -al /sbin/initctl

Вы увидите, что initctl не то же самое в Docker и других.

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

2
ответ дан 26 July 2018 в 20:46
  • 1
    Идти в ту же проблему с докером: короче говоря, и суммировать, докер выполняет только один процесс за раз, поэтому он не может запускать выскочку и что-то еще. Чтобы перезапустить службу, если / когда она умирает, я закончил использование supervisord. PS: вы не должны запускать несколько сервисов в контейнере: весь смысл использования контейнеров заключается в создании микросервисов, поэтому создавайте куски в отдельных контейнерах и объединяйте их с Docker-Compose – MrE 14 June 2015 в 23:12
  • 2
    Я просто столкнулся с этой статьей, и это дает очень хороший совет о том, как разделить проблемы: blog.docker.com/2014/06/why-you-dont-need-to-run-sshd-in-docker , что, вероятно, является еще лучшей стратегией использования, чем использование супервизора – MrE 15 June 2015 в 22:23

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

sudo initctl list | grep your_job_name

Если она не найдена, вы можете попробовать перезагрузить конфигурацию, а затем повторить проверку:

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, у вас может быть несколько.

26
ответ дан 26 July 2018 в 20:46
  • 1
    И что, если это показывает, что задание неизвестно выскочкам, хотя синтаксис верен и находится в / etc / init? – FvD 14 July 2013 в 01:30
  • 2
    Вы пытались запустить sudo initctl reload-configuration & quot; как было предложено? Вы проверяли разрешения, журналы, документы? – Mark Stosberg 15 July 2013 в 17:26
  • 3
    Я сделал это и снова прочитал ваш комментарий. Даже убедитесь, что пользователь был системным пользователем (useradd -r). Возможно, может быть что-то еще неправильное - не связанное с выскочкой - поэтому я отправил проблему разработчикам службы, которую я пытаюсь запустить (это блестящий сервер, который я пытаюсь запустить при загрузке). – FvD 15 July 2013 в 20:56
  • 4
    И ведь это были разрешения! даже несмотря на то, что при просмотре каталога все выглядело персиковым, только после того, как chmod 644 действительно запустил сценарий. Еще раз спасибо. – FvD 15 July 2013 в 23:10
  • 5
    Помните, что имя_и_и_имя отсутствует .conf. Принял у меня час, чтобы узнать. – Marcel 30 December 2016 в 22:57

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

man 5 init

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

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

Вы можете увидеть ошибку, подобную этой:

init: /etc/init/test.conf:2: Unknown stanza
6
ответ дан 26 July 2018 в 20:46

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

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

upstarts использует inotify для мониторинга изменений файла .conf и заданий автоматической установки, это очень круто «Неизвестное задание» , но может быть не идеальным, если вы (как и я в этом случае) используете FTP / SCP GUI для загрузки и редактирования конфигураций на удаленных серверах, задание может быть тихо удалено выскочкой при редактировании файла таким образом.

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

touch /etc/init/*

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

46
ответ дан 26 July 2018 в 20:46
  • 1
    Команда не существует в 10.04, но она существует в 12.04. – Mark Stosberg 6 May 2013 в 21:52
  • 2
    Но он не работает на безголовом сервере Ubuntu 12.04 (пока). См. [D0] bugs.launchpad.net/upstart/+bug/881885 – FvD 14 July 2013 в 02:44
  • 3
    Нашел вопрос сразу! - Должен быть встроен в команду start, поэтому он дает более информативное сообщение об ошибке ... – A T 22 February 2015 в 14:55

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

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

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

$ ls -al /sbin/initctl

Вы увидите, что initctl не то же самое в Docker и других.

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

2
ответ дан 2 August 2018 в 03:48
  • 1
    Идти в ту же проблему с докером: короче говоря, и суммировать, докер выполняет только один процесс за раз, поэтому он не может запускать выскочку и что-то еще. Чтобы перезапустить службу, если / когда она умирает, я закончил использование supervisord. PS: вы не должны запускать несколько сервисов в контейнере: весь смысл использования контейнеров заключается в создании микросервисов, поэтому создавайте куски в отдельных контейнерах и объединяйте их с Docker-Compose – MrE 14 June 2015 в 23:12
  • 2
    Я просто столкнулся с этой статьей, и это дает очень хороший совет о том, как разделить проблемы: blog.docker.com/2014/06/why-you-dont-need-to-run-sshd-in-docker , что, вероятно, является еще лучшей стратегией использования, чем использование супервизора – MrE 15 June 2015 в 22:23

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

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, у вас могут быть некоторые.

26
ответ дан 2 August 2018 в 03:48
  • 1
    И что, если это показывает, что задание неизвестно выскочкам, хотя синтаксис верен и находится в / etc / init? – FvD 14 July 2013 в 01:30
  • 2
    Вы пытались запустить sudo initctl reload-configuration & quot; как было предложено? Вы проверяли разрешения, журналы, документы? – Mark Stosberg 15 July 2013 в 17:26
  • 3
    Я сделал это и снова прочитал ваш комментарий. Даже убедитесь, что пользователь был системным пользователем (useradd -r). Возможно, может быть что-то еще неправильное - не связанное с выскочкой - поэтому я отправил проблему разработчикам службы, которую я пытаюсь запустить (это блестящий сервер, который я пытаюсь запустить при загрузке). – FvD 15 July 2013 в 20:56
  • 4
    И ведь это были разрешения! даже несмотря на то, что при просмотре каталога все выглядело персиковым, только после того, как chmod 644 действительно запустил сценарий. Еще раз спасибо. – FvD 15 July 2013 в 23:10
  • 5
    Помните, что имя_и_и_имя отсутствует .conf. Принял у меня час, чтобы узнать. – Marcel 30 December 2016 в 22:57

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

man 5 init

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

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

Вы можете увидеть ошибку, подобную этой:

init: /etc/init/test.conf:2: Unknown stanza
6
ответ дан 2 August 2018 в 03:48

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

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

upstarts использует inotify для мониторинга изменений файла .conf и заданий автоматической установки, это очень круто «Неизвестное задание» , но может быть не идеальным, если вы (как и я в этом случае) используете FTP / SCP GUI для загрузки и редактирования конфигураций на удаленных серверах, задание может быть тихо удалено выскочкой при редактировании файла таким образом.

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

touch /etc/init/*

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

46
ответ дан 2 August 2018 в 03:48
  • 1
    Команда не существует в 10.04, но она существует в 12.04. – Mark Stosberg 6 May 2013 в 21:52
  • 2
    Но он не работает на безголовом сервере Ubuntu 12.04 (пока). См. [D0] bugs.launchpad.net/upstart/+bug/881885 – FvD 14 July 2013 в 02:44
  • 3
    Нашел вопрос сразу! - Должен быть встроен в команду start, поэтому он дает более информативное сообщение об ошибке ... – A T 22 February 2015 в 14:55

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

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

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

$ ls -al /sbin/initctl

Вы увидите, что initctl не то же самое в Docker и других.

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

2
ответ дан 4 August 2018 в 19:52
  • 1
    Идти в ту же проблему с докером: короче говоря, и суммировать, докер выполняет только один процесс за раз, поэтому он не может запускать выскочку и что-то еще. Чтобы перезапустить службу, если / когда она умирает, я закончил использование supervisord. PS: вы не должны запускать несколько сервисов в контейнере: весь смысл использования контейнеров заключается в создании микросервисов, поэтому создавайте куски в отдельных контейнерах и объединяйте их с Docker-Compose – MrE 14 June 2015 в 23:12
  • 2
    Я просто столкнулся с этой статьей, и это дает очень хороший совет о том, как разделить проблемы: blog.docker.com/2014/06/why-you-dont-need-to-run-sshd-in-docker , что, вероятно, является еще лучшей стратегией использования, чем использование супервизора – MrE 15 June 2015 в 22:23

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

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, у вас могут быть некоторые.

26
ответ дан 4 August 2018 в 19:52
  • 1
    И что, если это показывает, что задание неизвестно выскочкам, хотя синтаксис верен и находится в / etc / init? – FvD 14 July 2013 в 01:30
  • 2
    Вы пытались запустить sudo initctl reload-configuration & quot; как было предложено? Вы проверяли разрешения, журналы, документы? – Mark Stosberg 15 July 2013 в 17:26
  • 3
    Я сделал это и снова прочитал ваш комментарий. Даже убедитесь, что пользователь был системным пользователем (useradd -r). Возможно, может быть что-то еще неправильное - не связанное с выскочкой - поэтому я отправил проблему разработчикам службы, которую я пытаюсь запустить (это блестящий сервер, который я пытаюсь запустить при загрузке). – FvD 15 July 2013 в 20:56
  • 4
    И ведь это были разрешения! даже несмотря на то, что при просмотре каталога все выглядело персиковым, только после того, как chmod 644 действительно запустил сценарий. Еще раз спасибо. – FvD 15 July 2013 в 23:10
  • 5
    Помните, что имя_и_и_имя отсутствует .conf. Принял у меня час, чтобы узнать. – Marcel 30 December 2016 в 22:57

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

man 5 init

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

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

Вы можете увидеть ошибку, подобную этой:

init: /etc/init/test.conf:2: Unknown stanza
6
ответ дан 4 August 2018 в 19:52

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

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

upstarts использует inotify для мониторинга изменений файла .conf и заданий автоматической установки, это очень круто «Неизвестное задание» , но может быть не идеальным, если вы (как и я в этом случае) используете FTP / SCP GUI для загрузки и редактирования конфигураций на удаленных серверах, задание может быть тихо удалено выскочкой при редактировании файла таким образом.

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

touch /etc/init/*

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

46
ответ дан 4 August 2018 в 19:52
  • 1
    Команда не существует в 10.04, но она существует в 12.04. – Mark Stosberg 6 May 2013 в 21:52
  • 2
    Но он не работает на безголовом сервере Ubuntu 12.04 (пока). См. [D0] bugs.launchpad.net/upstart/+bug/881885 – FvD 14 July 2013 в 02:44
  • 3
    Нашел вопрос сразу! - Должен быть встроен в команду start, поэтому он дает более информативное сообщение об ошибке ... – A T 22 February 2015 в 14:55

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

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