Автоматизация Bash скриптов на Linux имеет важное значение для задач системного администрирования, таких как установка приложений и мониторинг системных журналов. Cron - это планировщик рабочих мест, который выполняет задачи с определенными интервалами, в то время как systemd служит менеджером служб, обрабатывая приложения через профили служб в Linux.
В этой статье объясняется, как автоматизировать Bash скрипты на Linux с использованием Cron и Systemd для автоматического выполнения и управления системными задачами.
Предпосылки
- Ubuntu 24.04 VPS.
- Доступ к корню SSH или пользователь с привилегиями sudo.
- Установите стек LAMP.
Конвенции
|
|
Использование Bash Alias в сценарии Bash
Вы можете использовать псевдонимы Bash в сценариях для сокращения длинных команд и обеспечения возможности повторного использования кода с другими функциями Bash, такими как условные заявления и циклы. Следуйте приведенным ниже шагам, чтобы использовать псевдонимы в сценарии Bash для проверки и выполнения конкретных задач.
Создайте скрипт Advanced-alias.sh
.
|
|
Добавьте следующее содержимое в файл Advanced-alias.sh
.
|
|
Сохраните и закройте файл.
Команда shopt -s expand_aliases
в вышеупомянутом скрипте позволяет расширять псевдонимы, в то время как псевдонимы lamp
, lemp
и mean
Bash сокращают полные команды установки для установки конкретных приложений. Переменная выбора хранит пользовательский ввод и использует условное утверждение if-elif
для запуска команд псевдонима Bash.
Запустите сценарий с помощью Bash.
|
|
Введите выбор, такой как 2
, чтобы запустить команду alias lamp
.
|
|
Результат:
|
|
Создание сценариев Bash
Bash скрипты поддерживают несколько команд и функций, которые определяют, как задачи выполняются в системе. Следуйте шагам ниже, чтобы создать новые скрипты Bash для резервного копирования критических файлов веб-приложений и мониторинга системных журналов для ошибок.
Переключитесь на домашний каталог вашего пользователя.
|
|
Создайте новый скрипт log-monitor.sh
.
|
|
Добавьте следующее содержимое в файл log-monitor.sh
.
|
|
Сохраните и закройте файл.
Приведенный выше скрипт Bash создает файлы error_log.txt
и warning_log.txt
в каталоге /opt/data
для хранения отфильтрованного результата из файла журналов системы /var/log/syslog
с использованием временной петли. Сценарий фильтрует результат и записывает его в соответствующий файл ошибок или предупреждений каждый раз, когда новая ошибка отображается в файле /var/log/syslog
.
Создайте новый скрипт backup.sh
.
|
|
Добавьте в файл следующее содержимое.
|
|
Сохраните и закройте файл.
Приведенный выше скрипт Bash подключается к серверу базы данных MySQL с использованием переменных DB_...
Затем скрипт создает каталоги mysql_backup
и web_backup
для хранения резервных копий базы данных и веб-приложений.
Переместите скрипт Bash в общесистемный каталог, такой как /opt
.
|
|
Создайте новый каталог данных в выбранном вами общесистемном каталоге.
|
|
Измените разрешение каталога на 777
, чтобы все пользователи могли писать файлы.
|
|
Автоматизация Bash Script на Linux с помощью Cron
Cron создает рабочие места, которые вы можете использовать для планирования и автоматического запуска скрипта Bash через определенные промежутки времени. Выполните следующие действия, чтобы автоматизировать скрипты Bash, созданные ранее, для автоматического резервного копирования базы данных MySQL и файлов веб-приложений ежедневно.
Откройте редактор Crontab.
|
|
Выберите нужный текстовый редактор для редактирования файла Crontab по запросу. Например, выберите 1
для выбора текстового редактора nano
.
В конце файла добавить следующую директиву.
|
|
Сохраните и закройте файл.
Вышеупомянутая работа cron запускает скрипт backup.sh
ежедневно в 2:00 утра для резервного копирования базы данных и файлов веб-приложений. В вышеупомянутой работе cron:
- 0: Запускает сценарий в начале минуты. Установите значение от 0 до 59.
- 2: Запускает сценарий bash в 2:00 утра Укажите час между 0 и 23.
- *: Запускает сценарий bash каждый день месяца. Укажите день между 1 и 31.
- *: Запускает сценарий bash каждый месяц. Укажите месяц между 1 и 12.
- *: Ежедневно выполняется сценарий bash. Укажите день недели между 0 и 7.
Перечислите все задания Cron и убедитесь, что новая задача сценария Bash доступна.
|
|
Результат:
|
|
Автоматизация Bash Script на Linux с помощью Systemd
Systemd автоматически запускает системные службы при загрузке и предлагает варианты остановки и перезапуска услуг. Следуйте приведенным ниже шагам, чтобы настроить скрипт мониторинга Bash, который вы создали ранее в качестве нового системного сервиса, и управлять сервисом с помощью системного.
Создайте новый файл системного сервиса, например logmonitor.service.
|
|
Добавьте следующее содержимое в logmonitor.service файл.
|
|
Сохраните и закройте файл.
Вышеупомянутая конфигурация службы запускает скрипт log-monitor.sh
bash в каталоге /opt
для мониторинга и фильтрации записей журнала в файле /var/log/syslog
.
Перезагрузка систематизирована для применения изменений в файле службы.
|
|
Включите новый системный сервис для автоматического запуска при загрузке.
|
|
Результат:
|
|
Запустите системный сервис.
|
|
Запустите следующие команды для имитации новых ошибок и предупреждений в файле /var/log/syslog
.
|
|
Перечислите все файлы в каталоге /opt/data
и убедитесь, что файлы error_log.txt
и warning_log.txt
доступны.
|
|
Результат:
|
|
Просмотрите файл error_log.txt
и убедитесь, что в файле доступны только записи об ошибке.
|
|
Результат:
|
|
Завершение
Вы успешно настроили автоматизированные скрипты Bash на сервере Linux с использованием Cron и Systemd. Автоматизация сценариев Bash позволяет выполнять общие задачи системного администрирования, такие как резервное копирование и мониторинг ошибок. Чтобы упростить управление системой, создайте несколько сценариев Bash и заданий Cron, указав необходимые команды для каждого.
Вы также использовали псевдонимы в среде оболочки Bash для создания многоразовых команд. Команда bash alias позволяет запускать несколько команд, используя расширенные функции Bash, такие как условные заявления и циклы для выполнения конкретных задач.
Вы можете поделиться статьей со своими друзьями в социальных сетях, которым может быть интересна эта статья или просто оставить комментарий ниже. Спасибо.