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