Автозагрузка скриптов в Ubuntu

Автозагрузка скриптов в Ubuntu

Расскажем, как просто настроить автозапуск скриптов в Ubuntu при старте системы. Инструкция подходит даже для новичков.

Скрипт — это файл, содержащий набор последовательных команд. Он автоматизирует процессы, которые иначе нужно было бы выполнять вручную. Его можно написать на различных языках программирования, таких как Bash (для Unix-подобных ОС), Python, Perl и другие. Основное предназначение — автоматизация повторяющихся действий в определённом порядке.

У Linux существует множество версий, называемых дистрибутивами. В них уже собраны все необходимые компоненты для работы, такие как ядро (основной элемент, который управляет взаимодействием с аппаратным обеспечением), программы, библиотеки и утилиты. Они отличаются по составу, способам установки и настройки.

Ubuntu — это один из самых популярных дистрибутивов Linux. Он прост в использовании, даже если вы не знакомы с Linux. В Ubuntu удобная визуальная оболочка, как в других распространённых платформах: Windows или macOS.

В общем, если представить, что Linux — это кухня, где можно готовить множество разных блюд (ОС), то Ubuntu — конкретный рецепт, который делает эту кухню доступной и удобной для многих людей. То есть, это востребованное решение как для рабочих станций, так и для серверов, благодаря своей надёжности и простоте.

Как настроить автозагрузку скрипта в Ubuntu

После того как вы написали свой скрипт, может понадобиться, его автоматический запуск при старте. В Ubuntu есть несколько способов сделать это. 

Определимся с терминологией

Терминал 

В контексте Ubuntu и Linux это текстовый интерфейс, через который можно управлять операцией, вводя текстовые инструкции. Он является основным инструментом выполнения различных задач, таких как запуск программ, управление файлами и настройка системы.

Открыть терминал можно, щёлкнув по значку с иконкой, похожей на монитор или комбинацией Ctrl+Alt+T.

Здесь же вводятся команды для выполнения различных операций. Например, чтобы редактировать файл задач cron, нужно ввести строку:

crontab -e

Команды в терминале обычно состоят из программы (или утилиты) и параметров, которые вы хотите использовать. 

Утилиты используются для управления файлами, сетевыми подключениями, процессами и многими другими системными функциями в Linux и Ubuntu.

В терминале доступны операции для навигации по структуре данных, такие как cd для смены директории, ls для просмотра её содержимого и cat для отображения информации внутри.

Если вы не уверены, как использовать команду, можно получить справку, введя её с параметром `—help` или `-h`, например, `crontab —help`.

Редактирование файла задач cron:

crontab -e

Редактирование файла сервиса с использованием текстового редактора nano:

sudo nano /etc/systemd/system/myscript.service

Использование cron с ключевым словом `@reboot`

Cron — это инструмент для планирования задач в Linux. Одним из его полезных режимов является запуск задач при загрузке системы. Выполняется с помощью ключевого слова `@reboot`.

  1. Откройте терминал и введите команду:
crontab -e

   Это запустит файл для редактирования.

  1. В конце файла добавьте строку:
@reboot /путь/к/вашему/скрипту.sh

Замените `/путь/к/вашему/скрипту.sh` на реальный путь к вашему скрипту.

Как узнать путь к скрипту

1. Если скрипт находится в текущей директории:

    • откройте терминал и перейдите в каталог с помощью команды `cd /путь/к/директории`;
    • затем используйте команду `pwd`, чтобы получить текущий путь:
    pwd

    Скопируйте полученный путь и добавьте к нему имя вашего скрипта. Например, если он называется script.sh, а команда pwd вернула /home/user/scripts, то полный путь будет выглядеть так:

    /home/user/scripts/script.sh

    2. Если скрипт находится в другом каталоге, можно использовать команду realpath и указать относительный путь к скрипту:

    realpath ./script.sh

    3. Если ваш скрипт находится в одной из директорий, включённых в переменную окружения $PATH (например, /usr/bin или /usr/local/bin), просто впишите имя скрипта без полного пути. Если же необходимо указать полный путь, сделайте это через which:

    which script.sh

    4. Сохраните изменения и закройте редактор.

      Использование `systemd`

      Systemd — это система инициализации (процесса подготовки ОС к работе), которая управляет запуском сервисов и задач в Linux. Для автозагрузки скрипта можно создать файл сервиса.

      1. Откройте терминал и создайте новый файл сервиса:
          sudo nano /etc/systemd/system/myscript.service
      1. Добавьте в файл следующий контент:
      ini
      [Unit]
      Description=Запуск моего скрипта при старте
      [Service]
      ExecStart=/путь/к/вашему/скрипту.sh
      Type=simple
      Restart=on-failure
      [Install]
      WantedBy=multi-user.target

       Замените `/путь/к/вашему/скрипту.sh` на путь к вашему скрипту (описанный в разделе «Использование cron»).

      1. Сохраните изменения и закройте редактор.
      2. Активируйте ваш новый сервис:
      sudo systemctl daemon-reload
      sudo systemctl enable myscript.service
      1. При необходимости, вы можете запустить сервис немедленно:
      sudo systemctl start myscript.service

      Использование `Startup Applications` (для графического интерфейса)

      Если вы используете графический интерфейс GNOME (или другой, поддерживающий автозагрузку приложений), можно добавить свой скрипт в список автозагрузки.

      1. Откройте меню «Программы запуска» (Startup Applications) через настройки системы или соответствующую программу в меню приложений.
      2. Нажмите кнопку «Добавить» и заполните поля:
      • Имя: название вашего скрипта.
      • Команда: путь к вашему скрипту (например, `/путь/к/вашему/скрипту.sh`).
      • Комментарий: опционально, можно оставить описание.
      1. Нажмите «Добавить» и затем «Закрыть». 

      Использование `rc.local` (для старых версий Ubuntu до 16.04)

      1. Откройте файл `/etc/rc.local` для редактирования:

      sudo nano /etc/rc.local

      2. Добавьте строку перед `exit 0`:

      /путь/к/вашему/скрипту.sh &

      Убедитесь, что скрипт имеет права на выполнение:

      sudo chmod +x /путь/к/вашему/скрипту.sh

       3. Сохраните изменения и закройте редактор. 

      Частые ошибки

      1. Скрипт не имеет прав на выполнение, и поэтому не запускается.

      Решение. Используйте команду `chmod +x /путь/к/вашему/скрипту.sh`, чтобы предоставить скрипту права на выполнение.

      1. В файле сервиса допущены синтаксические ошибки, либо не выполнены команды для перезагрузки конфигурации `systemd`.

      Решение. Проверьте синтаксис файла и выполните `sudo systemctl daemon-reload` после сохранения изменений. Например, секции должны быть правильно обозначены квадратными скобками [Unit], [Service], [Install], а ключи, такие как Description, ExecStart, правильно написаны и соответствовать ожидаемым значениями.

      1. Сервис systemd не активирован, и поэтому не запускается при старте.

      Решение. Убедитесь, что выполнена команда `sudo systemctl enable myscript.service` после создания файла сервиса. Это означает ввести определённую строку текста (команду) sudo systemctl enable myscript.service и нажать клавишу Enter, чтобы операционная система Linux выполнила соответствующее действие. 

      1. Использован неправильный crontab, например, для другого пользователя.

      Решение. Убедитесь, что редактируете crontab с помощью команды `crontab -e` под соответствующим пользователем.

      Эти ошибки самые распространённые, и их легко избежать, следуя предложенным вариантам.

      Настройка автозагрузки скриптов в Ubuntu — дело нехитрое, но требует внимания к деталям. Пусть этот процесс станет для вас не только полезным навыком, но и ещё одним шагом к освоению возможностей Linux.

      Читайте по теме:

      Что будем искать? Например,VPS-сервер

      Мы в социальных сетях