Как `execve ()` вызывает специальную процедуру запуска и функцию main ()?

Вот простой пример того, что я имел в виду в своем комментарии.

Цикл for (с повторением до успеха для каждой команды psql, выполняемой в фоновой под-оболочке). Нет необходимости в массиве сгенерированных подстановочных файлов-дескрипторов процессов.

cred='user=dbadmin password=SECRET'
domain='example.com'

tf=$(mktemp)
cat > "$tf"

for z in db1 db2 db3 xdb1 ; do
  ( while ! psql -X "host=$z.$domain dbname=$z $cred" < "$tf" ; do : ; done) &
done > /dev/null

# don't delete the tempfile until all jobs have completed
wait

rm -f "$tf"

При желании используйте sleep x вместо : в цикле while , чтобы иметь небольшую задержку между каждой повторной попыткой.

Более умная версия могла бы делать больше внутри цикла while, проверять статус выхода и / или grep stderr, чтобы выяснить причину любого сбоя и отреагировать соответствующим образом.

2
02.02.2019, 21:07
0 ответов

Теги

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