Davvero, davvero non vuoi farlo. Postgres non è un sistema operativo, è un server di database. Anche se il database supporta l'esecuzione di attività pianificate, non è davvero una buona idea abusare del database in questo modo.
Se la tua preoccupazione è che non vuoi impostare password e cose, è facile da risolvere. Configurare una connessione socket Unix locale utilizzando invece l' autenticazione trust o ident , eseguire cronjob come tale utente.
Nella sua configurazione out of the box, di solito postgres imposta l'utente di sistema postgres
per eseguire il server db, e questo utente di sistema è solitamente già preconfigurato in modo che possa connettersi al server locale usando l'autenticazione di fiducia quando si connette tramite socket unix locale. È possibile eseguire il cronjob come utente di sistema Postgres, connettersi al socket locale e quindi cambiare ruolo se non si desidera che la procedura memorizzata venga eseguita con il privilegio di superutente.
Nella configurazione predefinita, puoi semplicemente fare questo:
$ sudo -u postgres crontab -e
Nell'editor, aggiungi alla voce crontab in questo modo:
0 0 * * * bash /path/to/run_stored_procedure.sh
e nel tuo file /path/to/run_stored_procedure.sh devi semplicemente usare psql per chiamare la procedura del tuo negozio
#!/usr/bin/env bash
psql my_db_name <<END
SET ROLE limited_user;
SELECT my_stored_proc();
SELECT 1 FROM my_stored_proc();
END