summaryrefslogtreecommitdiff
path: root/LINUX/CRON.md
blob: ca554dc822b88d800370d3cacb4c7f28b600634d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
_www.crontab.guru_



```sh
systemctl status cron
crontab --help

crontab -e # настройка для текущего пользователя
crontab -l # настройка для супер пользователя
crontab -r # удалить все задачи
```

**_минута_** **_час_** **_день_** **_месяц_** **_день_недели_** **_/путь/к/исполняемому/файлу_**
**обязательно нужно писать полный путь к команде** **_!_**
**Дата и время указываются с помощью цифр или символа ' * '.**
**интервал указывается «** **7-9** **»**
**несколько раз - «** **5,7,12 »**
**раз в 10 мин - « /10 »**

****@reboot**** **- при загрузке, только один раз;**
****@yearly, @annually**** - раз год;
****@monthly**** - раз в месяц;
****@weekly**** - раз в неделю;
****@daily, @midnight**** - каждый день;
****@hourly**** - каждый час.

команда запуска скрипта раз в час:

`@hourly /usr/local/bin/serve`

Если же вы собрались добавить скрипт в одну из папок, то, как я уже говорил, нужно чтобы его имя было без точек и у него были права на выполнение:

`sudo vi /etc/corn.daily/basckup`

`#!/bin/bash   ......`

смотрим лог cron. Иногда он находится в `/var/log/cron`, 
а иногда пишется в syslog.

`grep CRON /var/log/syslog`

`sudo run-parts /etc/cron.daily/`

Дальше вы увидите весь вывод, включая вывод скрипта и сможете быстро понять в чем проблема.

  
Можно еще отправлять результат работы скрипта на почту указав команду MAILTO=user@email.ru

`tail /var/log/syslog` 
-получаем "хвост", последние 10 строк лог-файла

```
@hourly rsync -avzhe ssh vlapa@178.20.46.157:/home/vlapa/git/ /home/vlapa/1Tb_r1-a/Backup/_git/

@hourly rsync -avzh /home/vlapa/300Gb/yaDisk/All-reports /home/vlapa/1Tb_r1-a/Backup/  

@hourly rsync -avzh /home/vlapa/300Gb/yaDisk/Family /home/vlapa/1Tb_r1-a/Backup/

#@hourly rsync -avzh /home/vlapa/300Gb/yaDisk/_MY /home/vlapa/1Tb_r1-a/Backup/
```
⚙️ **Синтаксис**

*`* * * * * команда

Каждая звезда отвечает за время:

•  минуты
•  часы
•  дата
•  месяц
•  день недели

`30 2 * * * /home/user/backup.sh

Эта задача будет выполняться каждый день в 2:30.

👀 **Просмотр и редактирование**

• Чтобы редактировать cron-задачи, используйте:
`crontab -e

• Чтобы увидеть текущие:
`crontab -l

✍️ **Логирование cron-задач**
Важно отслеживать выполнение задач. Для этого можно записывать вывод задач в файл:

`* * * * * /path/to/script.sh >> /var/log/cron.log 2>&1

2>&1 — это перенаправление стандартного потока ошибок (stderr) в тот же файл, что и стандартный вывод. То есть любые ошибки скрипта будут также записываться в файл cron.log