Skip to content

Commit 6646ac2

Browse files
cron
1 parent d3d4efd commit 6646ac2

File tree

3 files changed

+111
-1
lines changed

3 files changed

+111
-1
lines changed

LINUX.md

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,4 +132,29 @@
132132

133133
`chmod 777 /path/to/directory` изменение прав доступа к директории
134134

135-
`sudo find / -type d -name "<название каталога>"` вывести путь до искомого каталога
135+
`sudo find / -type d -name "<название каталога>"` вывести путь до искомого каталога
136+
137+
138+
### crontab
139+
140+
Cron - это утилита в Unix-подобных операционных системах, которая позволяет запускать задания по расписанию. С ее помощью можно автоматизировать выполнение задач на сервере в определенное время или с интервалами.
141+
142+
`crontab -e` редактировать файл cron
143+
144+
Задача добавляется в следующем формате:
145+
```
146+
* * * * * command
147+
- - - - -
148+
| | | | |
149+
| | | | ----- День недели (0 - 7) (Воскресенье это как 0 или 7)
150+
| | | ------- Месяц (1 - 12)
151+
| | --------- День месяца (1 - 31)
152+
| ----------- Час (0 - 23)
153+
------------- Минута (0 - 59)
154+
```
155+
156+
`crontab -l` список задач
157+
158+
`crontab -r` удалить все задачи
159+
160+
После каждого изменения нужно перезапускать cron `sudo service cron restart`.

databases/datafarm/df_ohlc.sql

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
-- \i /home/fueros/grok_postgresql/databases/datafarm/df_ohlc.sql
2+
3+
\connect postgres
4+
5+
DROP DATABASE IF EXISTS df_ohlc;
6+
CREATE DATABASE df_ohlc;
7+
8+
\connect df_ohlc
9+
10+
CREATE SCHEMA mexc;
11+
12+
CREATE EXTENSION http SCHEMA mexc;
13+
14+
15+
CREATE TABLE mexc.market_data
16+
(
17+
m_symbol VARCHAR(20) NOT NULL,
18+
m_time TIMESTAMPTZ NOT NULL,
19+
m_open NUMERIC NOT NULL,
20+
m_high NUMERIC NOT NULL,
21+
m_low NUMERIC NOT NULL,
22+
m_close NUMERIC NOT NULL
23+
);
24+
25+
26+
DO $$
27+
BEGIN
28+
SELECT content FROM mexc.http_get('https://contract.mexc.com/v3/time');
29+
END $$;

dev/DEV.md

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,6 +448,62 @@ FROM http_get('https://api.mexc.com/api/v3/time');
448448
```
449449

450450

451+
### pg_cron
452+
453+
Расширение `pg_cron` позволяет планировать выполнение SQL запросов в определенное время или с определенной периодичностью.
454+
455+
[Репозиторий разработчика расширения](https://github.com/citusdata/pg_cron)
456+
457+
Порядок установки:
458+
459+
`https://github.com/citusdata/pg_cron`
460+
461+
`cd pg_cron`
462+
463+
`export PATH=/usr/pgsql-16/bin:$PATH`
464+
465+
`make && sudo PATH=$PATH make install`
466+
467+
В файл postgresql.conf:
468+
* назначить параметр shared_preload_libraries = 'pg_cron'
469+
* добавить строку `cron.database_name = 'postgres' (обозначить ту базу данных, где будет работать pg_cron)`
470+
471+
<em>После корректировки файла postgresql.conf необходимо перезагрузить сервер `sudo service postgresql restart`.</em>
472+
473+
<b>pg_cron</b> может быть установлен только в одну базу данных в кластере. Для запуска задания в нескольких базах данных подойдет `cron.schedule_in_database()`.
474+
475+
```sql
476+
CREATE EXTENSION pg_cron;
477+
```
478+
479+
Для работы pg_cron может потребоваться включить <b>trust</b> аутентификацию для соединений, поступающих с localhost в файле `pg_hba.conf`.
480+
481+
482+
Просмотреть задания:
483+
```sql
484+
SELECT * FROM cron.job;
485+
```
486+
487+
```sql
488+
SELECT cron.schedule('task_name', 'cron_expression', 'SQL_query');
489+
```
490+
'task_name' - название задания, 'cron_expression' - выражение для расписания выполнения, 'SQL_query' - SQL запрос, который нужно выполнить.
491+
492+
Звездочки в выражении cron (* * * * *) означают следующее:
493+
* Первая звездочка: минуты (от 0 до 59)
494+
* Вторая звездочка: часы (от 0 до 23)
495+
* Третья звездочка: дни месяца (от 1 до 31)
496+
* Четвертая звездочка: месяцы (от 1 до 12)
497+
* Пятая звездочка: дни недели (от 0 до 7, где 0 и 7 - воскресенье)
498+
Таким образом, если установить выражение cron на * * * * *, то задание будет выполняться каждую минуту каждого часа каждого дня каждого месяца каждой недели.
499+
500+
501+
502+
503+
504+
505+
506+
451507
### Функции PostgreSQL
452508

453509
#### convert_from()

0 commit comments

Comments
 (0)