Naprawdę, naprawdę nie chcesz tego robić. Postgres nie jest systemem operacyjnym, to serwer bazy danych. Nawet jeśli baza danych obsługuje uruchamianie zaplanowanych zadań, nie jest dobrym pomysłem nadużywanie takiej bazy danych.
Jeśli martwisz się, że nie chcesz konfigurować hasła i innych elementów, łatwo to rozwiązać. Skonfiguruj lokalne połączenie z gniazdem uniksowym, używając zamiast tego uwierzytelniania zaufania lub tożsamości , uruchom cronjob jako ten użytkownik.
W konfiguracji „po wyjęciu z pudełka” zazwyczaj postgres konfiguruje użytkownika systemu postgres
do uruchamiania serwera db, a ten użytkownik systemu jest zwykle już wstępnie skonfigurowany, aby mógł połączyć się z serwerem lokalnym za pomocą uwierzytelnienia zaufania podczas łączenia przez lokalne gniazdo unix. Możesz uruchomić cronjob jako użytkownik systemu postgres, połączyć się z lokalnym gniazdem, a następnie zmienić rolę, jeśli nie chcesz, aby procedura składowana działała z uprawnieniami administratora.
W domyślnej konfiguracji możesz po prostu to zrobić:
$ sudo -u postgres crontab -e
W edytorze dodaj do wpisu crontab w następujący sposób:
0 0 * * * bash /path/to/run_stored_procedure.sh
a w pliku /path/to/run_stored_procedure.sh wystarczy użyć psql, aby wywołać procedurę sklepów
#!/usr/bin/env bash
psql my_db_name <<END
SET ROLE limited_user;
SELECT my_stored_proc();
SELECT 1 FROM my_stored_proc();
END