Автозапуск пользовательских скриптов в Ubuntu при инициализации системы

  • 04.04.2010
  • 12 Comments

Иногда пользователи могут столкнуться с необходимостью добавления каких-то сервисов или событий в автозагрузку системы, но не всегда это удается сделать встроенными в 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

  1. Bob says:

    Огромное спасибо.
    очень пригодилось для автоматического монтирования расшаренного диска в виртуальной манине

  2. Дмитрий says:

    Огромное спасибо! долго пытался добавить отключение APM винчестера в автозагрузку, очень помогло! что скрипт надо кинуть в init.d и сделать исполняемым я знал, а вот просто update-rc – нет

  3. Igor says:

    Подскажите, а этот скрипт будет стартовать для конкретного пользователя или для всех???
    У меня просто стоит NX сервер и мне нужно каждый раз вручную логиница и запускать скрипт для расшара папки.
    P.S. Заранее спасибо!

    • info says:

      Igor, этот скрипт будет запускаться под пользователем root при инициализации системы. Также, можно написать специальный скрипт, который сможет запускать различные программы под какими-то определенными пользователями.

      А NX server исправно автозапускается после установки из deb с официального сайта. Вы собирали его из исходного кода?

  4. Igor says:

    да. 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, что бы он автоматически запускал мои правила.
    Но в моём случае, каждое утро я захожу и запускаю этот скрипт вручную что бы дать права на использование пользователям.

    • info says:

      Igor, да, установите из deb пакетов, так будет проще.

  5. Igor says:

    #!/bin/bash
    sudo chmod -R 777 /var/lib/wine/my_dir
    ———————————————————–
    вот такая нехитрая комманда. а приходица каждый день запускать.

  6. Anton says:

    Спасибо за полезную информацию! Не могли бы подробнее рассказать, как написать скрипт для запуска программы от имени другого пользователя, не root? Есть сервер с ирком, ирк стартует автоматически от имени суперпользователя, а вот чат-бота eggdrop стартовать из-под рута нельзя..

    • info says:

      Anton, попробуйте через sudo:

      sudo -u username program

      Если не получится, то установите sux:

      sudo apt-get install sux

      И запускайте программу через команду:

      sux - username program

  7. Anton says:

    Спасибо, информацию про sux взял на заметку, а в моем случае помогло следующее: в rc.local написал по типу su username -c /home/username/eggdrop.sh

  8. Tori says:

    Данная команда изменит только лишь текущую цель и не повлияет на следующую загрузку системы. Она соответствует командам Sysvinit вида

  9. Спасибо большое !!! ПОЛУИЛОСЬ !!!

Leave a Comment

Your email address will not be published.