psql کد خروجی 2 در bashscript

پست 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 متفاوت است. دستور دوم همیشه فراخوانی می شود ، که این کار واقعی است.

چگونه می توان خطا را کم کرد؟ معنی واقعی خطا چیست؟ آیا می توانم از آن چشم پوشی کنم؟

1
задан 2 September 2019 в 11:18
1 ответ

Код выхода 2 psql можно игнорировать, если он не слишком частый, причиной может быть сеть или работоспособность базы данных. Чтобы узнать больше, вы можете добавить в сценарий шаги отладки, которые показывают сетевое соединение и работоспособность БД (сервер занят и загружен запросами) перед выполнением реальной работы.

1
ответ дан 3 December 2019 в 23:00

Теги

Похожие вопросы