당신은 정말로, 이것을하고 싶지 않습니다. 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