당신은 정말로, 이것을하고 싶지 않습니다. Postgres는 운영 체제가 아니며 데이터베이스 서버입니다. 데이터베이스가 예약 된 작업 실행을 지원하더라도 실제로 데이터베이스를 남용하는 것은 좋은 생각이 아닙니다.
우려 사항이 있다면 비밀번호와 물건을 설정하지 않으려는 경우 쉽게 해결할 수 있습니다. 대신 신뢰 또는 ID 인증을 사용하여 로컬 Unix 소켓 연결을 설정하고 해당 사용자로 cronjob을 실행하십시오.
기본 구성에서 postgres는 일반적으로 시스템 사용자 postgres가 db 서버를 실행하도록 설정 하고이 시스템 사용자는 일반적으로 이미 사전 구성되어 있으므로 로컬 유닉스 소켓을 통해 연결할 때 트러스트 인증을 사용하여 로컬 서버에 연결할 수 있습니다. 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