پست 9.6 Debian GNU / Linux 9
از اسکریپت bash به سادگی استفاده شده استفاده می کند که از طریق crontab کاربران فراخوانی می شود ، myid یک پارامتر عبور داده شده است:
#!/bin/bash
...
PGPASSFILE="/home/user/.pgpass"
PGCONNECT=" psql -U myuser -w -h 000.000.000.000 -d mydatabase -p 5432"
PGCOMMAND1="SELECT something, somemmore FROM schema.table WHERE id= ${myid}"
PGRESULT=`$PGCONNECT -A -F ";" -t -c "$PGCOMMAND1"`
RETCODE1=$?
...
PGCOMMAND2="SELECT schema.functionname(${myid});"
PGRESULT=`$PGCONNECT -A -F ";" -t -c "$PGCOMMAND2"`
RETCODE2=$?
if [ $RETCODE1 -eq 0 ] && [ $RETCODE2 -eq 0 ]; then
mailx -s sendme_asuccessemail
else
echo -e "ret1: $RETCODE1\n" >> $MAIL_FILE
echo -e "ret2: $RETCODE2\n" >> $MAIL_FILE
mailx -s sendme_errormailwith retcode1=2
fi
و بیشتر اوقات همه چیز خوب است (اسکریپت 60 بار در روز اجرا می شود تا زمان های مختلف ) یک بار در هفته یا کمتر ، در نتیجه انتخاب ، یک پیام خطا با وضعیت خروج psql 2 در RETCODE1 دریافت می کنم.
از صفحه man:
2 if the connection to the server went bad and the session was not
interactive
ممکن است اتفاق بیفتد ، این اسکریپت به نام usercrontab فراخوانی می شود ، که دوبار اجرا می شود یا بیشتر در همان زمان با myid متفاوت است. دستور دوم همیشه فراخوانی می شود ، که این کار واقعی است.
چگونه می توان خطا را کم کرد؟ معنی واقعی خطا چیست؟ آیا می توانم از آن چشم پوشی کنم؟
Код выхода 2 psql можно игнорировать, если он не слишком частый, причиной может быть сеть или работоспособность базы данных. Чтобы узнать больше, вы можете добавить в сценарий шаги отладки, которые показывают сетевое соединение и работоспособность БД (сервер занят и загружен запросами) перед выполнением реальной работы.