Иногда пользователи могут столкнуться с необходимостью добавления каких-то сервисов или событий в автозагрузку системы, но не всегда это удается сделать встроенными в Ubuntu графическими приложениями (например Startup Applications). То, как сделать простой скрипт и добавить его запуск при инициализации системы будет рассказано ниже.
Опишем всё это на простом примере: opendchub — это сервис dc-хаба, который может запускаться только под супер-пользователем (то есть он запускается вручную только командой sudo opendchub или непосредственно под root’ом).
Для начала создадим скрипт запуска в каталоге инициализации системы:
sudo nano /etc/init.d/odchub
В текстовом редакторе введите три строки будущего скрипта:
#!/bin/bash
echo "Opendchub starting..."
opendchub
Сохраните изменения (Ctrl+O) и выйдите из текстового редактора nano (Ctrl+X)
В первой строке этого скрипта указывается интерпретатор (если вы не знакомы с этим понятием, то лучше оставить именно такой как указан выше).
Во второй строке, командой echo обеспечивается простой вывод на экран текста — в принципе эта строка необязательна, она лишь будет информировать пользователя о том, какое действие происходит в данный момент.
Третьей строкой собственно указывается команда запуска (в нашем примере — это сервис opendchub) — пишется тут всё точно также, как вы выполняли необходимую команду в терминале, за исключением того, что не надо добавлять ‘sudo‘ — так как этот скрипт будет выполняться при инициализации системы, то есть уже сразу под суперпользователем.
После того как файл создан, сделаем его исполняемым:
sudo chmod +x /etc/init.d/odchub
Теперь добавим созданный скрипт к автозагрузке:
sudo update-rc.d odchub defaults 90
Числовое значение после слова defaults указывает на приоритет для старта этого скрипта.
В результате всех этих действий сервис opendchub будет запускаться еще до загрузки графической среды, сразу вместе с инициализацией операционной системой. Используя этот простой пример вы можете аналогичным образом создать свой собственный простой скрипт и добавить его к автозагрузке.
Если вы захотите удалить этот скрипт из автозагрузки, то перед тем как удалить сам файл надо выполнить такую команду:
sudo update-rc.d -f odchub remove

Огромное спасибо.
очень пригодилось для автоматического монтирования расшаренного диска в виртуальной манине
Огромное спасибо! долго пытался добавить отключение APM винчестера в автозагрузку, очень помогло! что скрипт надо кинуть в init.d и сделать исполняемым я знал, а вот просто update-rc — нет
Подскажите, а этот скрипт будет стартовать для конкретного пользователя или для всех???
У меня просто стоит NX сервер и мне нужно каждый раз вручную логиница и запускать скрипт для расшара папки.
P.S. Заранее спасибо!
Igor, этот скрипт будет запускаться под пользователем root при инициализации системы. Также, можно написать специальный скрипт, который сможет запускать различные программы под какими-то определенными пользователями.
А NX server исправно автозапускается после установки из deb с официального сайта. Вы собирали его из исходного кода?
да. Nx собирался именно так!!!
Может мне сделать так??
# права на исполнение
sudo chmod +x /etc/init.d/my_script
# симлинк на запуск в автомат.
sudo ln -s /etc/init.d/my_script /etc/rc1.d/S20_my_script # запуск при single user mode
————————————-
Я делал когда то такое для Iptables, что бы он автоматически запускал мои правила.
Но в моём случае, каждое утро я захожу и запускаю этот скрипт вручную что бы дать права на использование пользователям.
#!/bin/bash
sudo chmod -R 777 /var/lib/wine/my_dir
————————————————————
вот такая нехитрая комманда. а приходица каждый день запускать.
Igor, да, установите из deb пакетов, так будет проще.
Спасибо за полезную информацию! Не могли бы подробнее рассказать, как написать скрипт для запуска программы от имени другого пользователя, не root? Есть сервер с ирком, ирк стартует автоматически от имени суперпользователя, а вот чат-бота eggdrop стартовать из-под рута нельзя..
Anton, попробуйте через sudo:
sudo -u username programЕсли не получится, то установите sux:
sudo apt-get install suxИ запускайте программу через команду:
sux - username programСпасибо, информацию про sux взял на заметку, а в моем случае помогло следующее: в rc.local написал по типу su username -c /home/username/eggdrop.sh