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.

132 lines
4.9 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Решения
Для проверки расписания вы можете использовать сайт https://crontab.guru/, https://cronheatmap.com и аналоги.
### 0.
Проверьте наличие команд cron и at в системе. Установите их в случае отсутствия.
```bash
sudo apt install cron at
```
### 1.
Выведите документацию crontab и cron.
```bash
man crontab
man cron
```
### 2.
Создайте cron расписание для выполнения скрипта или к:
``` bash
# ┌───────────── 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 задании.
```bash
PATH=/opt/cmake/bin:$PATH
0 0 * * 3 /usr/sbin/script.sh
```
### 6.
Пользуясь полномочиями суперпользователя, запретите пользователю mike выполнять команду at.
```
sudo echo "mike" >> /etc/at.deny
```
### 7.
Запланируйте командой at:
``` bash
# 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