Realmente, realmente no quieres hacer esto. Postgres no es un sistema operativo, es un servidor de base de datos. Incluso si la base de datos admite la ejecución de tareas programadas, no es realmente una buena idea abusar de la base de datos de esa manera.
Si su preocupación es que no desea configurar la contraseña y otras cosas, eso es fácil de resolver. Configure una conexión de socket Unix local utilizando la autenticación de confianza o identidad , ejecute su trabajo cron como ese usuario.
En su configuración lista postgres
para usar , generalmente postgres configura al usuario del sistema para ejecutar el servidor db, y este usuario del sistema generalmente ya está preconfigurado para que pueda conectarse al servidor local mediante autenticación de confianza cuando se conecta a través de un socket local de Unix. Puede ejecutar su cronjob como usuario del sistema postgres, conectarse al socket local y luego cambiar de función si no desea que su procedimiento almacenado se ejecute con privilegio de superusuario.
En la configuración predeterminada, puede hacer esto:
$ sudo -u postgres crontab -e
En el editor, agregue a la entrada crontab así:
0 0 * * * bash /path/to/run_stored_procedure.sh
y en su /path/to/run_stored_procedure.sh simplemente use psql para llamar al procedimiento de sus tiendas
#!/usr/bin/env bash
psql my_db_name <<END
SET ROLE limited_user;
SELECT my_stored_proc();
SELECT 1 FROM my_stored_proc();
END