|
|
|
|
# Решения
|
|
|
|
|
|
|
|
|
|
Для проверки расписания вы можете использовать сайт 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
|