Запускать автоматически программу при запуске под linux ubuntu [закрыто]

140

Мне нужно, чтобы программа запускалась каждый раз, когда я запускаю свой ubuntu linux. Поэтому мне нужно добавить его в список программ автозагрузки. Только одна проблема: мне нужно сделать это через терминал.

Маттео Монти
источник
23
@Flexo Этого ответа нет ни в одной из предоставленных вами ссылок. +1 к этому вопросу и ответ
Francisco Valdez
2
Фактически, ответ здесь взят из первого из этих вопросов.
Wilson F
4
Для простого и портативного способа сделать это вы можете использовать Cron. Запустите, crontab -eчтобы отредактировать crontab вашего пользователя; добавить @reboot commandдля запуска commandпри каждой загрузке.
appas
2
Не знаю, дубликат это или нет, но это первое попадание в гугл ..
Владимир Верлег

Ответы:

179
sudo mv /filename /etc/init.d/
sudo chmod +x /etc/init.d/filename 
sudo update-rc.d filename defaults 

Скрипт теперь должен запускаться при загрузке. Обратите внимание, что этот метод также работает как с жесткими ссылками, так и с символическими ссылками ( ln).

редактировать

На этом этапе процесса загрузки PATH еще не установлен, поэтому крайне важно, чтобы во всем процессе использовались абсолютные пути. НО, как указано в комментариях Стива HHH, явное объявление полного пути к файлу ( /etc/init.d/filename) для команды update-rc.d недопустимо в большинстве версий Linux. Согласно справочной странице update-rc.d , второй параметр - это скрипт, расположенный в /etc/init.d/*. Обновлен приведенный выше код, чтобы отразить это.

Другое редактирование

Также, как указано в комментариях (Чарльз Брандт), /filenameдолжен быть сценарий стиля инициализации. Также был предоставлен хороший шаблон - https://github.com/fhd/init-script-template .

Еще одна ссылка на другую статью, чтобы избежать возможного гниения ссылок (хотя было бы печально, если бы GitHub умер) - http://www.linux.com/learn/tutorials/442412-managing-linux-daemons-with-init-scripts

пока еще

Как указано в комментариях (Рассел Ян), это работает только в режиме update-rc.d по умолчанию.

Согласно руководству update-rc.d, он может работать в двух режимах: «машины, использующие устаревший режим, будут иметь файл /etc/init.d/.legacy-bootordering», и в этом случае вам нужно передать последовательность и конфигурацию уровня запуска через аргументы командной строки.

Эквивалентный набор аргументов для приведенного выше примера:

sudo update-rc.d filename start 20 2 3 4 5 . stop 20 0 1 6 .

Дэйв Лэсли
источник
1
Как и для вашего сведения, опция «по умолчанию» помещает ссылку для запуска скрипта на уровнях выполнения 2, 3, 4 и 5. (и помещает ссылку для остановки на уровнях 0, 1 и 6.)
Дэйв Ласли
5
Я только что пробовал это в Ubuntu Server 12.04 LTS, но в 12.04 у вас не может быть префикса /etc/init.d. Это просто sudo update-rc.d filename defaults.
Steve HHH
1
@puk И жесткие ссылки, и символические ссылки будут работать с этим методом
Дэйв Ласли
14
Просто хотел добавить, что / filename в этом случае должен быть скриптом в стиле инициализации. Вот шаблон для запуска вашего собственного сценария инициализации: github.com/fhd/init-script-template
Чарльз Брандт,
1
Будет полезно прочитать это - unix.stackexchange.com/questions/28679/… - вместе с ответом
Арджун Сридхаран