Базовые знания Linux админа
Примечание
В данной серии не будет теории и прочего
Это абсолютный базис-гайд по установке ОС и базовым навыкам в терминале
В конце будет рассмотрено несколько современных технологий в простых реализациях
После прохождения гайда у вас будет машина и несколько популярных сервисов
Все. Дальше - сами, книги, видео, стажировка
Этот гайд - выжимка на многолетние накопления вопросов на канале и сайте
Гайд будет доступен на моем сайте:
Видео будут доступны на моем канале YouTube:
https://www.youtube.com/channel/UCR6j95DKI80MFXIw2iJ3f1w
План:
5 часть — регулярные выражения
В предыдущей части не включил кусочек про автоматизацию задач, исправляюсь =)
Автоматизация задач в Linux с помощью планировщика cron
Синтаксис планировщика cron:
Минута | Час | День | Месяц | День недели |
(0 - 59) | (0 - 23) | (1 - 31) | (1 - 12) | (0 - 7) (Воскресенье = 0 или 7) |
Примеры:
30 20 * * * | каждый день в 20:30 |
05 20 * * 5 | каждую пятницу в 20:05 |
10 12 * * 1-5 | в будни в 12:10 |
05,25 * * * * | в 5 и 25 минут каждого часа |
*/20 * * * * | каждые 20 минут |
Файл конфигурации системных заданий находится в /etc/crontab
Папка системных задач находится по пути: /etc/cron.d/
Управление доступом к планировщику пользователям системы прописывается в:
/etc/cron.deny
/etc/cron.allow
В файл вносится имя пользователя (один логин на строку)
cron.allow имеет приоритет над cron.deny, если логин прописан в обоих, доступ будет открыт
Утилиты для работы с cron:
crontab -l выведет список существующих заданий пользователя
crontab -e откроет на редактирование crontab файл текущего пользователя
Пример добавления команды в планировщик через crontab -e:
55 23 * * * peasant
Второй параметр (peasant) - учетная запись, с правами которой запускается программа
Третий параметр (/root/script.sh > /dev/null) - скрипт, который будет запускаться
Можно не только запускать скрипты, но и давать стандартные команды консоли:
55 23 * * * root reboot
Например, если создавалось задание из под учетки peasant, файл заданий появится в:
/var/spool/cron/crontabs/peasant
Регулярные выражения
Для начала приведу пару утилит, где могут понадобиться шаблоны и регулярные выражения
Утилита поиска grep
Поиск строки, начинающейся (^) в строке с peasant
grep "^peasant" /etc/passwd
Поиск слова peasant, начинается с указанных символов - pP
grep "^[pP]easant" /etc/passwd
Поиск слова peasant, начинается с любого (^.) символа
grep "^.easant" /etc/passwd
Регулярное выражение (шаблон x: + одно число с 0 по 1 + 3 любых символа + :1000)
grep "x:[0-1]...:1000" /etc/passwd
Регулярное выражение (3 любых символа заменены на совпадению сколько угодно символов)
grep "x:[0-1]*:1000" /etc/passwd
Поиск рекурсивно по каталогам во всех файлах (^. - начало с любого символа + easant)
sudo grep -r "^.easant" /etc/
Поиск по 2м (|) вариантам совпадений
grep -E "[pP]easant|[rR]oot" /etc/passwd
Самостоятельно посмотрите в man ключи для утилиты grep
Тема регулярных выражений очень обширная
В данном пособии представлено лишь несколько вариантов функционала, где они могут применяться
Существуют онлайн генераторы для проверки регулярных выражений
Одни из самых популярных - https://regex101.com/
Изучите самостоятельно регулярные выражения и примените знания на данном генераторе и в ОС Linux
Пример поиска выше - [pP]easant|[rR]oot
Приведу пару слайдов операторов и шаблонов для самостоятельного изучения
sed - редактор текста
С помощью данной утилиты можно редактировать файлы без их открытия
Умеет находить, заменять, вставлять и удалять текст и его фрагменты
Синтаксис sed:
sed [параметры] [команды] (файл)
Мы рассмотрим только самые простые примеры
Рассмотрим самый часто применяемы функционал по поиску и замене текста
Поддерживаются регулярные выражения
s/что_заменять/на_что_заменять/опции
Пример с ключами "-s" и "-g"
s/шаблон_поиска/шаблон_замены/g
Где:
s - заменить шаблон_поиска на шаблон_замены
g - глобальная замена всех вхождений
Примеры файла и замены
Создайте тестовый файл:
cat <<EOF > file1
first
шаблон_поиска
second
шаблон_поиска
third
EOF
Применим редактор sed для замены:
sed 's/шаблон_поиска/шаблон_замены/g' file1 > file2 && cat file2
Пример с удалением строк по найденному шаблону:
sed '/шаблон_поиска/d' file1 > file2 && cat file2
first
second
third
Пример удаления строк, где на конце ($) один из символов от a до d ([a-d]):
sed '/[a-d]$/d' file1 > file2 && cat file2
first
шаблон_поиска
шаблон_поиска