Время прочтения: 3 мин.
Всем привет! Поделюсь своим опытом работы с cron и насколько гибкий shell в uni-системах.
Расскажу немного предыстории. В недавно построенном доме я решил организовать внешнее видеонаблюдение, так скажем, один из этапов в постройке «умного» дома. Камеры были установлены и передавали видео в реальном времени, под хранение я использовал свой старый системный блок под операционной системой Ubuntu. Настроив камеры на сохранения записей по движению на компьютер, я был доволен проделанной работой. Но прошло время, и я столкнулся с тем, что свободное место на моем ПК закончилось и я начал чистить старые видеозаписи. Вот тут меня посетила идея автоматизировать удаление старых файлов самой системой. На помощь мне пришел Cron – он позволяет по расписанию запускать запрограммированные процедуры на ПК под управлением операционной системы под unix. Чтобы посмотреть существующий список Cron-задач, необходимо ввести в командной строке crontab -l, и в командной строке отобразится вся информация, связанная с cron-задачами, в том числе с примерами:
Сейчас я вам кратко расскажу о задаче в примере, первые пять параметров отвечают за время запуска, шестой параметр за запуск команды:
- Первый параметр – минуты (0-59);
- Второй параметр – часы (0-23);
- Третий параметр – день месяца (1-31);
- Четвертый параметр – месяц (1-12);
- Пятый параметр – день недели (0-7) (0 или 7 понедельник);
- Шестой параметр – команда для выполнения.
Соответственно, я могу расшифровать пример – задача запускает архивацию домашней директории каждый вторник в пять утра.
С задачами понятно, а как удалить сами файлы, спросите вы?
Создадим скрипт вроде bat-ника на windows и будем cron’ом запускать.
На мое удивление, командная строка в unix-системах оказалась довольно-таки мощным инструментом, и решить мою задачу по поиску и удалению старых файлов оказалось очень просто. Создадим текстовый файл с расширением скрипта — .sh.
Внутри скрипта прописываем команды. Обратите внимание, что в начале файла должна быть строка «#!/bin/bash»:
- Find – поиск объектов;
Rm – удаление объектов.
#!/bin/bash
# Скрипт для ежедневного удаления файлов
echo "Запуск удаления файлов"
find /home/ftp/video/Camera1 -mtime +15 -exec rm -rf {} \;
find /home/ftp/video/Camera2 -mtime +15 -exec rm -rf {} \;
find /home/ftp/video/Camera3 -mtime +15 -exec rm -rf {} \;
echo "Выдаем права"
find /home/ftp/video -type d -mtime -1 -exec chmod 755 {} \;
find /home/ftp/video -type f -mtime -1 -exec chmod 755 {} \;
Этот скрипт выполняет поиск объектов, которые были созданы больше 15 дней назад и удаляет их без подтверждения. Этот скрипт удаляет все объекты: и файлы, и директории. Обратите внимание на то, что некоторым камерам для записи необходимо наличие директории. Плюсом в этом скрипте я выдаю права на чтения. Всё, наш файл готов, теперь сохраняем его в своей директории и прописываем запуск этого файла в cron.
Для редактирования cron-задач необходимо в консоли запустить crontab с параметром -e, с этим параметром вносим изменения.
Запускаем команду, спускаемся в самый низ и вставляем следующую строку:
0 23 * * * /home/video/filedel.sh
Сохраняем изменения, и всё готово. Задача по удалению старых файлов будет запускаться каждый день ровно в 23 часа.
Понадобилось немного строк кода для решения поставленной задачи, но у новичков в системах unix на поиск решения ушло бы время. Я надеюсь, мой опыт будет вам полезен. Если возникнут вопросы, пишите в комментарии, постараюсь оперативно ответить. А также, если будет интересен мой опыт в создании сервера на старом ПК и настройке камер, я с радостью отвечу. А если будет много вопросов, обязательно прокомментирую в новом посте.
Спасибо за прочтение!