Расскажем, как просто настроить автозапуск скриптов в 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`.
- Откройте терминал и введите команду:
crontab -e
Это запустит файл для редактирования.
- В конце файла добавьте строку:
@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. Для автозагрузки скрипта можно создать файл сервиса.
- Откройте терминал и создайте новый файл сервиса:
sudo nano /etc/systemd/system/myscript.service
- Добавьте в файл следующий контент:
ini
[Unit]
Description=Запуск моего скрипта при старте
[Service]
ExecStart=/путь/к/вашему/скрипту.sh
Type=simple
Restart=on-failure
[Install]
WantedBy=multi-user.target
Замените `/путь/к/вашему/скрипту.sh` на путь к вашему скрипту (описанный в разделе «Использование cron»).
- Сохраните изменения и закройте редактор.
- Активируйте ваш новый сервис:
sudo systemctl daemon-reload
sudo systemctl enable myscript.service
- При необходимости, вы можете запустить сервис немедленно:
sudo systemctl start myscript.service
Использование `Startup Applications` (для графического интерфейса)
Если вы используете графический интерфейс GNOME (или другой, поддерживающий автозагрузку приложений), можно добавить свой скрипт в список автозагрузки.
- Откройте меню «Программы запуска» (Startup Applications) через настройки системы или соответствующую программу в меню приложений.
- Нажмите кнопку «Добавить» и заполните поля:
- Имя: название вашего скрипта.
- Команда: путь к вашему скрипту (например, `/путь/к/вашему/скрипту.sh`).
- Комментарий: опционально, можно оставить описание.
- Нажмите «Добавить» и затем «Закрыть».
Использование `rc.local` (для старых версий Ubuntu до 16.04)
1. Откройте файл `/etc/rc.local` для редактирования:
sudo nano /etc/rc.local
2. Добавьте строку перед `exit 0`:
/путь/к/вашему/скрипту.sh &
Убедитесь, что скрипт имеет права на выполнение:
sudo chmod +x /путь/к/вашему/скрипту.sh
3. Сохраните изменения и закройте редактор.
Частые ошибки
- Скрипт не имеет прав на выполнение, и поэтому не запускается.
Решение. Используйте команду `chmod +x /путь/к/вашему/скрипту.sh`, чтобы предоставить скрипту права на выполнение.
- В файле сервиса допущены синтаксические ошибки, либо не выполнены команды для перезагрузки конфигурации `systemd`.
Решение. Проверьте синтаксис файла и выполните `sudo systemctl daemon-reload` после сохранения изменений. Например, секции должны быть правильно обозначены квадратными скобками [Unit], [Service], [Install], а ключи, такие как Description, ExecStart, правильно написаны и соответствовать ожидаемым значениями.
- Сервис systemd не активирован, и поэтому не запускается при старте.
Решение. Убедитесь, что выполнена команда `sudo systemctl enable myscript.service` после создания файла сервиса. Это означает ввести определённую строку текста (команду) sudo systemctl enable myscript.service и нажать клавишу Enter, чтобы операционная система Linux выполнила соответствующее действие.
- Использован неправильный crontab, например, для другого пользователя.
Решение. Убедитесь, что редактируете crontab с помощью команды `crontab -e` под соответствующим пользователем.
Эти ошибки самые распространённые, и их легко избежать, следуя предложенным вариантам.
Настройка автозагрузки скриптов в Ubuntu — дело нехитрое, но требует внимания к деталям. Пусть этот процесс станет для вас не только полезным навыком, но и ещё одним шагом к освоению возможностей Linux.
Читайте по теме: