Сценарий оболочки Ubuntu для запуска нескольких серверов Postgres

Я новичок в Ubuntu, и мне нужно написать сценарий .sh, который запускает 2 сервера postgres. Я отключил требование pw для sudo в / etc / sudoers

вот мой скрипт, и он, вероятно, неверен. test.sh :

#!/bin/bash
sudo su postgres
postgres -D /usr/local/mydb1 -p <port no.> &
postgres -D /usr/local/mydb2/data -p <diff port no.> &

Результат, который я получаю после запуска сценария:

shafin@shafin-VirtualBox:~/Desktop$ ./test.sh
postgres@shafin-VirtualBox:/home/shafin/Desktop$ 

Похоже, выполняется только первая строка сценария.

может кто-нибудь помочь?

Спасибо, Шафин

0
задан 17 June 2021 в 20:44

2 ответа

Спасибо @waltinator и @steeldriver за ваши отзывы.

Я смог найти решение, используя оба ваших предложения. Вот мой обновленный сценарий на случай, если кто-то захочет сделать что-то подобное:

#!/bin/bash

sudo -u postgres /usr/lib/postgresql/12/bin//postgres -D /usr/local/mydb1 -p 8432 &
sudo -u postgres /usr/lib/postgresql/12/bin//postgres -D /usr/local/mydb2/data -p 6432 &
0
ответ дан 28 July 2021 в 11:27

Ваша команда sudo su postgres запускает новую оболочку под идентификатором пользователя « postgres ». Эта новая оболочка не читает из файла сценария, поэтому она никогда не видит остальную часть файла.

Лучший способ (который работает) - удалить команду sudo su postgres и поставить перед двумя оставшимися строками sudo -u postgres . Прочтите man sudo sudoers .

2
ответ дан 28 July 2021 в 11:27

Другие вопросы по тегам:

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