You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

4.9 KiB

Решения

Для проверки расписания вы можете использовать сайт https://crontab.guru/, https://cronheatmap.com и аналоги.

0.

Проверьте наличие команд cron и at в системе. Установите их в случае отсутствия.

sudo apt install cron at

1.

Выведите документацию crontab и cron.

man crontab
man cron

2.

Создайте cron расписание для выполнения скрипта или к:

# ┌───────────── minute (0 - 59)
# │ ┌───────────── hour (0 - 23)
# │ │ ┌───────────── day of the month (1 - 31)
# │ │ │ ┌───────────── month (1 - 12)
# │ │ │ │ ┌───────────── day of the week (0 - 6) (Sunday to Saturday;
# │ │ │ │ │                                   7 is also Sunday on some systems)
# │ │ │ │ │
# │ │ │ │ │
# * * * * * <command to execute>

# 1. дважды в день: в 5 утра и в 5 вечера,
0 5,17 * * * /sbin/script.sh
# 2. в 3:15 каждый день,
15 15 * * * /sbin/script.sh
# 3. в 8 вечера каждую неделю,
0 20 * * 1 /sbin/script.sh
# 4. по понедельникам в 20:00,
0 20 * * 1 /sbin/script.sh
# 5. в 20:00 по понедельникам и по субботам,
0 20 * * 1,6 /sbin/script.sh
# 6. каждую минуту,
* * * * * /sbin/script.sh
# 7. каждые 10 минут,
*/10 * * * * /sbin/script.sh
# 8. каждые 15 минут по субботам и понедельникам,
*/15 * * * 1,6 /sbin/script.sh
# 9. каждую минуту в марте, июне, сентябре и декабре,
* * * 3,6,9,12 /sbin/script.sh
# 10. 20 января в 8 вечера,
0 20 20 1 * /sbin/script.sh
# 11. ежедневное выполнение скрипта в 8 вечера каждый второй месяц,
0 20 * */2 * /sbin/script.sh
# 12. *в первое воскресенье каждого месяца,
0 0 * * 0 [ $(date +%d) -le 07 ] && /script/script.sh
# 13. каждые три часа,
0 */3 * * * /sbin/script.sh
# 14. дважды, каждую субботу и понедельник,
0 0 * * 1,6 /sbin/script.sh
# 15. *каждые 30 секунд,
* * * * * /sbin/script.sh
* * * * * sleep 30; /sbin/script.sh
# 16. каждый день в летний период,
0 0 * 6,7,8 * /sbin/script.sh
# 17. для рассылки поздравлений с новым годом,
0 0 1 1 * /sbin/happy_new_year_mail.sh
# 18. ежедневного удаления неиспользуемых пакетов в системе,
0 1 * * * apt autoremove
# 19. перезапуска системы в 0 часов 0 минут,
0 0 * * * shutdown -h 0
# 20. для очистки всех попыток сбоя входа в систему ежедневно в 1:00,
0 1 * * * /sbin/clear_auth_errors.sh
# 21. ежедневной проверки и загрузки новых системных пакетов,
0 0 * * * apt update
# 22. ежедневного обновления пакетов системы,
0 0 * * * apt upgrade -y
# 23. ежедневное резервное копирование всех папок пользователей в 5 утра.
0 5 * * * tar -zcf /var/backups/home.tgz /home/

3.

Создайте задание в котором отчёты cron будут отправляться вам на внешний почтовый ящик.

MAILTO=logs@myoffice.org

4.

Установите пользовательский сrontab.

sudo echo "stud" >> /etc/cron.allow
crontab -e

5.

Настройте выполнение исполняемого файла script.sh из /usr/sbin/ каждую среду, модифицировав PATH в cron задании.

PATH=/opt/cmake/bin:$PATH
0 0 * * 3 /usr/sbin/script.sh

6.

Пользуясь полномочиями суперпользователя, запретите пользователю mike выполнять команду at.

sudo echo "mike" >> /etc/at.deny

7.

Запланируйте командой at:

# 1. выполнение скрипта сегодня в 9 часов,
at 21:00 script.sh
# 2. перезагрузку через 2 часа,
sudo at now + 2 hours reboot
# 3. выполнение команды через 100 лет.
at now + 100 years script.sh

Справка

Релевантные файлы:

  • /etc/cron.allow
  • /etc/cron.deny
  • /var/spool/cron/crontabs
  • /var/spool/cron/atjobs
  • /var/spool/cron/atspool
  • /proc/loadavg
  • /var/run/utmp
  • /etc/at.allow
  • /etc/at.deny

Релевантные команды:

  • cron
  • at
  • crontab