Поиск по сайту:

Серия RHCSA: Управление пакетами Yum, автоматизация задач с помощью Cron и мониторинг системных журналов. Часть 10


В этой статье мы рассмотрим, как устанавливать, обновлять и удалять пакеты в Red Hat Enterprise Linux 7. Мы также расскажем, как автоматизировать задачи с помощью cron, и завершим это руководство, объясняя, как находить и интерпретировать файлы системных журналов, с упором на то, чтобы объяснить вам, почему все эти навыки являются важными навыками для каждого системного администратора.

Управление пакетами через Yum

Чтобы установить пакет вместе со всеми его зависимостями, которые еще не установлены, вы будете использовать:


yum -y install package_name(s)

Где имя_пакета представляет собой хотя бы одно реальное имя пакета.

Например, чтобы установить httpd и mlocate (именно в этом порядке), введите.


yum -y install httpd mlocate

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

По умолчанию yum установит пакет с архитектурой, соответствующей архитектуре ОС, если только он не будет переопределен путем добавления архитектуры пакета к его имени.

Например, в 64-битной системе yum install package установит версию пакета x86_64, тогда как yum install package.x86 (если доступно) установит 32-битную версию.

Бывают случаи, когда вы хотите установить пакет, но не знаете его точного имени. Параметры поиск во всех или поиск позволяют выполнять поиск в активированных в данный момент репозиториях по определенному ключевому слову в имени пакета и/или в его описании соответственно.

Например,


yum search log

будет искать в установленных репозиториях пакеты со словом log в именах и описаниях, тогда как


yum search all log

будет искать то же ключевое слово в описании пакета и полях url.

Как только поиск вернет список пакетов, возможно, перед установкой вы захотите отобразить дополнительную информацию о некоторых из них. Именно тогда вам пригодится опция info:


yum info logwatch

Вы можете регулярно проверять наличие обновлений с помощью следующей команды:


yum check-update

Приведенная выше команда вернет все установленные пакеты, для которых доступно обновление. В примере, показанном на изображении ниже, только rhel-7-server-rpm доступно обновление:

Затем вы можете обновить этот пакет самостоятельно,


yum update rhel-7-server-rpms

Если есть несколько пакетов, которые можно обновить, yum update обновит их все одновременно.

Что же произойдет, если вы знаете имя исполняемого файла, например ps2pdf, но не знаете, какой пакет его предоставляет? Вы можете узнать с помощью yum, что обеспечивает «*/[executable]»:


yum whatprovides “*/ps2pdf”

Теперь, когда дело доходит до удаления пакета, вы можете сделать это с помощью yum Remove Package. Легко, да? Это доказывает, что yum — полноценный и мощный менеджер пакетов.


yum remove httpd

Читайте также 20 команд Yum для управления пакетами RHEL 7

Старый добрый простой оборот в минуту

RPM (он же Менеджер пакетов RPM или первоначально Менеджер пакетов RedHat) также можно использовать для установки или обновления пакетов, если они поставляются в виде автономных Пакеты .rpm.

Он часто используется с флагами -Uvh, чтобы указать, что следует установить пакет, если он еще не установлен, или попытаться обновить его, если он установлен, (-U), создавая подробный вывод (-v) и индикатор выполнения с решетками (-h) во время выполнения операции. Например,


rpm -Uvh package.rpm

Другое типичное использование rpm — создание списка установленных на данный момент пакетов с помощью кода>rpm -qa (сокращение от «запросить все»):


rpm -qa

Читайте также 20 команд RPM для установки пакетов в RHEL 7

Планирование задач с помощью Cron

Linux и другие Unix-подобные операционные системы включают инструмент под названием cron, который позволяет планировать периодический запуск задач (т. е. команд или сценариев оболочки). Cron каждую минуту проверяет каталог /var/spool/cron на наличие файлов, названных в честь учетных записей в /etc/passwd.

При выполнении команд любой вывод отправляется по почте владельцу crontab (или пользователю, указанному в переменной среды MAILTO в файле /etc/crontab, если он существует).

Файлы Crontab (которые создаются путем ввода crontab -e и нажатия Enter) имеют следующий формат:

Таким образом, если мы хотим обновлять локальную базу данных файлов (которая используется для поиска файлов по имени или шаблону) каждый второй день месяца в 2:15 утра, нам нужно добавить следующее: Запись в crontab:


15 02 2 * * /bin/updatedb

Приведенная выше запись в crontab гласит: «Запускать /bin/updatedb во второй день месяца, каждый месяц года, независимо от дня недели, в 2:15 ночи». Как я уверен, вы уже догадались, символ звезды используется в качестве подстановочного знака.

После добавления задания cron вы увидите, что файл с именем root был добавлен внутри /var/spool/cron, как мы упоминали ранее. В этом файле перечислены все задачи, которые должен выполнять демон crond:


ls -l /var/spool/cron

На изображении выше crontab текущего пользователя можно отобразить либо с помощью cat /var/spool/cron/root, либо с помощью команды cat /var/spool/cron/root.


crontab -l

Если вам нужно запускать задачу на более детальной основе (например, два раза в день или три раза в месяц), cron также может помочь вам в этом.

Например, чтобы запускать /my/script 1-го и 15-го числа каждого месяца и отправлять выходные данные в /dev/null, вы можете добавьте две записи crontab следующим образом:


01 00 1 * * /myscript > /dev/null 2>&1
01 00 15 * * /my/script > /dev/null 2>&1

Но для того, чтобы задачу было легче поддерживать, можно объединить обе записи в одну:


01 00 1,15 * *  /my/script > /dev/null 2>&1

Следуя предыдущему примеру, мы можем запускать /my/other/script в 1:30 ночи в первый день месяца каждые три месяца:


30 01 1 1,4,7,10 * /my/other/script > /dev/null 2>&1

Но когда вам приходится повторять определенную задачу каждые «x» минут, часов, дней или месяцев, вы можете разделить правильную позицию на желаемую частоту. Следующая запись crontab имеет то же значение, что и предыдущая:


30 01 1 */3 * /my/other/script > /dev/null 2>&1

Или, возможно, вам нужно запускать определенное задание с фиксированной частотой или, например, после загрузки системы. Вместо пяти полей вы можете использовать одну из следующих строк, чтобы указать точное время, когда вы хотите запустить задание:


@reboot    	Run when the system boots.
@yearly    	Run once a year, same as 00 00 1 1 *.
@monthly   	Run once a month, same as 00 00 1 * *.
@weekly    	Run once a week, same as 00 00 * * 0.
@daily     	Run once a day, same as 00 00 * * *.
@hourly    	Run once an hour, same as 00 * * * *.

Читайте также 11 команд для планирования заданий Cron в RHEL 7

Поиск и проверка журналов

Системные журналы расположены (и чередуются) внутри каталога /var/log. Согласно стандарту иерархии файловой системы Linux, этот каталог содержит различные файлы журналов, которые записываются в него или в соответствующий подкаталог (например, audit, httpd или samba). на изображении ниже) соответствующими демонами во время работы системы:


ls /var/log

Другими интересными журналами являются dmesg (содержит все сообщения из кольцевого буфера ядра), Secure (регистрирует попытки подключения, требующие аутентификации пользователя), messages (общесистемные сообщения) и wtmp (записи всех входов и выходов пользователей).

Журналы очень важны, поскольку они позволяют вам увидеть, что постоянно происходит в вашей системе и что происходило в прошлом. Они представляют собой бесценный инструмент для устранения неполадок и мониторинга сервера Linux и поэтому часто используются с командой tail -f для отображения событий в реальном времени по мере их возникновения и записи в журнал.

Например, если вы хотите отобразить события, связанные с ядром, введите следующую команду:


tail -f /var/log/dmesg

То же самое, если вы хотите просмотреть доступ к вашему веб-серверу:


tail -f /var/log/httpd/access.log

Краткое содержание

Если вы знаете, как эффективно управлять пакетами, планировать задачи и где искать информацию о текущей и прошлой работе вашей системы, вы можете быть уверены, что не будете часто сталкиваться с сюрпризами. Я надеюсь, что эта статья помогла вам изучить или освежить свои знания об этих базовых навыках.

Не стесняйтесь написать нам, используя контактную форму ниже, если у вас есть какие-либо вопросы или комментарии.