Я новичок в 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$
Похоже, выполняется только первая строка сценария.
может кто-нибудь помочь?
Спасибо, Шафин
Спасибо @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 &
Ваша команда sudo su postgres
запускает новую оболочку под идентификатором пользователя « postgres
». Эта новая оболочка не читает из файла сценария, поэтому она никогда не видит остальную часть файла.
Лучший способ (который работает) - удалить команду sudo su postgres
и поставить перед двумя оставшимися строками sudo -u postgres
. Прочтите man sudo sudoers
.