Почему в команде службы не заполняется вкладка пользовательских высотных заданий?

16

Я использую для создания upstart-сервисов с файлом в /etc/init/<service>.conf , и он отлично работает, единственное, что я хотел бы сделать, - это выполнить табуляцию так же, как и все службы в /etc/init.d / сейчас.

При написании службы sudo xx должно появиться имя службы.

Есть ли способ добавить вышестоящие службы в этот список автозаполнения?

    
задан José F. Romaniello 01.07.2013 в 14:08
источник

1 ответ

25

Каждый пакет, предоставляющий стандартный демон с использованием upstart, должен предоставлять символическую ссылку в /etc/init.d по политике Debian. Так автозаполнение для sudo service name уже работает. Убедитесь, что у вас установлен пакет bash-completion , если у вас возникли проблемы.

Если вы создаете свои собственные upstart-задания, то symlink /etc/init.d/your_job to /lib/init/upstart-job , как и другие стартовые задания, уже выполняется. Это приведет к тому, что ваши собственные работы будут работать одинаково.

В /etc/init есть специальные старшие задания, у которых нет соответствующей записи в /etc/init.d . Это исключение. Из политики Debian:

  

Исключением из этого правила являются скрипты или задания, предоставленные самой реализацией init; такие задания могут потребоваться для эквивалента сценария /etc/rcS.d/, специфичного для реализации, и могут не иметь взаимно однозначного соответствия сценариям init.

Эти исключения в настоящее время не работают с bash-completion . Однако вы можете напрямую использовать start , stop , restart и reload без service , и автозаполнение будет работать. Например, sudo start shut правильно автозаполняется. Но обычно вам не нужно напрямую вызывать upstart-задания, у которых нет соответствующей записи init.d .

Примечание. Я тестировал это на Saucy. Если поддержка не появляется в более ранней версии, возможно, она недоступна (но вы скоро ее получите при обновлении до достаточно новой версии).

    
ответ дан Robie Basak 01.07.2013 в 14:20
источник