Anda benar-benar tidak ingin melakukan ini. Postgres bukan sistem operasi, ini adalah server database. Bahkan jika database mendukung menjalankan tugas yang dijadwalkan, itu bukan ide yang baik untuk menyalahgunakan database seperti itu.
Jika kekhawatiran Anda adalah Anda tidak ingin mengatur kata sandi dan barang, itu mudah diselesaikan. Siapkan koneksi soket Unix lokal menggunakan kepercayaan atau otentikasi identitas , jalankan cronjob Anda sebagai pengguna itu.
Dalam konfigurasi out-of-the-nya, biasanya postgres mengatur pengguna sistem postgres
untuk menjalankan server db, dan pengguna sistem ini biasanya sudah dikonfigurasikan sebelumnya sehingga dapat terhubung ke server lokal menggunakan otentikasi kepercayaan saat menghubungkan melalui soket unix lokal. Anda dapat menjalankan cronjob sebagai pengguna sistem postgres, menyambungkan ke soket lokal, dan kemudian beralih peran jika Anda tidak ingin prosedur tersimpan Anda dijalankan dengan hak superuser.
Dalam pengaturan default, Anda bisa melakukan ini:
$ sudo -u postgres crontab -e
Di editor, tambahkan ke entri crontab seperti:
0 0 * * * bash /path/to/run_stored_procedure.sh
dan dalam file /path/to/run_stored_procedure.sh Anda cukup menggunakan psql untuk memanggil prosedur store Anda
#!/usr/bin/env bash
psql my_db_name <<END
SET ROLE limited_user;
SELECT my_stored_proc();
SELECT 1 FROM my_stored_proc();
END