Назад | Перейти на главную страницу

Мой сценарий инициализации не отображается при автозаполнении службы

Я сделал сценарий инициализации для призрачного сайта. Я использую Linux Mint 16 (также известный как Ubuntu 13.10)

Когда я набираю это, мой сценарий не отображается при автозаполнении.

sudo service f<tab>

По какой причине? Я получаю другой сценарий "friendly_recover", но не мой.

Спасибо!

Майк

/etc/init/f Furtheryet.org.conf

# furtheryet.org

start on startup

script
    cd /var/www/furtheryet.org/ghost
    npm start --production
end script

Это старый вопрос, но я получил его через Google, и выбран неверный ответ.

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

Каждый пакет, который предоставляет стандартный демон, использующий выскочку, должен предоставить символическую ссылку в /etc/init.d в соответствии с политикой Debian.

Тогда будет работать автодополнение имени службы sudo.

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

Если вы находитесь в том же типе каталога ./f затем ударил <tab>. В противном случае вам нужно ввести: /etc/init/f прежде чем ты ударил <tab>.

И ваш скрипт должен быть исполняемым:

chmod +x /etc/init/furtheryet.org.conf

Вы ожидаете, что sudo service f<tab> будет автоматически заполнено sudo service furtheryet.org.conf ?

Нет, не будет, потому что:

  • это просто файл конфигурации
  • он находится в неправильном каталоге для этого

Вы должны учитывать /etc/init.d папка:

  • В /etc/init/ папка содержит только файлы конфигурации, используемые Upstart.

  • В /etc/init.d папка содержит сценарии оболочки, которые отвечают на start, stop, restart, reload (и что бы вы ни реализовали).

Дальнейшее чтение : https://askubuntu.com/questions/5039/what-is-the-difference-between-etc-init-and-etc-init-d

Тем не менее, чтобы ваш скрипт выполнялся автоматически, вы должны хотя бы поместить его в /etc/init.d папку и сделайте ее исполняемой.

Но на самом деле ваш сценарий - это просто файл конфигурации. Вам следует подумать о написании конкретного сценарий службы / инициализации и положи это в свой /etc/init.d папка.


В некоторых случаях я заметил, что даже если скрипт находится в /etc/init.d у вас могут быть проблемы с автозаполнением на Ubuntu 13.10 так как root пользователь.

Чтобы исправить это, как пользователь root, отредактируйте $HOME/.bachrc файл и раскомментируйте следующее:

if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

Затем перезагрузите свой .bashrc файл, запустив: . $HOME/.bashrc