Puncte:0

Script shell Ubuntu pentru pornirea mai multor servere Postgres

drapel ru

Sunt destul de nou în Ubuntu și mă leg să scriu un script .sh care pornește 2 servere postgres. Am dezactivat cerința pw pentru sudo în /etc/sudoers

aici este scenariul meu de până acum și probabil că este incorect. test.sh:

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

Rezultatul pe care îl obțin după rularea scriptului:

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

Se pare că execută doar prima linie a scriptului.

poate cineva ajuta va rog?

Mulțumiri, Shafin

Puncte:2
drapel it

Ta sudo su postgres comanda pornește un nou shell, sub „postgres" userid. Acest nou shell nu citește din fișierul script, așa că nu vede niciodată restul fișierului.

O modalitate mai bună (care funcționează) este să eliminați sudo su postgres comandă și prefață cele două rânduri rămase cu sudo -u postgres. Citit man sudo sudoers.

Shafin M avatar
drapel ru
Așa că am încercat această linie: `sudo -u postgres -D /usr/local/capdb -p 8432 &` iar raspunsul pe care il primesc este acesta: `utilizare: sudo -h | -K | -k | -V utilizare: sudo -v [-AknS] [-g grup] [-h gazdă] [-p prompt] [-u utilizator] utilizare: sudo -l [-AknS] [-g grup] [-h gazdă] [-p prompt] [-U utilizator] [-u utilizator] [comanda] utilizare: sudo [-AbEHknPS] [-r rol] [-t tip] [-C num] [-g grup] [-h gazdă] [-p prompt] [-T timeout] [-u utilizator] [VAR=valoare] [-i|-s] [] utilizare: sudo -e [-AknS] [-r rol] [-t tip] [-C num] [-g grup] [-h gazdă] [-p prompt] [-T timeout] [-u user] fișier ...`
Shafin M avatar
drapel ru
Se pare că caută mai multe argumente? Nu sunt sigur ce altceva ar trebui să trec aici
drapel hr
@ShafinM `sudo -u postgres postgres -D /usr/local/capdb -p 8432 &` - primul `postgres` este argumentul utilizatorului pentru opțiunea `sudo -u`; al doilea `postgres` este comanda
waltinator avatar
drapel it
Comentariile sunt concepute pentru ca SUA să vă pună întrebări despre întrebarea dvs. Ar trebui să [Editați] întrebarea pentru a adăuga informații. Actualizându-vă Întrebarea și folosind butoanele de formatare, puneți toate informațiile la dispoziția noilor cititori.Oamenii nu ar trebui să citească o serie lungă de comentarii pentru a înțelege întreaga poveste.
Shafin M avatar
drapel ru
@steeldriver a încercat deja acea comandă, bash răspunde cu o comandă necunoscută „postgres” . Știu sigur că Postgres este configurat corect pe această mașină, deoarece pot porni serverele unul câte unul
drapel hr
@ShafinM unde se află totuși? amintiți-vă că `sudo` folosește propriul său `secure_path` - care poate fi diferit de `PATH` al shell-ului dvs. interactiv. Dacă aveți îndoieli, utilizați calea absolută ex. `sudo -u postgres /path/to/postgres `
Puncte:0
drapel ru

Mulțumesc @waltinator și @steeldriver pentru feedback-ul dumneavoastră.

Am reușit să găsesc o soluție folosind ambele sugestii. Iată scriptul meu actualizat în cazul în care cineva dorește să facă ceva similar:

#!/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 &

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.