Crontab
Postgresql’in gömülü gelen bir zamanlayıcısı (scheduler) bulunmadığı için bu ihtiyaç
pg_cron ve pgagent eklentileri (extension) ile ya da işletim sistemi seviyesinde
crontab ile çözülmektedir.

Çalıştırılacak SQL, fonksiyon prosedur vb. kodlar linux bash script içerisine yazılıp linux
işletim sisteminin gömülü zamanlayıcısı crontab ile zamanlanabilir.
psql -d testdb # Eğer önceden oluşturuldu ise drop table test ; CREATE TABLE test (id serial, isim text);
Örnek Script
vim /var/lib/postgresql/scripts/instest.sh
#!/bin/bash PSQL="/usr/lib/postgresql/14/bin/psql" PORT=5432 HOST="localhost" USER="postgres" DB="testdb" $PSQL -d $DB -U $USER -p $PORT <<EOF INSERT INTO test (isim) SELECT 'Mehmed' FROM generate_series(1, 5); \q EOF exit
ile çalıştırma hakkı verilmelidir.chmod +x /var/lib/postgresql/scripts/instest.sh
Not: insert işleminin hatalı sonuçlanması durumunda vty@dataera ekibine mail ile
uyarı gönderilmesi için aşağıdaki satırlar eklenebilir.
if [ $? -eq 0 ]; then echo ‘işlem başarılı’ else echo "Müşteri-Sunucu-Bilgisi" | mailx -s "Veri girişi hata aldı" -a "From: UYARICI@dataera.com.tr" vty@dataera.com.tr exit fi
Not: Micosoft sistemlerden linux/unix sistemlere kopyalanan scriptler anlamsız hatalar
verip çalışmayabilir. Bu durumda dos2unix yazılımı ile scriptinizi konvert etmeniz
gerekebilir.
sudo apt install dos2unix
dos2unix instest.sh
# postgres kullanıcısı ile aşağıdaki satır eklenir kayıt edilir ve çıkılır. postgres@srv1:~$ crontab -e 6 22 * * * /var/lib/postgresql/scripts/instest.sh 2> /var/lib/ postgresql/scripts/instest.log crontab -l # crontab’ı listeleyebilirsiniz.
Her gün akşam 22:06’da instest.sh scriptini çalıştırır hata alırsa (2>) hatayıinstest.log dosyasına yazar. Crontab’taki satırı manuel tetikleyerek test edilmesi
önerilir.
Crontab ile ilgili detaylar için kullandığınız işletim sisteminin dokümanlarını
inceleyebilirsiniz.
Not: Eğer vim uygulaması ile açmıyorsa, aşağıdaki komutlar çalıştırılabilir.export EDITOR=vim
