Score:0

เชลล์สคริปต์ของ Ubuntu สำหรับการเริ่มต้นเซิร์ฟเวอร์ Postgres หลายเครื่อง

ธง ru

ฉันค่อนข้างใหม่สำหรับ Ubuntu และฉันกำลังจะเขียนสคริปต์ .sh ที่เริ่มต้นเซิร์ฟเวอร์ postgres 2 เครื่อง ฉันปิดใช้งานข้อกำหนด pw สำหรับ sudo ใน /etc/sudoers

นี่คือสคริปต์ของฉันจนถึงตอนนี้และอาจไม่ถูกต้อง ทดสอบ.sh:

#!/bin/bash
sudo su postgres
postgres -D /usr/local/mydb1 -p <หมายเลขพอร์ต> &
postgres -D /usr/local/mydb2/data -p <หมายเลขพอร์ตต่างกัน> &

ผลลัพธ์ที่ฉันได้รับหลังจากเรียกใช้สคริปต์:

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

ดูเหมือนว่าจะเรียกใช้สคริปต์บรรทัดแรกเท่านั้น

ใครสามารถช่วยได้บ้าง

ขอบคุณ, ชาฟิน

Score:2
ธง it

ของคุณ sudo su postgres คำสั่งเริ่มเชลล์ใหม่ภายใต้ "โพสต์เกรส" userid เชลล์ใหม่นี้ไม่อ่านจากไฟล์สคริปต์ ดังนั้นจึงไม่เห็นส่วนที่เหลือของไฟล์

วิธีที่ดีกว่า (ได้ผล) คือการลบไฟล์ sudo su postgres command และนำหน้าอีกสองบรรทัดที่เหลือด้วย sudo -u postgres. อ่าน ผู้ชาย sudo sudoers.

Shafin M avatar
ru flag
ดังนั้นฉันจึงลองบรรทัดนี้: `sudo -u postgres -D /usr/local/capdb -p 8432 &` และคำตอบที่ฉันได้รับคือ: `การใช้งาน: sudo -h | -K | -k | -V การใช้งาน: sudo -v [-AknS] [-g group] [-h host] [-p prompt] [-u user] การใช้งาน: sudo -l [-AknS] [-g group] [-h host] [-p prompt] [-U user] [-u user] [สั่งการ] การใช้งาน: sudo [-AbEHknPS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p พรอมต์] [-T หมดเวลา] [-u ผู้ใช้] [VAR=ค่า] [-i|-s] [] การใช้งาน: sudo -e [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p พรอมต์] [-T หมดเวลา] [-u ผู้ใช้] ไฟล์ ...`
Shafin M avatar
ru flag
ดูเหมือนว่าจะหาข้อโต้แย้งเพิ่มเติมหรือไม่? ไม่แน่ใจว่าฉันควรจะผ่านอะไรอีกที่นี่
hr flag
@ShafinM `sudo -u postgres postgres -D /usr/local/capdb -p 8432 &` - `postgres` แรกคืออาร์กิวเมนต์ผู้ใช้สำหรับตัวเลือก `sudo -u`; `postgres` ที่สองคือคำสั่ง
waltinator avatar
it flag
ความคิดเห็นได้รับการออกแบบมาเพื่อให้สหรัฐอเมริกาถามคำถามเกี่ยวกับคำถามของคุณ คุณควร [แก้ไข] คำถามของคุณเพื่อเพิ่มข้อมูล การอัปเดตคำถามของคุณ และการใช้ปุ่มการจัดรูปแบบ จะทำให้ผู้อ่านใหม่สามารถเข้าถึงข้อมูลทั้งหมดได้ผู้คนไม่ควรต้องอ่านความคิดเห็นชุดยาวเพื่อรับเรื่องราวทั้งหมด
Shafin M avatar
ru flag
@steeldriver ลองใช้คำสั่งนั้นแล้ว bash ตอบกลับด้วยคำสั่งที่ไม่รู้จัก 'postgres' ฉันรู้แน่นอนว่า Postgres ได้รับการตั้งค่าอย่างถูกต้องบนเครื่องนี้ เพราะฉันสามารถเริ่มเซิร์ฟเวอร์ทีละเครื่องได้
hr flag
@ShafinM ตั้งอยู่ที่ไหน จำไว้ว่า `sudo` ใช้ `secure_path` ของมันเอง ซึ่งอาจแตกต่างจาก `PATH` ของเชลล์โต้ตอบของคุณ หากมีข้อสงสัย ให้ใช้เส้นทางสัมบูรณ์ เช่น `sudo -u postgres /path/to/postgres `
Score:0
ธง ru

ขอบคุณ @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 &

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา