Cron позволяет запускать скрипты и команды без ручного вмешательства: бэкапы, мониторинг, чистка логов. Всё работает в фоне, по заданному расписанию.
Создадим простой скрипт — он будет писать метку времени в лог (пример
/usr/local/bin/backup.sh):sudo tee /usr/local/bin/backup.sh > /dev/null <<'EOF'
#!/bin/bash
LOG="/var/log/cron_backup.log"
mkdir -p "$(dirname "$LOG")"
echo "$(date -u +"%Y-%m-%dT%H:%M:%SZ") - backup run" >> "$LOG"
# сюда можно добавить реальные действия, например: rsync, tar и т.п.
EOF
Делаем скрипт исполняемым и прогоняем вручную для проверки:
sudo chmod +x /usr/local/bin/backup.sh
sudo /usr/local/bin/backup.sh
ls -l /usr/local/bin/backup.sh
tail -n 5 /var/log/cron_backup.log
Добавим задачу в crontab текущего пользователя (запускается каждый день в 02:00):
( crontab -l 2>/dev/null; echo "0 2 * * * /usr/local/bin/backup.sh" ) | crontab -
Если нужно задать окружение и логирование прямо в crontab — положи эти строки (пример /etc/cron.d/myjobs или в crontab пользователя):
# пример для /etc/cron.d/myjobs (требует root)
sudo tee /etc/cron.d/myjobs > /dev/null <<'EOF'
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
0 2 * * * root /usr/local/bin/backup.sh >> /var/log/cron_backup.log 2>&1
EOF
sudo chmod 644 /etc/cron.d/myjobs
Проверяем выполнение — смотрим системный журнал cron и наш лог:
journalctl -u cron --since "1 hour ago" -n 50 || journalctl -u crond --since "1 hour ago" -n 50
tail -n 50 /var/log/cron_backup.log
=
Теперь любые задачи можно запускать автоматически — без ручного вмешательства, строго по расписанию.
🚪 Linux Ready | #практика