Вы действительно, действительно не хотите этого делать. Postgres - это не операционная система, это сервер базы данных. Даже если база данных поддерживает выполнение запланированных задач, не стоит злоупотреблять этой базой данных.
Если вы обеспокоены тем, что не хотите устанавливать пароль и другие материалы, это легко решить. Вместо этого установите локальное соединение с сокетом Unix, используя доверительную или идентификационную аутентификацию , запустите ваш cronjob от имени этого пользователя.
В стандартной конфигурации postgres обычно настраивает системного пользователя postgres
для запуска сервера db, и этот системный пользователь обычно уже настроен заранее, поэтому он может подключаться к локальному серверу с помощью доверительной аутентификации при подключении через локальный сокет unix. Вы можете запустить свой cronjob от имени пользователя системы postgres, подключиться к локальному сокету и затем поменять роль, если не хотите, чтобы хранимая процедура выполнялась с привилегиями суперпользователя.
В настройках по умолчанию вы можете просто сделать это:
$ sudo -u postgres crontab -e
В редакторе добавьте в запись crontab примерно так:
0 0 * * * bash /path/to/run_stored_procedure.sh
и в вашем файле /path/to/run_stored_procedure.sh вы просто используете psql для вызова процедуры ваших магазинов
#!/usr/bin/env bash
psql my_db_name <<END
SET ROLE limited_user;
SELECT my_stored_proc();
SELECT 1 FROM my_stored_proc();
END